Parent: #465. Related: #814 and the remaining #806 class witnesses. Reproduced independently on main 6bb4b77 with the retained ReleaseSafe baseline runner.
A generator executing var log="",key={toString(){log+="a";return "a";}}; class C{[key](){}[(log+="b","b")](){}} return log; returns ba; Node 24.18.0 and system JSC return ab. A native forced-tree/required-bytecode witness passes the tree walk and fails required bytecode. Raw evidence: /Users/chris/.cache/zig-js-class-name.mw5loL/before-class-key-order.log.
The compiler currently evaluates all class key expressions in compileClassComputedKeys, while buildClass performs their ToPropertyKey conversions later. ClassElementEvaluation requires each key conversion to complete before the next key expression, with abrupt completion preventing later effects. Fix this exact ordering through normal bytecode/native lowering; preserve suspension, precise roots and private-name environments. Cover String/Symbol keys, once-only coercion, throwing coercion, heritage ordering and moving-GC/OOM paths. This is distinct from passing an inferred class name before static effects (#814); do not change stack, queue, job or lifecycle implementations.