diff --git a/docs/private b/docs/private index 81ec67f7..ccb716eb 160000 --- a/docs/private +++ b/docs/private @@ -1 +1 @@ -Subproject commit 81ec67f7757a3798bf5262a17a7c4c6a483ac56c +Subproject commit ccb716eb04df47e79015ad98c587a401ace25828 diff --git a/src/mir/join_ir/lowering/mod.rs b/src/mir/join_ir/lowering/mod.rs index 3ce488e6..4e6d4fd5 100644 --- a/src/mir/join_ir/lowering/mod.rs +++ b/src/mir/join_ir/lowering/mod.rs @@ -49,7 +49,10 @@ use crate::mir::{BasicBlockId, MirFunction}; /// Phase 33-3: Try to lower if/else to JoinIR Select instruction /// /// Scope: -/// - Only applies to functions matching "IfSelectTest.*" +/// - Only applies to whitelisted functions: +/// - IfSelectTest.* (Phase 33-2/33-3) +/// - JsonShapeParser._read_value_from_pair/1 (Phase 33-4 Stage-1) +/// - Stage1JsonScannerBox.value_start_after_key_pos/2 (Phase 33-4 Stage-B) /// - Requires NYASH_JOINIR_IF_SELECT=1 environment variable /// - Falls back to traditional if_phi on pattern mismatch /// @@ -64,11 +67,15 @@ pub fn try_lower_if_to_joinir( return None; } - // 関数名で制限(IfSelectTest.* のみ) - if !func.signature.name.starts_with("IfSelectTest.") { + // Phase 33-4: 関数名ガード拡張(IfSelectTest + Stage-1/Stage-B 候補) + let is_allowed = func.signature.name.starts_with("IfSelectTest.") + || func.signature.name == "JsonShapeParser._read_value_from_pair/1" + || func.signature.name == "Stage1JsonScannerBox.value_start_after_key_pos/2"; + + if !is_allowed { if debug { eprintln!( - "[try_lower_if_to_joinir] skipping non-test function: {}", + "[try_lower_if_to_joinir] skipping non-allowed function: {}", func.signature.name ); }