fix(gc): allow retained array-growth aliases during copying verification - #9822
fix(gc): allow retained array-growth aliases during copying verification#9822proggeramlug wants to merge 2 commits into
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Team Run ID: 📒 Files selected for processing (3)
Included review availability: Your plan provides up to 8 included reviews per hour; 5 remain after this review. 📝 WalkthroughWalkthroughChangesRetained growth verification
Estimated code review effort: 4 (Complex) | ~45 minutes Merge Risk: ⚪ Minimal · up to This change permits valid retained array-growth aliases during copying minor GC while retaining rejection of stale from-space references and strict verification elsewhere. The supplied coverage indicates no remaining merge-blocking risk. Sequence Diagram(s)sequenceDiagram
participant CopyingMinorGC
participant EvacuationVerifier
participant RuntimeRootVisitor
participant HeapObjectVerifier
CopyingMinorGC->>EvacuationVerifier: create copying_minor verifier
CopyingMinorGC->>RuntimeRootVisitor: verify runtime roots
RuntimeRootVisitor->>EvacuationVerifier: inspect forwarded references
CopyingMinorGC->>HeapObjectVerifier: verify heap fields
HeapObjectVerifier->>EvacuationVerifier: inspect forwarded references
EvacuationVerifier-->>CopyingMinorGC: accept retained alias or report stale reference
Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 47.37% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 38 functions across 8 files. (1 skipped: 1 unsupported.)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
3705978 to
350d1b4
Compare
|
Landed on |
Solid's effect computation can retain its
sourcesarray's original address after that tenured array grows. Perry deliberately preserves the old address as an array-growth forwarding stub, butPERRY_GC_VERIFY_EVACUATION=1rejected this valid old-to-old alias during a copying minor.Carry the evacuation verifier's policy through heap fields, remembered ranges, stack/global roots, mutable runtime roots, metadata, and copy-only/FFI scanners. Copying verification permits a forwarding hop only when both ends are retained array allocations; it still follows the entire chain and rejects young targets, including indirect ones. The non-copying and old-page evacuation path keeps its existing strict policy. Mutating rewrites and array access are unchanged.
The
PASS1_MARKEDsource pin is updated after reviewing the solecycle.rschange: selecting the strict verifier policy remains in minor finalization, outside the synchronous full-cycle census window.Validation:
-D warnings; the two source-pin checks passed on rerun after the audit update. Two CI-only expressions are skipped by the local harness. Formatting and diff checks pass.Follow-up to #9821; relates to #4644. This resolves the audit's verifier finding; the native UI bridge remains separate. No version bump.
Summary by CodeRabbit
Bug Fixes
Tests