FA-90598 / Garbage collector invariants / Member archive
Stack maps: reference bitmask read most-significant bit first · case 03
Integer slots are relocated as pointers while real reference slots keep stale addresses.
Case contract
Relocate frame slots after a moving collection. Each frame has a safepoint pc and a slot list; maps[pc] gives a reference bitmask (bit i set means slot i holds a reference; bit 0 is slot 0) and derived pointers [derived_slot, base_slot], which hold base + offset and are not in the mask. moves maps old object addresses to new ones (unmoved objects are absent or map to themselves). Reference slots are relocated, derived slots become new base + (old derived - old base), and every other slot is left untouched. A pc without a map returns ["no-stackmap", pc].
Why this case matters
Precise collectors rely on stack maps; misreading them corrupts registers or keeps stale pointers.
One recorded failure
Sample boundary fixtureThis sample comes from the broken implementation of a controlled reproducer.
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: references, integers and derived pointers | [[1000, 10, 2000, 5064, 1000, 2392]] | [[5048, 10, 2400, 5064, 1000, 2392]] | Failed |
MEMBER ARCHIVE
The complete case is available to members.
This record includes three runnable implementations, regression fixtures, execution results, and source hashes.
Member access is invitation-based. Sign in with your invited account to inspect the sources.
Sign in to the archive ↗