Parents: #465, #498 Related: #555
Problem
The parser already records exact uses_arguments ownership across ordinary functions and nested arrows, and the runtime already constructs spec-shaped strict arguments exotic objects. Plain-function admission nevertheless rejects every arguments-using function before compiler admission, while Compiler.emitLoad rejects the identifier in every frame scope. Strict ordinary functions therefore remain on the tree walker despite needing no mapped parameter aliasing.
Scope
- Give strict non-arrow function chunks one explicit frame slot for their own unmapped arguments object when the parser marks it observable.
- Materialize that object during activation setup with exact length, indexed values, iterator, poison-pill callee, realm prototype, and moving-GC roots.
- Let nested arrows resolve the owning ordinary function slot and let nested strict ordinary functions shadow it with their own object.
- Preserve parameter-first frame layout, debugger local names, recursion, constructors, methods, tail calls, activation recycling, side exits, and JIT fail-closed behavior.
- Keep direct eval and sloppy mapped arguments behind their existing exact barriers until frame-visible dynamic environments and parameter aliasing are implemented.
No-workaround rules
- No Array substitute, copied plain object, eager object for functions that cannot observe arguments, disabled mapping, lost poison pill, environment-name fallback, source rewriting, or tree-walker callback from bytecode.
- No stacks, queues, jobs, Promise, Worker, or Map/Set iterator changes.
Acceptance
- Compiler tests prove a dedicated local slot and native load for strict function, method, constructor, nested-arrow, and nested-owner shapes.
- Tree-walker and required-bytecode differentials cover indexing, length, iteration, callee poisoning, mutation isolation, nested ownership, recursion,
this, and RHS/throw identity. - Moving-GC and focused TSan coverage pass with no leaks or races.
- Full units and exact relevant Test262 arguments/function subtrees have nonzero parent to candidate accounting with zero regressions.
- Commit, issue, and parent roadmaps carry exact links and measured evidence.