Fix Object.isFrozen and Object.isSealed integrity checks#412
Conversation
- Implement structural TestIntegrityLevel checks for objects - Update built-in and enum tests for frozen/sealed semantics
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
📝 WalkthroughWalkthroughThe changes implement ES2026-compliant Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related issues
Possibly related PRs
Suggested labels
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Comment |
Suite Timing
Measured on ubuntu-latest x64. |
Benchmark Results386 benchmarks Interpreted: 🟢 294 improved · 🔴 34 regressed · 58 unchanged · avg +5.1% arraybuffer.js — Interp: 🟢 12, 2 unch. · avg +6.7% · Bytecode: 🟢 1, 🔴 11, 2 unch. · avg -6.2%
arrays.js — Interp: 🟢 18, 1 unch. · avg +9.4% · Bytecode: 🔴 17, 2 unch. · avg -8.4%
async-await.js — Interp: 🟢 5, 1 unch. · avg +8.3% · Bytecode: 🔴 5, 1 unch. · avg -8.9%
base64.js — Interp: 🟢 9, 1 unch. · avg +8.5% · Bytecode: 🔴 9, 1 unch. · avg -11.1%
classes.js — Interp: 🟢 24, 7 unch. · avg +5.1% · Bytecode: 🟢 1, 🔴 12, 18 unch. · avg -3.6%
closures.js — Interp: 🟢 11 · avg +8.2% · Bytecode: 🔴 10, 1 unch. · avg -8.0%
collections.js — Interp: 🟢 12 · avg +8.7% · Bytecode: 🔴 12 · avg -8.6%
csv.js — Interp: 🟢 13 · avg +8.6% · Bytecode: 🔴 13 · avg -7.8%
destructuring.js — Interp: 🟢 21, 1 unch. · avg +7.5% · Bytecode: 🔴 18, 4 unch. · avg -8.2%
fibonacci.js — Interp: 🟢 8 · avg +7.8% · Bytecode: 🔴 8 · avg -11.0%
float16array.js — Interp: 🟢 20, 🔴 5, 7 unch. · avg +2.6% · Bytecode: 🟢 7, 🔴 21, 4 unch. · avg -1.7%
for-of.js — Interp: 🟢 5, 2 unch. · avg +2.6% · Bytecode: 🔴 7 · avg -8.9%
helpers/bench-module.js — Interp: 0 · Bytecode: 0
iterators.js — Interp: 🟢 34, 🔴 1, 7 unch. · avg +5.3% · Bytecode: 🟢 5, 🔴 21, 16 unch. · avg -2.0%
json.js — Interp: 🟢 20 · avg +11.5% · Bytecode: 🔴 20 · avg -9.4%
jsx.jsx — Interp: 🟢 19, 2 unch. · avg +5.0% · Bytecode: 🔴 21 · avg -9.6%
modules.js — Interp: 🟢 7, 2 unch. · avg +7.0% · Bytecode: 🔴 9 · avg -14.4%
numbers.js — Interp: 🟢 10, 1 unch. · avg +7.1% · Bytecode: 🔴 11 · avg -10.2%
objects.js — Interp: 🟢 4, 3 unch. · avg +3.9% · Bytecode: 🔴 7 · avg -8.0%
promises.js — Interp: 🟢 4, 8 unch. · avg +2.0% · Bytecode: 🔴 12 · avg -9.7%
regexp.js — Interp: 🟢 10, 1 unch. · avg +7.5% · Bytecode: 🔴 9, 2 unch. · avg -6.0%
strings.js — Interp: 🟢 2, 🔴 9, 8 unch. · avg -12.2% · Bytecode: 🔴 15, 4 unch. · avg -6.7%
tsv.js — Interp: 🟢 9 · avg +13.2% · Bytecode: 🟢 1, 🔴 8 · avg -5.9%
typed-arrays.js — Interp: 🟢 4, 🔴 15, 3 unch. · avg -2.3% · Bytecode: 🟢 8, 🔴 11, 3 unch. · avg -0.7%
uint8array-encoding.js — Interp: 🟢 13, 🔴 4, 1 unch. · avg +5.8% · Bytecode: 🟢 4, 🔴 11, 3 unch. · avg -7.0%
Measured on ubuntu-latest x64. Benchmark ranges compare cached main-branch min/max ops/sec with the PR run; overlapping ranges are treated as unchanged noise. Percentage deltas are secondary context. |
Summary
Object.isFrozenandObject.isSealedto use integrity-level checks instead of directFrozen/Sealedflags.TestIntegrityFrozenandTestIntegritySealedlogic for ordinary and symbol-keyed properties.Fixes #404