Skip to content

v1.0.5

Choose a tag to compare

@hooji hooji released this 22 Mar 08:48
· 166 commits to main since this release
4051559

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