Skip to content

perf(gc): right-size per-object footprint — INLINE_SLOT_FLOOR=4 reserves 4 slots for every object (#7469 Workstream B) #7714

Description

@proggeramlug

Workstream B — the per-object footprint half of #7469, which was quantified but never implemented.

Workstream A is done and closed (#7565/#7566: TLS resolution count + the loop-site inline-bump gate, churn_alloc 1.81× at +0 bytes for non-loop sites), which exceeded its own ≥2× acceptance bar. B never started, and #7469 is being closed so its remaining scope stops hiding behind a finished umbrella.

What is actually left

crates/perry-runtime/src/object/mod.rs:24 still reads:

pub(crate) const INLINE_SLOT_FLOOR: usize = 4;

unchanged since the measurement. Every object allocation therefore reserves at least 4 slots regardless of the shape's real field count — js_object_alloc(0, 0) (the {} and FFI path) allocates 4 slots for zero fields.

The measurement to start from, and its ceiling

#7469's own footprint work measured 136.9 B/record = 84.4 B arena + 52.6 B OUTSIDE the arena. That out-of-arena half is the important number: it caps any purely-arena remedy at ~113 B/record, not the ~80 B a naive reading of the arena figure suggests. Anyone picking this up should re-derive both halves before designing, because a right-sizing change that only moves the 84.4 B cannot reach the target.

Two warnings from the last attempt

Bench host per the standing rule: the quiet M1 mini, not a dev Mac.

Metadata

Metadata

Assignees

No one assigned

    Labels

    performanceRuntime, compile-time, build-size, or memory performance

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions