FA-90704 / Garbage collector invariants / Member archive
Block offset table: first object in the card returned even when it starts after the address · case 04
Addresses at the beginning of a card are attributed to the next object.
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 |
|---|---|---|---|
| addresses just before a card-internal start | {"owners": [72, 172, 172, 392, 392, 416], "table": [0, 8, 44, 0, -1, -2, 8, -1]} | {"owners": [0, 72, 172, 192, 392, 416], "table": [0, 8, 44, 0, -1, -2, 8, -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 ↗