# Legacy 候補一覧

Phase 256+ で特定された、将来削除可能な legacy コード候補を記録する。

---

## Phase 256 P1.7 で特定された legacy

### `join_func_name()` (src/mir/join_ir_vm_bridge/mod.rs)

**状態**: 未使用になった可能性あり（要精査）

**理由**:
- Phase 256 P1.7 で `continuation_func_ids` が `String` ベースに変更
- `join_func_name()` による `JoinFuncId → String` 変換が不要になった可能性
- JoinFunction の `name` フィールドが直接利用可能

**残利用箇所**: 11箇所 + 定義1箇所 = 計12箇所

#### 実利用箇所（10箇所）

1. **src/mir/join_ir_vm_bridge/runner.rs:55**
   ```rust
   let entry_name = join_func_name(entry_func);
   ```
   - 用途: VM実行時のエントリーポイント関数名取得
   - 状態: 実利用（Phase 27-shortterm S-4.3）

2. **src/mir/join_ir_vm_bridge/joinir_block_converter.rs:162**
   ```rust
   let func_name = join_func_name(*func);
   ```
   - 用途: JoinIR ブロック変換時の関数名取得
   - 状態: 実利用（Phase 190）

3. **src/mir/join_ir_vm_bridge/normalized_bridge/direct.rs:94**
   ```rust
   name: join_func_name(JoinFuncId(func.id.0)),
   ```
   - 用途: Normalized → MIR 変換時の関数署名生成
   - 状態: 実利用（Phase 141+）
   - 条件: `#[cfg(feature = "normalized_dev")]`

4. **src/mir/join_ir_vm_bridge/normalized_bridge/direct.rs:182**
   ```rust
   let func_name = join_func_name(JoinFuncId(target.0));
   ```
   - 用途: Normalized 関数ターゲット名取得
   - 状態: 実利用（Phase 141+）
   - 条件: `#[cfg(feature = "normalized_dev")]`

5. **src/mir/join_ir_vm_bridge/joinir_function_converter.rs:39**
   ```rust
   .insert(join_func_name(*func_id), mir_func);
   ```
   - 用途: MIR モジュールへの関数登録
   - 状態: 実利用（Phase 190）

6. **src/mir/builder/control_flow/joinir/merge/tail_call_lowering_policy.rs:100**
   ```rust
   let k_exit_name = join_func_name(JoinFuncId::new(2));
   ```
   - 用途: テストコード内での k_exit 関数名生成
   - 状態: テスト専用（`#[cfg(test)]`）

7. **src/mir/control_tree/normalized_shadow/loop_true_break_once.rs:63**
   ```rust
   use crate::mir::join_ir_vm_bridge::join_func_name;
   ```
   - 用途: テストコード内での関数名取得
   - 状態: テスト専用（`#[cfg(test)]`）

#### コメント参照箇所（3箇所）

8. **src/mir/builder/control_flow/joinir/merge/instruction_rewriter.rs**
   ```rust
   // No need to convert with join_func_name() - use directly
   ```
   - 用途: コメント（変換不要の説明）
   - 状態: ドキュメント

9. **src/mir/join_ir_vm_bridge/meta.rs**
   ```rust
   // Phase 256 P1.7: Use actual function name instead of join_func_name()
   // join_func_name() produces "join_func_{id}" but JoinFunction.name contains
   ```
   - 用途: コメント（Phase 256 P1.7 の設計変更説明）
   - 状態: ドキュメント

10. **src/mir/builder/control_flow/joinir/patterns/pattern7_split_scan.rs**
    ```rust
    // The bridge uses JoinFunction.name as the MirModule function key, not join_func_name(id)
    ```
    - 用途: コメント（Pattern 7 の設計説明）
    - 状態: ドキュメント

#### 定義箇所（1箇所）

11. **src/mir/join_ir_vm_bridge/mod.rs**
    ```rust
    pub(crate) fn join_func_name(id: JoinFuncId) -> String {
    ```
    - 用途: 関数定義
    - 状態: pub(crate) で公開

---

## 推奨アクション

### 短期（Phase 256 P1.7 スコープ外）
- ✅ このドキュメントに記録完了
- 実装変更は行わない（記録のみ）

### 中期（Phase 257+ で検討）
1. **段階的移行案**:
   - Step 1: 新規コードでは `JoinFunction.name` を直接使用
   - Step 2: 既存の10実利用箇所を段階的に置換
   - Step 3: テストコード（2箇所）を置換
   - Step 4: コメント更新（3箇所）
   - Step 5: `join_func_name()` 削除

2. **影響範囲**:
   - Bridge 層: 7箇所（実利用6 + テスト1）
   - Normalized 層: 2箇所（feature gated）
   - Control flow builder: 1箇所（テストのみ）
   - Control tree: 1箇所（テストのみ）

3. **リスク評価**:
   - 低: テストコードのみ（2箇所）
   - 中: Bridge 層の実利用（7箇所）
   - 高: Normalized 層（feature gated, 現在開発中）

4. **優先度**: 低（現在問題なし、技術的負債削減として）

---

## メンテナンス

- **作成日**: 2025-12-20
- **最終更新**: 2025-12-20
- **関連 Phase**: 256 P1.7
- **関連コミット**: (Phase 256 P1.7 完了後に記入)

---

## 参考リンク

- Phase 256 P1.7 設計: [phase-256/README.md](../phases/phase-256/README.md)
- JoinIR 設計マップ: [design/joinir-design-map.md](../design/joinir-design-map.md)
- JoinIR アーキテクチャ: [joinir-architecture-overview.md](../joinir-architecture-overview.md)
