refactor: 大規模ファイル分割とプラグインリファクタリング
## 🎯 プラグイン整理 - ✅ **nyash-json-plugin**: プロバイダー抽象化、NodeRep統一 - ✅ **nyash-string-plugin**: TLVヘルパー整理 - ✅ **nyash-net-plugin**: HTTPヘルパー分離、ソケット管理改善 - ✅ **nyash-counter-plugin/fixture-plugin**: 基本構造整理 ## 📂 mir_interpreter分割 - ✅ **mir_interpreter.rs → mir_interpreter/ディレクトリ** - mod.rs: メイン構造体定義 - execution.rs: 実行エンジン - memory.rs: メモリ管理 - instructions/: 命令別実装 ## 🔧 その他の改善 - テストファイル群の最適化 - LLVMコンパイラのメイン関数整理 - 不要なインポート削除 1000行超のファイルを適切なモジュール構造に分割完了! 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
87
src/backend/mir_interpreter/handlers/mod.rs
Normal file
87
src/backend/mir_interpreter/handlers/mod.rs
Normal file
@ -0,0 +1,87 @@
|
||||
use super::*;
|
||||
|
||||
mod arithmetic;
|
||||
mod boxes;
|
||||
mod calls;
|
||||
mod externals;
|
||||
mod memory;
|
||||
mod misc;
|
||||
|
||||
impl MirInterpreter {
|
||||
pub(super) fn execute_instruction(&mut self, inst: &MirInstruction) -> Result<(), VMError> {
|
||||
match inst {
|
||||
MirInstruction::Const { dst, value } => self.handle_const(*dst, value)?,
|
||||
MirInstruction::NewBox {
|
||||
dst,
|
||||
box_type,
|
||||
args,
|
||||
} => self.handle_new_box(*dst, box_type, args)?,
|
||||
MirInstruction::PluginInvoke {
|
||||
dst,
|
||||
box_val,
|
||||
method,
|
||||
args,
|
||||
..
|
||||
} => self.handle_plugin_invoke(*dst, *box_val, method, args)?,
|
||||
MirInstruction::BoxCall {
|
||||
dst,
|
||||
box_val,
|
||||
method,
|
||||
args,
|
||||
..
|
||||
} => self.handle_box_call(*dst, *box_val, method, args)?,
|
||||
MirInstruction::ExternCall {
|
||||
dst,
|
||||
iface_name,
|
||||
method_name,
|
||||
args,
|
||||
..
|
||||
} => self.handle_extern_call(*dst, iface_name, method_name, args)?,
|
||||
MirInstruction::RefSet {
|
||||
reference,
|
||||
field,
|
||||
value,
|
||||
} => self.handle_ref_set(*reference, field, *value)?,
|
||||
MirInstruction::RefGet {
|
||||
dst,
|
||||
reference,
|
||||
field,
|
||||
} => self.handle_ref_get(*dst, *reference, field)?,
|
||||
MirInstruction::BinOp { dst, op, lhs, rhs } => {
|
||||
self.handle_binop(*dst, *op, *lhs, *rhs)?
|
||||
}
|
||||
MirInstruction::UnaryOp { dst, op, operand } => {
|
||||
self.handle_unary_op(*dst, *op, *operand)?
|
||||
}
|
||||
MirInstruction::Compare { dst, op, lhs, rhs } => {
|
||||
self.handle_compare(*dst, *op, *lhs, *rhs)?
|
||||
}
|
||||
MirInstruction::Copy { dst, src } => self.handle_copy(*dst, *src)?,
|
||||
MirInstruction::Load { dst, ptr } => self.handle_load(*dst, *ptr)?,
|
||||
MirInstruction::Store { ptr, value } => self.handle_store(*ptr, *value)?,
|
||||
MirInstruction::Call {
|
||||
dst,
|
||||
func,
|
||||
callee,
|
||||
args,
|
||||
..
|
||||
} => self.handle_call(*dst, *func, callee.as_ref(), args)?,
|
||||
MirInstruction::Debug { message, value } => {
|
||||
self.handle_debug(message, *value)?;
|
||||
}
|
||||
MirInstruction::Print { value, .. } => self.handle_print(*value)?,
|
||||
MirInstruction::BarrierRead { .. }
|
||||
| MirInstruction::BarrierWrite { .. }
|
||||
| MirInstruction::Barrier { .. }
|
||||
| MirInstruction::Safepoint
|
||||
| MirInstruction::Nop => {}
|
||||
other => {
|
||||
return Err(VMError::InvalidInstruction(format!(
|
||||
"MIR interp: unimplemented instruction: {:?}",
|
||||
other
|
||||
)))
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user