Problem
Strong Map/Set acceleration currently maps one deterministic content hash to one ordered-entry position.
hashKeyreturnsnullfor ordinary objects and Symbols because their pointers can move, so everyget/has/set/deletewith those valid key kinds performs an ordered O(n) scan.- One content-hash collision permanently clears and disables the entire collection index.
- Primitive hashes use a process-predictable zero seed, allowing adversarial inputs to target one deterministic hash function.
- The index contains only hash values, so it cannot distinguish colliding keys without abandoning acceleration.
This is both a representative collections performance defect and an algorithmic-complexity boundary.
Required outcome
- Index every ECMAScript
Map/Setkey kind, including moving-GC objects and Symbols, using the existing relocation-stable cell identity where applicable and stable arena identity otherwise. - Give each strong collection an unpredictable owned hash seed; insertion order and all observable semantics remain independent of bucket order.
- Represent collisions as exact-equality bucket chains (or an equivalent collision-safe structure). A collision may slow only its own bucket and must never disable unrelated keys.
- Keep the index free of managed pointers so moving collection does not require tracing or relocation.
- Preserve
SameValueZero,-0canonicalization, all-NaN equality, BigInt value equality, string byte equality, insertion order, tombstones, mutation during iteration, and subclass/user-hook behavior. - Allocation failure must fall back to correct ordered lookup without publishing a partially authoritative index. Clear, delete, structured clone, teardown, and repeated insertion/deletion must remain bounded and leak-free.
- Add deterministic structural growth coverage plus moving-GC, collision, OOM/fault, no-GIL, and TSan coverage. Publish exact-parent representative collection evidence before claiming completion.
Relationships
Advances the bounded-memory/index ownership work in #480 and the representative collections row in #460.