Parent: #498
Related: #1054 / 10bb4e3
Indexed [[Get]] treats collection backing elements as public numbered properties. The generic walker has the same defect in tree mode; #1054's indexed snapshot also inherited it. A separate mapped-arguments prototype divergence was introduced by the snapshot.
Executed before-binary probe (Node, forced tree, required bytecode):
new Map([["key", 7]])[0] === undefined: true / false / false.- Array with that Map as prototype, index 0 absent: true / false / false.
new Set([7])[0] === undefined: true / false / false.- Array with that Set as prototype, index 0 absent: true / false / false.
- Array inheriting from mapped arguments after updating parameter 0 from 1 to 9: true / true / false.
Collection elements are internal state, not indexed properties. Mapped arguments must read their live parameter cells before dense storage. The repair must cover both execution paths.
Acceptance:
- Remove non-Array backing-storage exposure from generic [[Get]] and indexed snapshots; retain ordinary named data on collection prototypes.
- Preserve live mapped-arguments reads through the canonical exotic path.
- Pin Map/Set prototypes, actual own numbered properties, real Array prototypes, and mapped arguments against Node in isolated/shared modes.
- Normal/unsuppressed TSan tests and targeted before/after Test262 checks pass.