Add add_prototype-function
This commit is contained in:
parent
df8c196bb9
commit
1091f341b9
@ -69,10 +69,11 @@ fn main() {
|
||||
environment: Default::default(),
|
||||
constants,
|
||||
prototypes: Default::default(),
|
||||
proto_counter: 0,
|
||||
};
|
||||
vm.prototypes.insert(0, instructions);
|
||||
for (i, prototype) in state.prototypes.into_iter().enumerate() {
|
||||
vm.prototypes.insert((i + 1) as u32, prototype);
|
||||
let chunk_id = vm.new_prototype(instructions);
|
||||
for prototype in state.prototypes {
|
||||
vm.new_prototype(prototype);
|
||||
}
|
||||
dbg!(&vm.prototypes);
|
||||
|
||||
@ -85,7 +86,7 @@ fn main() {
|
||||
vm::Value::RustFunction(Rc::new(RefCell::new(Print))),
|
||||
);
|
||||
|
||||
let closure = vm.create_closure(0);
|
||||
let closure = vm.create_closure(chunk_id);
|
||||
|
||||
let mut run = closure.run(Vec::new());
|
||||
|
||||
|
||||
10
src/vm.rs
10
src/vm.rs
@ -253,6 +253,16 @@ pub struct VirtualMachine {
|
||||
pub environment: Rc<RefCell<Environment>>,
|
||||
pub constants: Vec<Constant>,
|
||||
pub prototypes: HashMap<u32, Vec<Instruction>>,
|
||||
pub proto_counter: u32,
|
||||
}
|
||||
|
||||
impl VirtualMachine {
|
||||
pub fn new_prototype(&mut self, instructions: Vec<Instruction>) -> u32 {
|
||||
let proto_id = self.proto_counter;
|
||||
self.proto_counter += 1;
|
||||
self.prototypes.insert(proto_id, instructions);
|
||||
proto_id
|
||||
}
|
||||
}
|
||||
|
||||
impl VirtualMachine {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user