Skip to content

VM: expose exact active legacy arguments for compiled ordinary functions #802

Description

@chrisbbreuer

Parent: #465. Found while validating #801; coordinate activation ownership with #787.

Baseline e4f76af fails this positive paired VM witness even without GC:

function legacyRead(value) { return legacyRead.arguments[0]; }
assert.sameValue(legacyRead(37), 37);

The tree-walker passes; required bytecode throws TypeError: null is not an object. The ordinary function is admitted, but VM calls do not publish the legacy call-frame view used by Interpreter.getProperty. This is separate from relocation of an already published tree-walker legacy frame.

Acceptance:

  • Preserve the engine's legacy caller/arguments behavior in admitted ordinary compiled calls, including inline, nested-driver, recursive and tail transitions, without routing them to the tree-walker.
  • Keep argument mapping/identity, strict and newer-function poison restrictions, and cross-realm behavior exact.
  • Publish and retire introspection views under the existing activation ownership protocol, failure-atomically and with relocatable function/environment/argument slots; coordinate with GC: publish provisional VM activation roots failure-atomically #787 rather than racing that lifecycle work.
  • Add no-GC and actual moving-GC differential controls, OOM, no-GIL/TSan and relevant conformance.

The failing witness and transcript are retained locally under /Users/chris/.cache/zig-js-801.9pDs7h/legacy-arguments.js and before-legacy-arguments.log. This issue remains open independently of the scoped coercion/assignment root work.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions