diff --git a/src/heap.rs b/src/heap.rs index f8e2b43..f60ab37 100644 --- a/src/heap.rs +++ b/src/heap.rs @@ -25,7 +25,7 @@ pub enum ObjectRef{ BooleanArray(Vec), CharArray(Vec), ObjectArray(Vec>>), - Object(Object), + Object(Box), } diff --git a/src/vm.rs b/src/vm.rs index 69d6d42..6f8c2d4 100644 --- a/src/vm.rs +++ b/src/vm.rs @@ -348,7 +348,7 @@ impl Vm { { println!("new {}", new_class); let class = self.get_class(new_class)?; - let object = Arc::new(UnsafeCell::new(ObjectRef::Object(self.new_instance(class)))); + let object = Arc::new(UnsafeCell::new(ObjectRef::Object(Box::new(self.new_instance(class))))); self.local_stack().push(Value::Ref(Arc::clone(&object))); self.heap.new_object(object); }