aux
Fil-C also aux allocation, aux word, atomic box
Upstream InvisiCaps at rest, filc_runtime.h
An object's aux allocation, as large as its payload: where Fil-C keeps the lowers of the pointers stored in the object, slot for slot, while their intvals sit in the object's bytes. The aux word in the object header points at it; it is null for an object no pointer was ever stored into, which the collector then scans as a leaf. A pointer store must ensure it exists, which may call the runtime; a pointer load reads it.
An entry with its low bit set points at an atomic box, a 16-byte object holding a whole flight pointer for a pointer accessed atomically; its lower is at box+8 (
ir:pointer_memory_effects/2,filc_amd64:pointer_load_effects//4). A named local's stack aux has neither header nor box.Rocq:
m_aux, the capability stored at each 8-aligned slot, written bystore_auxand read byaux_at; the runtime axiomaux_round_tripsays what a safepoint may do to it.
The subtlety: ensuring aux is a safepoint natively, where a signal handler the program installed may run and free the checked object. That is why a pointer store's facts once needed spares as a real hypothesis. The model has no handler, so every runtime now meets it and the theorems no longer take it; a verified handler must not free an object whose check is in flight.
Linked from
- A program logic: What Hello will demand
- ContractFrame.v: owned_live
- ExternalCalls.v: available_cap
- ExternalCalls.v: local_effect
- ExternalCalls.v: write_authority
- FUGC
- GIMSO
- How Fil-C works: Pointers at rest
- How Iris works: Resources keyed by identity
- Libio.v: buffer_address_without_aux_is_not_enough
- Libio.v: buffer_slots
- Libio.v: embedded_memory_inhabited
- Libio.v: stdout_memory
- ListSum.v: ls_module
- Logic.v: cell_bounds
- Logic.v: pcell
- Machine.v: store_aux_kept
- MemLogic.v: aux_ps
- Memory.v: reason
- Memory.v: store_aux
- Ops.v: pointer_load_effect
- Pieces.v: piece
- Run.v: item_contents
- Runtime.v: aux_round_trip
- Semantics.v: invalidate_locals
- Semantics.v: snapshot_values
- Sep.v: fp
- SlotLogic.v: slot_module
- Soundness.v: unchecked_op
- Startup.v: copy_c_bytes_aux
- Startup.v: entry_missing_capability
- Startup.v: pointer_slot
- Startup.v: string_vector
- StepRules.v: pointer_load_plain
- Sum.v: sum_module
- Syntax.v: effect
- Transport.v: deffect
- Validate.v: local_store_effects
- Validate.v: reusing_access
- Validate.v: store_effects
- address space
- flight pointer
- ghost state
- lower
- retention
- root
- separation logic
- shadow
- spares