From c5e8317985b94d8adef4bf60a59f972bb08fd46c Mon Sep 17 00:00:00 2001 From: Andrew Morris Date: Mon, 30 May 2022 09:51:55 +1000 Subject: [PATCH] Box -> StackFrame --- src/vstc/virtual_machine/bytecode_stack_frame.rs | 4 ++-- src/vstc/virtual_machine/first_stack_frame.rs | 2 +- src/vstc/virtual_machine/mod.rs | 2 +- .../{stack_frame_trait.rs => stack_frame.rs} | 4 +++- src/vstc/virtual_machine/virtual_machine.rs | 8 ++++---- src/vstc/virtual_machine/vs_function.rs | 4 ++-- src/vstc/virtual_machine/vs_value.rs | 4 ++-- 7 files changed, 15 insertions(+), 13 deletions(-) rename src/vstc/virtual_machine/{stack_frame_trait.rs => stack_frame.rs} (86%) diff --git a/src/vstc/virtual_machine/bytecode_stack_frame.rs b/src/vstc/virtual_machine/bytecode_stack_frame.rs index 7a5763b..350347d 100644 --- a/src/vstc/virtual_machine/bytecode_stack_frame.rs +++ b/src/vstc/virtual_machine/bytecode_stack_frame.rs @@ -6,7 +6,7 @@ use super::operations; use super::bytecode_decoder::BytecodeDecoder; use super::bytecode_decoder::BytecodeType; use super::instruction::Instruction; -use super::stack_frame_trait::{StackFrameTrait, FrameStepResult, CallResult}; +use super::stack_frame::{StackFrame, StackFrameTrait, FrameStepResult, CallResult}; pub struct BytecodeStackFrame { pub decoder: BytecodeDecoder, @@ -47,7 +47,7 @@ impl BytecodeStackFrame { pub fn transfer_parameters( &mut self, - new_frame: &mut Box, + new_frame: &mut StackFrame, ) { let bytecode_type = self.decoder.decode_type(); diff --git a/src/vstc/virtual_machine/first_stack_frame.rs b/src/vstc/virtual_machine/first_stack_frame.rs index 95c1339..97ecbb5 100644 --- a/src/vstc/virtual_machine/first_stack_frame.rs +++ b/src/vstc/virtual_machine/first_stack_frame.rs @@ -1,4 +1,4 @@ -use super::stack_frame_trait::{StackFrameTrait, FrameStepResult, CallResult}; +use super::stack_frame::{StackFrameTrait, FrameStepResult, CallResult}; use super::vs_value::Val; pub struct FirstStackFrame { diff --git a/src/vstc/virtual_machine/mod.rs b/src/vstc/virtual_machine/mod.rs index 1360093..1c57bd1 100644 --- a/src/vstc/virtual_machine/mod.rs +++ b/src/vstc/virtual_machine/mod.rs @@ -12,7 +12,7 @@ mod builtins; mod math; mod vs_class; mod bytecode_stack_frame; -mod stack_frame_trait; +mod stack_frame; mod first_stack_frame; pub use virtual_machine::VirtualMachine; diff --git a/src/vstc/virtual_machine/stack_frame_trait.rs b/src/vstc/virtual_machine/stack_frame.rs similarity index 86% rename from src/vstc/virtual_machine/stack_frame_trait.rs rename to src/vstc/virtual_machine/stack_frame.rs index 01b8e99..1f4f151 100644 --- a/src/vstc/virtual_machine/stack_frame_trait.rs +++ b/src/vstc/virtual_machine/stack_frame.rs @@ -1,5 +1,7 @@ use super::vs_value::Val; +pub type StackFrame = Box; + #[derive(Clone)] pub struct CallResult { pub return_: Val, @@ -9,7 +11,7 @@ pub struct CallResult { pub enum FrameStepResult { Continue, Pop(CallResult), - Push(Box), + Push(StackFrame), } pub trait StackFrameTrait { diff --git a/src/vstc/virtual_machine/virtual_machine.rs b/src/vstc/virtual_machine/virtual_machine.rs index 3d9fb68..24690ec 100644 --- a/src/vstc/virtual_machine/virtual_machine.rs +++ b/src/vstc/virtual_machine/virtual_machine.rs @@ -2,12 +2,12 @@ use std::rc::Rc; use super::vs_value::{Val, ValTrait, LoadFunctionResult}; use super::bytecode_decoder::BytecodeDecoder; -use super::stack_frame_trait::{StackFrameTrait, FrameStepResult}; +use super::stack_frame::{StackFrame, FrameStepResult}; use super::first_stack_frame::FirstStackFrame; pub struct VirtualMachine { - pub frame: Box, - pub stack: Vec>, + pub frame: StackFrame, + pub stack: Vec, } impl VirtualMachine { @@ -61,7 +61,7 @@ impl VirtualMachine { }; } - pub fn push(&mut self, mut frame: Box) { + pub fn push(&mut self, mut frame: StackFrame) { std::mem::swap(&mut self.frame, &mut frame); self.stack.push(frame); } diff --git a/src/vstc/virtual_machine/vs_function.rs b/src/vstc/virtual_machine/vs_function.rs index 93fe218..6bf9e0d 100644 --- a/src/vstc/virtual_machine/vs_function.rs +++ b/src/vstc/virtual_machine/vs_function.rs @@ -3,7 +3,7 @@ use std::rc::Rc; use super::vs_value::Val; use super::bytecode_stack_frame::BytecodeStackFrame; use super::bytecode_decoder::BytecodeDecoder; -use super::stack_frame_trait::StackFrameTrait; +use super::stack_frame::StackFrame; pub struct VsFunction { pub bytecode: Rc>, @@ -30,7 +30,7 @@ impl VsFunction { }; } - pub fn make_frame(&self) -> Box { + pub fn make_frame(&self) -> StackFrame { let mut registers: Vec = Vec::with_capacity(self.register_count - 1); registers.push(Val::Undefined); diff --git a/src/vstc/virtual_machine/vs_value.rs b/src/vstc/virtual_machine/vs_value.rs index 166554d..624cf8b 100644 --- a/src/vstc/virtual_machine/vs_value.rs +++ b/src/vstc/virtual_machine/vs_value.rs @@ -6,7 +6,7 @@ use super::vs_object::VsObject; use super::vs_array::VsArray; use super::vs_class::VsClass; use super::operations::{op_sub, op_submov}; -use super::stack_frame_trait::StackFrameTrait; +use super::stack_frame::StackFrame; #[derive(Clone)] pub enum Val { @@ -39,7 +39,7 @@ pub enum VsType { pub enum LoadFunctionResult { NotAFunction, - StackFrame(Box), + StackFrame(StackFrame), NativeFunction(fn(this: &mut Val, params: Vec) -> Val), }