Static object creation
This commit is contained in:
parent
8642dcdd6a
commit
6c0fbd179a
6 changed files with 160 additions and 29 deletions
11
src/jvm.rs
11
src/jvm.rs
|
@ -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> {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue