This commit is contained in:
Sander Hautvast 2023-10-01 22:25:04 +02:00
parent 2b50279c07
commit 1f0a916b12

View file

@ -1,14 +1,13 @@
use std::cell::{RefCell, UnsafeCell}; use std::cell::UnsafeCell;
use std::collections::HashMap; use std::collections::HashMap;
use std::ops::{Deref, DerefMut};
use std::rc::Rc; use std::rc::Rc;
use std::sync::Arc; use std::sync::Arc;
use anyhow::{anyhow, Error}; use anyhow::Error;
use crate::class::{AttributeType, Class, Value}; use crate::class::{AttributeType, Class, Value};
use crate::class::Value::Void; use crate::class::Value::Void;
use crate::classloader::{load_class, CpEntry}; use crate::classloader::{CpEntry, load_class};
use crate::heap::{Heap, Object}; use crate::heap::{Heap, Object};
use crate::io::*; use crate::io::*;
use crate::opcodes::*; use crate::opcodes::*;
@ -236,7 +235,7 @@ impl Vm {
if let CpEntry::NameAndType(name, _) = if let CpEntry::NameAndType(name, _) =
method.constant_pool.get(name_and_type_index).unwrap() method.constant_pool.get(name_and_type_index).unwrap()
{ {
let value = (*(instance.deref()).get()).data.get(name).unwrap(); let value = (*(*instance).get()).data.get(name).unwrap();
self.local_stack().push(Arc::clone(value)); self.local_stack().push(Arc::clone(value));
} }
} }
@ -255,7 +254,7 @@ impl Vm {
let value = self.local_stack().pop()?; let value = self.local_stack().pop()?;
let mut objectref = &*self.local_stack().pop()?.get(); let mut objectref = &*self.local_stack().pop()?.get();
if let Value::Ref(instance) = objectref { if let Value::Ref(instance) = objectref {
(*(instance.deref()).get()).data.insert(*name_index, value); (*(*instance).get()).data.insert(*name_index, value);
} }
} }
} }