diff --git a/changelog.d/7460-dep-corpus-vacuous.md b/changelog.d/7460-dep-corpus-vacuous.md new file mode 100644 index 0000000000..9fee32a8a9 --- /dev/null +++ b/changelog.d/7460-dep-corpus-vacuous.md @@ -0,0 +1 @@ +- **The dependency-scale GC root-dominance corpus was measuring nothing, and now isn't.** #7452 restored the curated corpus and missed its sibling: the checker anchors on `@js_shadow_slot_bind` call sites, statepoints became the default root lowering in #7370 and express roots as `gc.statepoint` relocation bundles, so the dependency corpus emitted 81 modules with **zero** of the checker's subject. Selecting the shadow-stack lowering restores it to 7719 root stores across 12899 functions — matching CI's own documented floors ("81 modules, ~12900 functions, ~7700 root stores"), which were written against that lowering. Both gated arms exit 0 with 40/40 seeded violations caught. This is the corpus #7280 created *because* the curated one reads zero while twenty lines of stock `zod` fault, so leaving it vacuous defeated the reason it exists. (#7460) diff --git a/scripts/gc_root_dominance_dep_corpus.sh b/scripts/gc_root_dominance_dep_corpus.sh index 315610121f..0c719872e4 100755 --- a/scripts/gc_root_dominance_dep_corpus.sh +++ b/scripts/gc_root_dominance_dep_corpus.sh @@ -82,7 +82,16 @@ trap 'rm -rf "$scratch"' EXIT # (it is off by default since #7161, so without it the corpus cannot express a # back-edge collection at all). PERRY_INLINE_SHADOW_SLOT=0 makes every root # store the @js_shadow_slot_bind call form the checker anchors on. -if ! env PERRY_GC_MOVING_LOOP_POLLS=1 \ +# PERRY_RS4GC=0 selects the SHADOW-STACK root lowering, for the same reason as +# the sibling corpus (#7452): statepoints became the default in #7370 and +# express roots as `gc.statepoint` relocation bundles rather than +# `@js_shadow_slot_bind` calls, so without this the corpus contains ZERO of the +# checker's subject. #7452 fixed the curated corpus and missed this one -- it +# was still emitting 81 modules with 0 bind call sites, i.e. a dependency-scale +# gate measuring nothing, which is exactly the failure #7280 created it to +# avoid. +if ! env PERRY_RS4GC=0 \ + PERRY_GC_MOVING_LOOP_POLLS=1 \ PERRY_INLINE_SHADOW_SLOT=0 \ PERRY_NO_AUTO_OPTIMIZE=1 \ "$PERRY_BIN" compile "$ENTRY" -o "$scratch/dep-corpus" --trace llvm \