Parent: #465. Related: #803, #806. Found while reproducing the remaining computed-property naming failures after #813.
At main 209201a, this returns false in both an ordinary IIFE and generator entry; Node returns true:
(function () {
var key = Symbol('C');
var object = { [key]: class { static seen = this.name; } };
return object[key].name === '[C]' && object[key].seen === '[C]';
})()NamedEvaluation must supply the class's inferred name before static field/block effects observe it. Naming the returned constructor after class evaluation cannot establish that ordering. Preserve classes with their own static name method/field and explicit class self-bindings rather than overwriting them.
Acceptance:
- Pass the evaluated property key/name through exact class NamedEvaluation before static initialization in tree-walker, VM and native entry paths, with Symbol absent/empty/described names and once-only key coercion.
- Cover static fields/blocks, explicit class names, own static name definitions, heritage/computed-name ordering, TDZ, escape and abrupt completions.
- Verify actual moving-GC ownership, allocation-failure restoration, no-GIL/TSan and nonzero paired conformance; report before/after gains independently from object-method metadata fixes.
Do not patch the name after observable static effects, rewrite user source, disable GC, or count fallback as bytecode completion. Existing native activation/stack/queue/job/Promise/Worker lifecycle is outside this semantic change.
Exact baseline runner and 34 Node/current-main entry probes are retained at /Users/chris/.cache/zig-js-vm-naming.7Wj8Ri. The class-static-name probe is one logical case / two entry forms; its own-static-name control already passes. Broader forced-tier coverage remains to be added before claiming completion.