92 lines
1.7 KiB
Markdown
92 lines
1.7 KiB
Markdown
# 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.
|