diff --git a/valuescript_vm/src/bytecode_decoder.rs b/valuescript_vm/src/bytecode_decoder.rs index b99884b..79238d0 100644 --- a/valuescript_vm/src/bytecode_decoder.rs +++ b/valuescript_vm/src/bytecode_decoder.rs @@ -13,6 +13,7 @@ use crate::vs_object::VsObject; use crate::vs_symbol::VsSymbol; use crate::vs_value::ToVal; use crate::vs_value::Val; +use crate::Vallish; #[derive(Clone)] pub struct BytecodeDecoder { @@ -308,24 +309,3 @@ impl BytecodeDecoder { return InstructionByte::from_byte(self.decode_byte()); } } - -pub enum Vallish<'a> { - Own(Val), - Ref(&'a Val), -} - -impl<'a> Vallish<'a> { - pub fn get_own(self) -> Val { - match self { - Vallish::Own(val) => val, - Vallish::Ref(val) => val.clone(), - } - } - - pub fn get_ref(&self) -> &Val { - match self { - Vallish::Own(val) => val, - Vallish::Ref(val) => val, - } - } -} diff --git a/valuescript_vm/src/bytecode_stack_frame.rs b/valuescript_vm/src/bytecode_stack_frame.rs index 0b94ca4..30fd377 100644 --- a/valuescript_vm/src/bytecode_stack_frame.rs +++ b/valuescript_vm/src/bytecode_stack_frame.rs @@ -3,13 +3,13 @@ use valuescript_common::InstructionByte; use crate::builtins::type_error_builtin::ToTypeError; use crate::bytecode_decoder::BytecodeDecoder; use crate::bytecode_decoder::BytecodeType; -use crate::bytecode_decoder::Vallish; use crate::cat_stack_frame::CatStackFrame; use crate::native_function::ThisWrapper; use crate::operations; use crate::stack_frame::FrameStepOk; use crate::stack_frame::FrameStepResult; use crate::stack_frame::{CallResult, StackFrame, StackFrameTrait}; +use crate::vallish::Vallish; use crate::vs_object::VsObject; use crate::vs_value::ToVal; use crate::vs_value::{LoadFunctionResult, Val, ValTrait}; diff --git a/valuescript_vm/src/cat_stack_frame.rs b/valuescript_vm/src/cat_stack_frame.rs index cc52d2c..2c8ff99 100644 --- a/valuescript_vm/src/cat_stack_frame.rs +++ b/valuescript_vm/src/cat_stack_frame.rs @@ -2,10 +2,10 @@ use std::{mem::take, rc::Rc}; use crate::{ builtins::type_error_builtin::ToTypeError, - bytecode_decoder::Vallish, native_function::ThisWrapper, operations::op_sub, stack_frame::{CallResult, FrameStepOk, FrameStepResult, StackFrame, StackFrameTrait}, + vallish::Vallish, vs_symbol::VsSymbol, vs_value::{ToVal, Val}, LoadFunctionResult, ValTrait, diff --git a/valuescript_vm/src/lib.rs b/valuescript_vm/src/lib.rs index ae5e3dd..09e2071 100644 --- a/valuescript_vm/src/lib.rs +++ b/valuescript_vm/src/lib.rs @@ -18,6 +18,7 @@ pub mod operations; mod stack_frame; mod string_methods; mod todo_fn; +mod vallish; mod virtual_machine; pub mod vs_array; mod vs_class; @@ -27,6 +28,6 @@ mod vs_symbol; pub mod vs_value; pub use bytecode::Bytecode; -pub use bytecode_decoder::Vallish; +pub use vallish::Vallish; pub use virtual_machine::VirtualMachine; pub use vs_value::{LoadFunctionResult, ValTrait}; diff --git a/valuescript_vm/src/operations.rs b/valuescript_vm/src/operations.rs index 99f127c..0eaacb4 100644 --- a/valuescript_vm/src/operations.rs +++ b/valuescript_vm/src/operations.rs @@ -7,11 +7,11 @@ use crate::bigint_methods::op_sub_bigint; use crate::builtins::error_builtin::ToError; use crate::builtins::range_error_builtin::ToRangeError; use crate::builtins::type_error_builtin::ToTypeError; -use crate::bytecode_decoder::Vallish; use crate::native_function::native_fn; use crate::native_function::NativeFunction; use crate::number_methods::op_sub_number; use crate::string_methods::op_sub_string; +use crate::vallish::Vallish; use crate::vs_value::ToVal; use crate::vs_value::Val; use crate::vs_value::ValTrait; diff --git a/valuescript_vm/src/vallish.rs b/valuescript_vm/src/vallish.rs new file mode 100644 index 0000000..e817038 --- /dev/null +++ b/valuescript_vm/src/vallish.rs @@ -0,0 +1,22 @@ +use crate::vs_value::Val; + +pub enum Vallish<'a> { + Own(Val), + Ref(&'a Val), +} + +impl<'a> Vallish<'a> { + pub fn get_own(self) -> Val { + match self { + Vallish::Own(val) => val, + Vallish::Ref(val) => val.clone(), + } + } + + pub fn get_ref(&self) -> &Val { + match self { + Vallish::Own(val) => val, + Vallish::Ref(val) => val, + } + } +} diff --git a/valuescript_vm/src/vs_array.rs b/valuescript_vm/src/vs_array.rs index 1d74fa7..c0dc73e 100644 --- a/valuescript_vm/src/vs_array.rs +++ b/valuescript_vm/src/vs_array.rs @@ -11,13 +11,13 @@ use crate::array_higher_functions::{ }; use crate::builtins::error_builtin::ToError; use crate::builtins::type_error_builtin::ToTypeError; -use crate::bytecode_decoder::Vallish; use crate::helpers::{to_wrapping_index, to_wrapping_index_clamped}; use crate::iteration::array_entries_iterator::ArrayEntriesIterator; use crate::iteration::array_iterator::ArrayIterator; use crate::native_function::{native_fn, NativeFunction}; use crate::operations::op_triple_eq_impl; use crate::todo_fn::TODO; +use crate::vallish::Vallish; use crate::vs_class::VsClass; use crate::vs_object::VsObject; use crate::vs_symbol::VsSymbol; diff --git a/valuescript_vm/src/vs_value.rs b/valuescript_vm/src/vs_value.rs index d2b683f..8d664bd 100644 --- a/valuescript_vm/src/vs_value.rs +++ b/valuescript_vm/src/vs_value.rs @@ -7,11 +7,11 @@ use num_bigint::BigInt; use num_traits::cast::ToPrimitive; use num_traits::Zero; -use crate::bytecode_decoder::Vallish; use crate::copy_counter::CopyCounter; use crate::native_function::ThisWrapper; use crate::operations::{op_sub, op_submov}; use crate::stack_frame::StackFrame; +use crate::vallish::Vallish; use crate::vs_array::VsArray; use crate::vs_class::VsClass; use crate::vs_function::VsFunction;