Skip to content

Commit bcd176a

Browse files
committed
docs: record the #7854 boxed-store interaction in the fragment
1 parent fe267f0 commit bcd176a

1 file changed

Lines changed: 9 additions & 0 deletions

File tree

changelog.d/7861-class-field-subclass-chain.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,15 @@ candidacy are **re-derived per candidate subclass**, so a shadowing
2828
re-declaration or an accessor on the subclass chain drops that arm. Capped at 8
2929
arms; a class with no eligible subclass emits **byte-identical IR** to before.
3030

31+
All five `emit_class_field_inline_precheck` sites are widened, **including the
32+
strict BOXED store arm #7854 un-gated**. That one matters on its own: #7854
33+
removed the `requires_raw_f64` gate so boxed declared fields stop paying an
34+
unconditional guard call, but in a base class's own constructor the precheck it
35+
newly emits would still have missed 100% of the time, because `this` there is
36+
only ever a subclass. Its arms are computed with `requires_raw_f64` rather than a
37+
literal, so a candidate subclass whose declared type disagrees about the slot's
38+
representation is dropped.
39+
3140
Measured effect, with per-precondition counters on `shapes.ts`: the runtime get
3241
guard goes from being called on every inherited read to **never being entered at
3342
all** (`get_guard_calls=0`) — every read now takes the inline fast path.

0 commit comments

Comments
 (0)