feat(phase33): mir_call.hako Stage 1 complete - unified Call instruction skeleton
Stage 1 Implementation (208 lines): - 6 callee types: Global/Method/Constructor/Extern/Closure/Value - CallEmitBox reuse: 60% of functionality already implemented - JSON generation only (C++ backend handles LLVM IR) Builder Integration: - Added MirCallInst import and delegation methods - 10 instructions complete: const, binop, compare, ret, branch, jump, copy, phi, loopform, mir_call Tests (333 lines): - Unit tests: 6 tests covering all callee types (288 lines) - Smoke test: Global function call verification (45 lines) Build Status: - Rust build: SUCCESS (0 errors) - Test execution: PENDING (Phase 33 environment setup required) Code Reduction: - Python mir_call.py: 641 lines - Hakorune mir_call.hako: 208 lines - Reduction: -67.5% (using existing CallEmitBox) Next Steps: - Stage 2-6: Complete implementation - CallEmitBox.make_mir_call_closure/value additions - C++ backend integration 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@ -7,6 +7,7 @@ using "../instructions/jump.hako" as JumpInst
|
||||
using "../instructions/copy.hako" as CopyInst
|
||||
using "../instructions/phi.hako" as PhiInst
|
||||
using "../instructions/loopform.hako" as LoopFormInst
|
||||
using "../instructions/mir_call.hako" as MirCallInst
|
||||
|
||||
// LLVMBuilderBox — 命令構築(v0: const/binop/ret の骨格)
|
||||
static box LLVMBuilderBox {
|
||||
@ -389,4 +390,22 @@ static box LLVMBuilderBox {
|
||||
emit_loopform(self, loop_id, blocks, condition_vid, options) {
|
||||
return me.lower_loopform(self, loop_id, blocks, condition_vid, options)
|
||||
}
|
||||
|
||||
// Phase v2-C MIR Call 命令(統一Call)
|
||||
// Args:
|
||||
// self: static box receiver (implicit)
|
||||
// callee: calleeオブジェクト {type: "Global|Method|Constructor|...", ...}
|
||||
// args: 引数配列(ArrayBox of register IDs)
|
||||
// dst: 結果レジスタID
|
||||
// options: オプション設定(省略可)
|
||||
// Returns:
|
||||
// MIR Call JSON 文字列
|
||||
lower_mir_call(self, callee, args, dst, options) {
|
||||
return MirCallInst.lower_mir_call(self, callee, args, dst, options)
|
||||
}
|
||||
|
||||
// MIR Call 命令を emit(builder メソッド)
|
||||
emit_mir_call(self, callee, args, dst, options) {
|
||||
return me.lower_mir_call(self, callee, args, dst, options)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user