Static object creation

This commit is contained in:
VegOwOtenks 2024-09-02 17:44:59 +02:00
parent 8642dcdd6a
commit 6c0fbd179a
6 changed files with 160 additions and 29 deletions

View file

@ -161,7 +161,7 @@ impl JVM {
},
JVMCallbackOperation::InitClass(name) => {
self.init_class(*self.class_store.class_idx_from_name(&name).unwrap());
self.init_class(*self.class_store.class_idx_from_name(&name).unwrap())?;
}
}
}
@ -169,14 +169,19 @@ impl JVM {
Ok(())
}
pub fn init_class(&mut self, class_idx: usize) {
pub fn init_class(&mut self, class_idx: usize) -> Result<(), Error> {
let class_file = self.class_store.class_file_from_idx(class_idx).unwrap();
let clinit_idx = class_file.find_method_index(&"<clinit>".to_string());
// TODO: ConstantValue Attributes (final)
// TODO: Static Stuff
self.heap_area.static_area.make(class_file, class_idx);
// TODO: ConstantValue Attributes (final)
// TODO: Push clinit function
self.class_store.set_init(class_idx, true);
Ok(())
}
fn prepare_invoke_static(&mut self, class_index: usize, method_name: &String, arguments: &[Value]) -> Result<(), Error> {