Parent: #62
Evidence
Current main at f4602d86 still trails system JSC in the fair direct object_churn row. A fresh five-sample same-session check measured medians of about 197.000 ms for zig-js and 117.836 ms for JSC, with checksum 1030552128 in every sample (about a 1.67x remaining elapsed gap).
A fresh symbolized ReleaseFast profile shows the guarded fixed-shape allocation loop repeatedly entering Interpreter.newObject; a visible portion of that path is objectProto, which walks to the realm root and locks its binding table even though %Object.prototype% is an immutable intrinsic identity already cached by the realm. The quick batch validates one root shape and can resolve that intrinsic once before allocating its checkpoint-bounded run.
Scope
- expose a narrow intrinsic-prototype resolver for VM allocation tiers;
- resolve
%Object.prototype%once per guarded allocation batch rather than once per fresh object; - allocate/default-initialize every object through the normal GC seam and assign the same intrinsic prototype;
- preserve realm identity, bootstrap/null-prototype behavior, OOM recovery/state publication, tracing, checkpoints, and all existing quick-loop guards/fallbacks.
Acceptance criteria
- focused tests prove quick and generic execution retain identical values and exact VM step counts across realms;
- OOM and fallback behavior remain covered;
- exact-parent alternating
object_churnA/B shows a repeatable win with checksum1030552128; - retain only if the signal justifies the added API seam;
- batched full validation and commits reference this issue.