6bfaaaf445
debug(mir): add comprehensive receiver tracing and block overwrite protection
...
This commit investigates ValueId(21) undefined error in Stage-B compilation.
Changes:
- src/mir/builder/builder_calls.rs:
- Add NYASH_DEBUG_PARAM_RECEIVER=1 trace for method call receivers
- Track variable_map lookups and ValueId mismatches
- Log receiver origin and current_block context
- src/mir/builder/utils.rs:
- Fix start_new_block() to avoid overwriting existing blocks
- Check if block exists before calling add_block()
- Prevents Copy instructions from being lost
- src/mir/function.rs:
- Add warning log when replacing existing block
- Helps detect block overwrite issues
- lang/src/mir/builder/ (Hako files):
- Add debug prints for method lowering paths
- These were not used (Stage-B uses Rust MIR Builder)
- Kept for future Hako MIR Builder debugging
Key Discovery:
- Stage-B compilation uses Rust MIR Builder, not Hako MIR Builder
- ValueId(21) is undefined receiver in StageBArgsBox.resolve_src/1
- MIR shows: call_method ParserBox.length() [recv: %21] but %21 has no definition
- Likely caused by LocalSSA Copy emission failure or block overwrite
Next: Fix LocalSSA to ensure receiver Copy is properly emitted and preserved
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-17 09:39:26 +09:00
dda65b94b7
Phase 21.7 normalization: optimization pre-work + bench harness expansion
...
- Add opt-in optimizations (defaults OFF)
- Ret purity verifier: NYASH_VERIFY_RET_PURITY=1
- strlen FAST enhancement for const handles
- FAST_INT gate for same-BB SSA optimization
- length cache for string literals in llvmlite
- Expand bench harness (tools/perf/microbench.sh)
- Add branch/call/stringchain/arraymap/chip8/kilo cases
- Auto-calculate ratio vs C reference
- Document in benchmarks/README.md
- Compiler health improvements
- Unify PHI insertion to insert_phi_at_head()
- Add NYASH_LLVM_SKIP_BUILD=1 for build reuse
- Runtime & safety enhancements
- Clarify Rust/Hako ownership boundaries
- Strengthen receiver localization (LocalSSA/pin/after-PHIs)
- Stop excessive PluginInvoke→BoxCall rewrites
- Update CURRENT_TASK.md, docs, and canaries
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-13 16:40:58 +09:00
dc68104fd9
refactor(mir): Phase 6-1 - Add BasicBlock/MirFunction helper methods (foundation for ~50 line reduction)
...
【目的】
JSON v0 Bridge(if_else.rs, try_catch.rs, loop_.rs)で重複するPHI生成・terminator設定パターンを統一するための基礎ヘルパーメソッド追加
【実装内容】
1. BasicBlock::update_phi_input()メソッド追加(17行)
- loop back-edge PHI更新を簡略化
- 手動ループ検索パターンを統一化
- エラーハンドリング統一
2. MirFunction::set_jump_terminator()メソッド追加(14行)
- if/else/loop降下での終端設定を簡略化
- 未終端チェックを内包
- Option処理を統一
3. MirFunction::set_branch_terminator()メソッド追加(15行)
- if/else条件分岐の終端設定を簡略化
- Option処理を統一
【技術的改善】
- **Single Source of Truth**: 終端設定・PHI更新ロジックが一元化
- **エラーハンドリング統一**: Result型で明示的エラー処理
- **箱化**: 関連処理を BasicBlock/MirFunction に箱化
【修正箇所】
- src/mir/basic_block.rs:
- HashMap import追加
- update_phi_input()メソッド追加(17行)
- src/mir/function.rs:
- MirInstruction import追加
- set_jump_terminator()メソッド追加(14行)
- set_branch_terminator()メソッド追加(15行)
【テスト結果】
✅ ビルド成功(0 errors)
✅ userbox_*スモークテスト: 全6テストPASS
【次のフェーズ(Phase 6-2予定)】
これらのヘルパーメソッドを使って以下を簡略化予定:
- loop_.rs: ~10行削減(update_phi_input使用)
- if_else.rs: ~5行削減(set_branch_terminator使用)
- try_catch.rs: ~15行削減(両メソッド使用)
- 合計: ~30行削減見込み
【Phase 15目標への寄与】
- フェーズ1完了(基礎ヘルパー追加)
- フェーズ2準備完了(~150行削減可能な土台確立)
- 箱理論準拠: 「箱にする」「境界を作る」「戻せる」完全実現
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-11-01 15:15:21 +09:00
adbb0201a9
chore(fmt): add legacy stubs and strip trailing whitespace to unblock cargo fmt
2025-09-17 07:43:07 +09:00
d67f27f4b8
Phase 10.10: GC Switchable Runtime & Unified Debug System 実装完了
...
Phase 10.10の主要実装:
- GcConfigBox: GC設定の実行時制御(counting/trace/barrier_strict)
- DebugConfigBox: デバッグ設定の統一管理(JIT events/stats/dump/dot)
- メソッドディスパッチ: system_methods.rsで両Boxのメソッド実装
- CountingGC動作確認: write_barriers正常カウント(VM実行時)
技術的詳細:
- BoxCore/BoxBase統一アーキテクチャを活用
- setFlag/getFlag/apply/summaryメソッドで統一API提供
- 環境変数経由でVM/JITランタイムと連携
- GcConfigBox.apply()は次回実行から有効(ランタイム作成前に環境変数参照)
テスト済み:
- examples/gc_counting_demo.nyash: CountingGCの動作確認
- write_barriers=3でArray.push/set, Map.setを正しくカウント
- NYASH_GC_TRACE=1でGC統計出力確認
Box-First哲学の体現: 設定も制御も観測もすべてBox!
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-28 22:31:51 +09:00
fa1a3ad644
feat(Phase 9.75j): Complete warning elimination - 106→0 warnings (100% improvement)
...
✨ Major code quality improvements:
• Fixed all unused variable and parameter warnings
• Added appropriate #[allow(dead_code)] annotations
• Renamed constants to follow Rust naming conventions
• Achieved completely warning-free codebase
🔧 Key changes:
• Parser expressions: Fixed arg_count and statement_count usage
• MIR modules: Added dead_code allows for future-use code
• Backend modules: Prefixed unused parameters with underscore
• Effect constants: Renamed 'read' to 'READ_ALIAS' for conventions
📊 Results:
• Before: 106 warnings (noisy build output)
• After: 0 warnings (clean build)
• Improvement: 100% warning reduction
🎯 This continues the bug fixing initiative "つづきのしゅうせいおねがいにゃ!"
from Phase 9.75i (birth() fixes, static methods, Copilot apps).
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-16 17:39:04 +09:00
774e0bb241
🚀 MIR Stage 1 Basic Infrastructure Complete - 20 Instructions + SSA + Effects
...
Co-authored-by: moe-charm <217100418+moe-charm@users.noreply.github.com >
2025-08-12 11:33:48 +00:00