Skip to content

Array: retain intrinsic prototypes and use the active AggregateError realm #824

Description

@chrisbbreuer

Parent #465; related #823. Reproduced on pushed e24c4fa, independently of the current Error-intrinsic candidate. Two local forced-tier witnesses fail in the tree walker: replacing globalThis.Array changes the prototype of an array literal; Reflect.construct(AggregateError, [[]], a foreign NewTarget) creates errors with the foreign NewTarget Array prototype instead of the active AggregateError constructor realm. Node 24.18.0 passes both exact witnesses. These are not inferred from an instanceof name heuristic. The existing arrayProto and functionRealmIntrinsicProto Array paths consult public mutable bindings. Acceptance: retain private realm-owned Array identity with tracing/relocation and existing synchronization; use the active constructor realm for CreateArrayFromList while preserving GetPrototypeFromConstructor for the outer AggregateError instance; cover replacement/deletion/shadowing, cross-realm newTarget, callbacks and moving GC in both tiers. Do not copy a public global into a late cache or special-case source strings. Separate from native job/queue lifecycle 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