Establish If lowering infrastructure with dedicated JOINIR_IF_TARGETS table, separate from loop lowering (JOINIR_TARGETS). Implementation: - Add JOINIR_IF_TARGETS table with 6 representative functions - Add is_if_lowered_function() for table-based lookup - Update is_if_mainline_target() to use table (SSOT) - Update is_joinir_if_toplevel_target() with table-first lookup - Export via join_ir_vm_bridge_dispatch public API Representative functions: - IfSelectTest.test/1 (simple return pattern) - IfSelectLocalTest.main/0 (local variable pattern) - IfMergeTest.simple_true/0, simple_false/0 (multiple variables) - JsonShapeToMap._read_value_from_pair/1 (Stage-1 production) - Stage1JsonScannerBox.value_start_after_key_pos/2 (Stage-B production) Architecture: Loop/If separation complete (1関数につき1 lowering) Verification: All representative paths pass with NYASH_JOINIR_DEBUG=1 Phase 184 complete → Phase 185+ ready 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
JoinIR VM Bridge Dispatch
Purpose:
- Centralize JoinIR→VM routing away from the VM runner.
- Table-driven mapping of MIR function names to JoinIR lowering/exec behavior.
- Keep Exec vs LowerOnly paths explicit and opt-in via env flags or defaults.
Layout:
mod.rs: public entry (try_run_joinir_vm_bridge) + shared routing glueenv_flags.rs: env flag evaluation (NYASH_JOINIR_EXPERIMENT,NYASH_JOINIR_VM_BRIDGE)targets.rs: descriptor table (JOINIR_TARGETS,JoinIrBridgeKind,JoinIrTargetDesc)exec_routes.rs: Exec-capable routes (skip_ws, trim)lower_only_routes.rs: LowerOnly routes (Stage1/StageB) for structural verification only