Repository navigation
v1.0.5
What's New
Direct-jump architecture
The replay mechanism has been completely rewritten. Resume stubs now jump directly to post-invoke labels in the original code instead of re-executing with skip checks. This is simpler, more correct, and eliminates an entire class of field-mutation duplication bugs.
Per-frame local variable restoration
Each stack frame's locals are now set individually via JDI Phase 2 at the exact post-invoke label where all variables are in scope. This replaces the previous approach of setting all locals at once.
Bug fixes
- Fixed field mutations being duplicated during skip-pass replay
- Fixed resume stub using dummy receiver instead of heap-restored object
- Fixed JDWP INVALID_SLOT handling during Phase 1 local variable setting
- Fixed stub offset registration for methods with invokedynamic invokes
- Fixed VerifyError when compiler reuses local variable slots for different types
- Fixed OperandStackChecker false positives for framework-injected invokes
Testing
- 127 unit tests, 32 integration tests across Java 8/9/11/25 × Ubuntu/macOS/Windows
- New deep-state E2E test verifying complex state across 8 stack levels