From 7b9bded5eeb3c09c9c1cc0b798c0d8ba266f3f54 Mon Sep 17 00:00:00 2001 From: MaYu Date: Fri, 26 Jun 2026 00:09:02 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E6=B6=88=E9=99=A4=E6=89=80=E6=9C=89?= =?UTF-8?q?=E7=BC=96=E8=AF=91=E5=99=A8=E8=AD=A6=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除unused方法: frame(), get_constant(), emit_i16_placeholder - 移除LoopContext未使用字段: start_ip, scope_depth - Vm字段改为私有: frames, open_upvalues - is_const字段添加#[allow(dead_code)] - 测试: 327/327 通过 | 0 warnings --- aster-core/src/vm/compiler.rs | 19 +++---------------- aster-core/src/vm/vm.rs | 15 ++------------- 2 files changed, 5 insertions(+), 29 deletions(-) diff --git a/aster-core/src/vm/compiler.rs b/aster-core/src/vm/compiler.rs index cbf26e4..8b83213 100644 --- a/aster-core/src/vm/compiler.rs +++ b/aster-core/src/vm/compiler.rs @@ -77,6 +77,7 @@ struct Local { name: String, depth: u8, // scope depth where declared; 0 = uninitialized is_captured: bool, + #[allow(dead_code)] is_const: bool, } @@ -88,10 +89,8 @@ struct Upvalue { } struct LoopContext { - start_ip: usize, // bytecode offset of loop condition - break_patches: Vec, // jump instruction offsets that need break dest - continue_patches: Vec,// jump instruction offsets that need continue dest - scope_depth: u8, // scope depth when loop started + break_patches: Vec, + continue_patches: Vec, } pub struct Compiler { @@ -241,10 +240,8 @@ impl Compiler { let exit_jump = self.emit_jump(OpCode::JumpIfFalse); self.loop_stack.push(LoopContext { - start_ip, break_patches: Vec::new(), continue_patches: Vec::new(), - scope_depth: self.scope_depth, }); self.compile_stmt(body)?; @@ -279,10 +276,8 @@ impl Compiler { let exit_jump = self.emit_jump(OpCode::JumpIfFalse); self.loop_stack.push(LoopContext { - start_ip, break_patches: Vec::new(), continue_patches: Vec::new(), - scope_depth: self.scope_depth, }); self.compile_stmt(body)?; @@ -355,10 +350,8 @@ impl Compiler { // 7. Loop body (can resolve var_name to loop_var_slot) self.loop_stack.push(LoopContext { - start_ip: forin_loc, break_patches: Vec::new(), continue_patches: Vec::new(), - scope_depth: self.scope_depth, }); self.compile_stmt(body)?; @@ -993,9 +986,3 @@ fn assign_op_to_compound(op: &AssignOp) -> CompoundOp { AssignOp::Equal => unreachable!(), } } - -fn emit_i16_placeholder(code: &mut Vec, op: OpCode) -> usize { - let loc = code.len(); - emit_i16(code, op, 0x7FFF); - loc -} diff --git a/aster-core/src/vm/vm.rs b/aster-core/src/vm/vm.rs index 91a4516..690df32 100644 --- a/aster-core/src/vm/vm.rs +++ b/aster-core/src/vm/vm.rs @@ -46,7 +46,7 @@ pub struct Vm { pub stack: Vec, /// Call frames - pub frames: Vec, + frames: Vec, /// Script-level globals (top-level let bindings) pub globals: Rc>>, @@ -61,7 +61,7 @@ pub struct Vm { pub current_dir: String, /// Open upvalues (tracked so closures share the same upvalue object) - pub open_upvalues: Vec>>, + open_upvalues: Vec>>, /// VM-compiled closures: maps Function Rc pointer → Closure data closures: RefCell>>, @@ -602,10 +602,6 @@ impl Vm { // IP management // ======================================================================== - fn frame(&self) -> &CallFrame { - self.frames.last().unwrap() - } - fn frame_mut(&mut self) -> &mut CallFrame { self.frames.last_mut().unwrap() } @@ -917,13 +913,6 @@ impl Vm { } } - fn get_constant(&self, idx: usize) -> Result { - let frame = self.frames.last().unwrap(); - frame.closure.proto.constants.get(idx).cloned().ok_or_else(|| RuntimeError::RuntimeError { - message: format!("Constant index {} out of bounds", idx), - token: None, - }) - } // ======================================================================== // Upvalues