2026-03-24 13:40:38 +00:00

92 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 VMs 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.