refactor(joinir): extract ExitArgsCollectorBox for jump_args SSOT
Phase 118 refactoring: Box modularization for exit value collection. # Changes - Created `exit_args_collector.rs` with ExitArgsCollectorBox - Extracted jump_args processing logic from instruction_rewriter.rs - Implemented SSOT for offset calculation (0 vs 1 legacy layout) - Added comprehensive unit tests (6 tests, all passing) # Design - **Responsibility**: Collects exit PHI inputs + carrier inputs from jump_args - **SSOT**: Centralized offset calculation logic - **Fail-Fast**: Validates jump_args length against exit_bindings - **Phase 118 P2 Contract**: Uses boundary.exit_bindings as SSOT # Key Features - Filters ConditionOnly carriers (no exit PHI needed) - Handles both direct mapping (offset=0) and legacy layout (offset=1) - Strict mode: Fail-Fast on validation errors - Non-strict mode: Warns and continues with best effort # Test Results - Unit tests: 6/6 PASS - Phase 118 smoke tests: PASS (VM + LLVM) - Phase 117 regression: PASS # Reduced Code Complexity - instruction_rewriter.rs: ~90 lines → ~25 lines (box call) - Offset logic: Centralized in ExitArgsCollectorBox 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@ -15,6 +15,7 @@
|
||||
mod block_allocator;
|
||||
mod carrier_init_builder;
|
||||
mod contract_checks;
|
||||
pub mod exit_args_collector; // Phase 118: Exit args collection box
|
||||
pub mod exit_line;
|
||||
mod exit_phi_builder;
|
||||
mod expr_result_resolver;
|
||||
|
||||
Reference in New Issue
Block a user