FA-90698 / Garbage collector invariants / Member archive
Block offset table: back-skips always point one card back · case 03
Lookups deep inside large objects take one hop per card and the table encoding differs from the contract.
Case contract
A contiguous heap of [start, size] objects is covered by cards of the given size. For each card the table stores the offset of the first object that starts inside the card; a card with no object start that is covered by an object from card c stores -(k - c), a direct back-skip to that card. To find the object containing address q: from q's card follow back-skips; if the card's first start lies after q, move to the previous card; then walk objects forward until one contains q (an entry that does not land on an object start yields corrupt-table). Return the table and the owner start for each query.
Why this case matters
Card scanning needs to locate object starts quickly; a stale or wrong table misparses the heap.
One recorded failure
Sample boundary fixtureThis sample comes from the broken implementation of a controlled reproducer.
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: owners across spanning objects | {"owners": [64, 184, 384], "table": [0, 0, 36, -1, -1, -1, 0, -1]} | {"owners": [64, 184, 384], "table": [0, 0, 36, -1, -2, -3, 0, -1]} | 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 ↗