# PR-3.7 — Integrate GC Cycle at Safepoint (`FRAME_SYNC`) ### Briefing The GC must only run at safepoints. This PR connects the mark-sweep collector to the VM’s safepoint logic, primarily at `FRAME_SYNC`. ### Target * Trigger GC cycles only at safepoints. * Keep execution deterministic. ### Work items * Identify safepoint handling code in the VM. * Add logic: * If allocation threshold exceeded, run GC at `FRAME_SYNC`. * Ensure GC does not run in arbitrary instruction contexts. ### Acceptance checklist * [ ] GC runs only at safepoints. * [ ] No GC during arbitrary instruction execution. * [ ] VM remains deterministic. * [ ] `cargo test` passes. ### Tests * Add a test where allocations trigger GC only at `FRAME_SYNC`. ### Junie instructions **You MAY:** * Hook GC invocation into safepoint handling. **You MUST NOT:** * Trigger GC at random points. * Add background or concurrent GC. **If unclear:** * Ask before modifying safepoint semantics. --- # PR-3.8 — GC Smoke and Stress Tests ### Briefing We need confidence that the GC behaves correctly under simple and stressed conditions. ### Target * Add deterministic smoke and stress tests for the GC. ### Work items * Add tests: * Simple allocation and collection cycle. * Many short-lived objects. * Cyclic references. * Ensure tests are deterministic. ### Acceptance checklist * [ ] Smoke tests pass. * [ ] Stress tests pass. * [ ] No nondeterministic failures. * [ ] `cargo test` passes. ### Tests * New GC-specific tests. ### Junie instructions **You MAY:** * Add deterministic tests. **You MUST NOT:** * Introduce random or timing-dependent tests. * Modify GC semantics to satisfy tests. **If unclear:** * Ask before changing test scenarios.