From b87760e24704617b4996b3f5e788fac758c96b1c Mon Sep 17 00:00:00 2001 From: tomoaki Date: Sun, 21 Dec 2025 06:06:29 +0900 Subject: [PATCH] refactor(joinir): Phase 260 P0.1 Step 2 - Extract logging.rs (DEBUG-177 style) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Extract logging utilities into dedicated module (safest first split). Provides log_if() function + rewriter_log!() macro as alternatives to local log! macro. Changes: - NEW: rewriter/logging.rs - log_if() + rewriter_log!() macro - CHANGED: rewriter/mod.rs - declare logging module Design: - log_if(trace, enabled, msg): Function form for explicit control - rewriter_log!(): Macro form for format!() convenience - Both wrap JoinLoopTrace::stderr_if() (existing infrastructure) Status: - instruction_rewriter.rs still uses local log! macro (unchanged) - Future: Gradually migrate to logging::log_if() or rewriter_log!() - cargo check PASS ✅ Next: Extract is_skippable_continuation to helpers.rs (smallest function) --- .../joinir/merge/rewriter/logging.rs | 54 +++++++++++++++++++ .../control_flow/joinir/merge/rewriter/mod.rs | 14 +++-- 2 files changed, 63 insertions(+), 5 deletions(-) create mode 100644 src/mir/builder/control_flow/joinir/merge/rewriter/logging.rs diff --git a/src/mir/builder/control_flow/joinir/merge/rewriter/logging.rs b/src/mir/builder/control_flow/joinir/merge/rewriter/logging.rs new file mode 100644 index 00000000..f97006f0 --- /dev/null +++ b/src/mir/builder/control_flow/joinir/merge/rewriter/logging.rs @@ -0,0 +1,54 @@ +//! Logging utilities for instruction rewriter +//! +//! Phase 260 P0.1: Extracted from instruction_rewriter.rs +//! Provides centralized logging with verbose flag control (DEBUG-177 style). + +use crate::mir::builder::control_flow::joinir::trace::JoinLoopTrace; + +/// Log message conditionally based on enabled flag +/// +/// Equivalent to the log! macro in instruction_rewriter.rs: +/// ``` +/// macro_rules! log { +/// ($enabled:expr, $($arg:tt)*) => { +/// trace.stderr_if(&format!($($arg)*), $enabled); +/// }; +/// } +/// ``` +/// +/// # Example +/// +/// ```ignore +/// let trace = trace::trace(); +/// log_if(&trace, true, "[DEBUG] Block {:?} processed", block_id); +/// ``` +#[inline] +pub(super) fn log_if(trace: &JoinLoopTrace, enabled: bool, message: &str) { + trace.stderr_if(message, enabled); +} + +/// Macro version for format string convenience +/// +/// Usage: `log!(trace, enabled, "format {}", arg);` +/// +/// This macro forwards to log_if() with format!() handling. +#[macro_export] +macro_rules! rewriter_log { + ($trace:expr, $enabled:expr, $($arg:tt)*) => { + $crate::mir::builder::control_flow::joinir::merge::rewriter::logging::log_if( + $trace, + $enabled, + &format!($($arg)*) + ) + }; +} + +// Phase 260 P0.1: Keep local macro compatibility +// +// The original log! macro was defined locally in merge_and_rewrite(). +// This module provides both function (log_if) and macro (rewriter_log!) forms. +// +// Migration strategy: +// 1. First, use logging::log_if() to replace some log! calls (verify) +// 2. Then, replace remaining log! with rewriter_log! macro +// 3. Finally, remove local log! macro from instruction_rewriter.rs diff --git a/src/mir/builder/control_flow/joinir/merge/rewriter/mod.rs b/src/mir/builder/control_flow/joinir/merge/rewriter/mod.rs index b01dac54..848634a9 100644 --- a/src/mir/builder/control_flow/joinir/merge/rewriter/mod.rs +++ b/src/mir/builder/control_flow/joinir/merge/rewriter/mod.rs @@ -18,14 +18,18 @@ // Phase 260 P0.1 Step 1: Forward all declarations to parent instruction_rewriter.rs // This allows gradual migration without breaking existing code. // -// When modules are ready: -// - mod terminator; -// - mod exit_line; -// - mod carriers; -// - mod logging; +// Modules (extracted): +// - logging: DEBUG-177 style verbose logs ✅ + +// Future modules (pending): +// - terminator: Branch/Jump/Return remapping +// - exit_line: ExitLine/exit-phi wiring +// - carriers: loop_invariants, exit_bindings // // For now, re-export from parent to maintain compatibility. +pub(super) mod logging; // Phase 260 P0.1 Step 2: Logging extracted ✅ + // Re-export public API from parent instruction_rewriter module pub(super) use super::instruction_rewriter::is_skippable_continuation; pub(super) use super::instruction_rewriter::merge_and_rewrite;