Skip to content

gc-root-dominance: 7/3 gated (8/4 unfiltered) NEW root-dominance regressions landed 2026-08-15..25 while the gate was red #8809

Description

@proggeramlug

scripts/gc_root_dominance_check.py reports 7 violations across 4 distinct fingerprints on clean main (db821b5fd), against an allowlist whose entries list is empty. CLAUDE.md states every new hit is a red build, so this is either a real regression or the gate is currently red on main.

test_gap_array_iterator_manual_next…::main::js_closure_alloc->js_object_set_field_by_name
test_gap_gc_method_receiver_rooting…::perry_fn_…__make::js_closure_alloc->js_object_set_field_by_name
test_gap_object_create_method_this…::main::js_closure_alloc->js_object_set_field_by_name
test_gap_class_advanced…::main::js_object_alloc_class_inline_keys_stamped->js_private_brand_add

Shape of the first three (all identical):

alloc  : %rN = call i64 @js_closure_alloc(...)
store  : store i64 %rM, ptr %r19
bind   : slot 9  call void @js_shadow_slot_bind(i32 9, ptr %r19)
between: js_object_set_field_by_name
MOVING : YES via js_object_set_field_by_name

i.e. the #7192 shape — the root store is emitted in-frame but after a call that can allocate.

Reproduce

cargo build --profile perry-dev -p perry -p perry-runtime-static -p perry-stdlib-static
PERRY_BIN=<target>/perry-dev/perry PERRY_RUNTIME_DIR=<target>/perry-dev \
  ./scripts/gc_root_dominance_corpus.sh /tmp/rdcorpus
python3 scripts/gc_root_dominance_check.py /tmp/rdcorpus; echo $?    # -> 1

Caveat on the measurement

Measured with a perry-dev binary; gc-root-dominance.yml uses release, and it passes flags this invocation did not (--moving-only, --min-binds, --min-funcs, plus its env knobs). So the absolute count may not match CI's. Worth confirming at release profile before treating the count as authoritative — but the violations are real IR at the profile measured.

Found while auditing #8783; an identical A/B showed that PR introduces none of these.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions