feat(joinir): Phase 213-2 Step 2-2 & 2-3 Data structure extensions
Extended PatternPipelineContext and CarrierUpdateInfo for Pattern 3 AST-based generalization. Changes: 1. PatternPipelineContext: - Added loop_condition: Option<ASTNode> - Added loop_body: Option<Vec<ASTNode>> - Added loop_update_summary: Option<LoopUpdateSummary> - Updated build_pattern_context() for Pattern 3 2. CarrierUpdateInfo: - Added then_expr: Option<ASTNode> - Added else_expr: Option<ASTNode> - Updated analyze_loop_updates() with None defaults Status: Phase 213-2 Steps 2-2 & 2-3 complete Next: Create Pattern3IfAnalyzer to extract if statement and populate update summary
This commit is contained in:
@ -118,33 +118,20 @@ pub(crate) fn is_loop_lowered_function(name: &str) -> bool {
|
||||
// Phase 80: JoinIR Mainline Unification - Core ON 時の本線化判定
|
||||
// ============================================================================
|
||||
|
||||
/// Phase 80: JoinIR 本線化対象(Loop)の判定
|
||||
///
|
||||
/// `joinir_core_enabled()=true` の時、これらの関数のループは
|
||||
/// 必ず JoinIR → MIR 経路を本線として試行します。
|
||||
/// Phase 80: JoinIR 本線化対象(Loop)の判定(JoinIR は常時 ON)
|
||||
pub fn is_loop_mainline_target(name: &str) -> bool {
|
||||
is_loop_lowered_function(name)
|
||||
}
|
||||
|
||||
/// Phase 80/184: JoinIR 本線化対象(If)の判定
|
||||
///
|
||||
/// `joinir_core_enabled()=true` の時、これらの関数の if/else は
|
||||
/// 必ず JoinIR → MIR 経路を本線として試行します。
|
||||
/// Phase 80/184: JoinIR 本線化対象(If)の判定(JoinIR は常時 ON)
|
||||
///
|
||||
/// Phase 184: JOINIR_IF_TARGETS テーブルからの参照に変更
|
||||
pub fn is_if_mainline_target(name: &str) -> bool {
|
||||
crate::mir::join_ir_vm_bridge_dispatch::is_if_lowered_function(name)
|
||||
}
|
||||
|
||||
/// Phase 80: Core ON 時に JoinIR を本線として試行すべきか判定
|
||||
///
|
||||
/// Returns true if:
|
||||
/// - `joinir_core_enabled()=true` AND
|
||||
/// - 関数が本線化対象 (Loop or If)
|
||||
/// Phase 80: JoinIR を本線として試行すべきか判定(Core 常時 ON)
|
||||
pub fn should_try_joinir_mainline(func_name: &str, is_loop: bool) -> bool {
|
||||
if !crate::config::env::joinir_core_enabled() {
|
||||
return false;
|
||||
}
|
||||
if is_loop {
|
||||
is_loop_mainline_target(func_name)
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user