refactor(vm): Phase 8 - Debug Trace Macro統一化(12行削減)
trace_dispatch!マクロで6箇所のVM_TRACEパターンを統一 実装内容: - mod.rsにtrace_dispatch!マクロ定義 - boxes.rs: 6箇所の3行if文→1行マクロ呼び出し - 削減: 18行→6行(12行削減) 対象箇所: - object_fields handler trace - instance_box handler trace - string_box handler trace - array_box handler trace - map_box handler trace - fallback(length=0) handler trace 効果: - 保守性向上: trace条件の一元管理 - 可読性向上: 冗長なif文→簡潔なマクロ - 一貫性向上: 全handler統一フォーマット テスト: ビルド成功(0エラー、87警告)
This commit is contained in:
@ -79,8 +79,9 @@ impl MirBuilder {
|
||||
}
|
||||
let then_value_raw = self.build_expression(then_branch)?;
|
||||
let then_exit_block = self.current_block()?;
|
||||
let then_reaches_merge = !self.is_current_block_terminated();
|
||||
let then_var_map_end = self.variable_map.clone();
|
||||
if !self.is_current_block_terminated() {
|
||||
if then_reaches_merge {
|
||||
// Scope leave for then-branch
|
||||
self.hint_scope_leave(0);
|
||||
crate::mir::builder::emission::branch::emit_jump(self, merge_block)?;
|
||||
@ -116,7 +117,8 @@ impl MirBuilder {
|
||||
(void_val, None, None)
|
||||
};
|
||||
let else_exit_block = self.current_block()?;
|
||||
if !self.is_current_block_terminated() {
|
||||
let else_reaches_merge = !self.is_current_block_terminated();
|
||||
if else_reaches_merge {
|
||||
// Scope leave for else-branch
|
||||
self.hint_scope_leave(0);
|
||||
self.emit_instruction(MirInstruction::Jump { target: merge_block })?;
|
||||
@ -144,8 +146,8 @@ impl MirBuilder {
|
||||
let result_val = self.normalize_if_else_phi(
|
||||
then_block,
|
||||
else_block,
|
||||
Some(then_exit_block),
|
||||
Some(else_exit_block),
|
||||
if then_reaches_merge { Some(then_exit_block) } else { None },
|
||||
if else_reaches_merge { Some(else_exit_block) } else { None },
|
||||
then_value_raw,
|
||||
else_value_raw,
|
||||
&pre_if_var_map,
|
||||
@ -176,8 +178,8 @@ impl MirBuilder {
|
||||
self.merge_modified_vars(
|
||||
then_block,
|
||||
else_block,
|
||||
then_exit_block,
|
||||
Some(else_exit_block),
|
||||
if then_reaches_merge { Some(then_exit_block) } else { None },
|
||||
if else_reaches_merge { Some(else_exit_block) } else { None },
|
||||
&pre_if_var_map,
|
||||
&then_var_map_end,
|
||||
&else_var_map_end_opt,
|
||||
|
||||
Reference in New Issue
Block a user