Skip to content

Commit d60c719

Browse files
committed
Jvm arg
1 parent 4e6122e commit d60c719

File tree

5 files changed

+11
-11
lines changed

5 files changed

+11
-11
lines changed

jvm/src/array_class_definition.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@ use alloc::{
77
use dyn_clone::clone_trait_object;
88
use java_constants::ClassAccessFlags;
99

10-
use crate::{Result, class_definition::ClassDefinition, class_instance::ClassInstance, field::Field, method::Method, value::JavaValue};
10+
use crate::{Jvm, Result, class_definition::ClassDefinition, class_instance::ClassInstance, field::Field, method::Method, value::JavaValue};
1111

1212
#[async_trait::async_trait]
1313
pub trait ArrayClassDefinition: ClassDefinition {
1414
fn element_type_name(&self) -> String;
15-
async fn instantiate_array(&self, length: usize) -> Result<Box<dyn ClassInstance>>;
15+
async fn instantiate_array(&self, jvm: &Jvm, length: usize) -> Result<Box<dyn ClassInstance>>;
1616
}
1717

1818
clone_trait_object!(ArrayClassDefinition);
@@ -31,7 +31,7 @@ impl<T: ArrayClassDefinition> ClassDefinition for T {
3131
ClassAccessFlags::PUBLIC | ClassAccessFlags::FINAL
3232
}
3333

34-
async fn instantiate(&self) -> Result<Box<dyn ClassInstance>> {
34+
async fn instantiate(&self, _: &Jvm) -> Result<Box<dyn ClassInstance>> {
3535
panic!("Cannot instantiate array class")
3636
}
3737

jvm/src/class_definition.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ use dyn_clone::{DynClone, clone_trait_object};
55

66
use java_constants::ClassAccessFlags;
77

8-
use crate::{ArrayClassDefinition, ClassInstance, Field, JavaValue, Method, Result, as_any::AsAny};
8+
use crate::{ArrayClassDefinition, ClassInstance, Field, JavaValue, Jvm, Method, Result, as_any::AsAny};
99

1010
#[async_trait::async_trait]
1111
pub trait ClassDefinition: Sync + Send + AsAny + Debug + DynClone {
1212
fn name(&self) -> String;
1313
fn super_class_name(&self) -> Option<String>;
1414
fn access_flags(&self) -> ClassAccessFlags;
15-
async fn instantiate(&self) -> Result<Box<dyn ClassInstance>>;
15+
async fn instantiate(&self, jvm: &Jvm) -> Result<Box<dyn ClassInstance>>;
1616
fn method(&self, name: &str, descriptor: &str, is_static: bool) -> Option<Box<dyn Method>>;
1717
fn field(&self, name: &str, descriptor: &str, is_static: bool) -> Option<Box<dyn Field>>;
1818
fn fields(&self) -> Vec<Box<dyn Field>>;

jvm/src/jvm.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ impl Jvm {
121121
.await);
122122
}
123123

124-
let instance = class.definition.instantiate().await?;
124+
let instance = class.definition.instantiate(self).await?;
125125

126126
let thread_id = (self.inner.get_current_thread_id)();
127127
let mut threads = self.inner.threads.write();
@@ -152,7 +152,7 @@ impl Jvm {
152152
let class = self.resolve_class(&class_name).await?.definition;
153153
let array_class = class.as_array_class_definition().unwrap();
154154

155-
let instance = array_class.instantiate_array(length).await?;
155+
let instance = array_class.instantiate_array(self, length).await?;
156156

157157
let thread_id = (self.inner.get_current_thread_id)();
158158
let mut threads = self.inner.threads.write();

jvm_rust/src/array_class_definition.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use alloc::{
55
};
66
use core::fmt::{self, Debug, Formatter};
77

8-
use jvm::{ArrayClassDefinition, ClassInstance, Result};
8+
use jvm::{ArrayClassDefinition, ClassInstance, Jvm, Result};
99

1010
use crate::array_class_instance::ArrayClassInstanceImpl;
1111

@@ -34,7 +34,7 @@ impl ArrayClassDefinition for ArrayClassDefinitionImpl {
3434
self.inner.element_type_name.clone()
3535
}
3636

37-
async fn instantiate_array(&self, length: usize) -> Result<Box<dyn ClassInstance>> {
37+
async fn instantiate_array(&self, _: &Jvm, length: usize) -> Result<Box<dyn ClassInstance>> {
3838
Ok(Box::new(ArrayClassInstanceImpl::new(self, length)))
3939
}
4040
}

jvm_rust/src/class_definition.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use parking_lot::RwLock;
1515
use classfile::ClassInfo;
1616
use java_class_proto::JavaClassProto;
1717
use java_constants::{ClassAccessFlags, FieldAccessFlags, MethodAccessFlags};
18-
use jvm::{ClassDefinition, ClassInstance, Field, JavaType, JavaValue, Method, Result};
18+
use jvm::{ClassDefinition, ClassInstance, Field, JavaType, JavaValue, Jvm, Method, Result};
1919

2020
use crate::{class_instance::ClassInstanceImpl, field::FieldImpl, method::MethodImpl};
2121

@@ -105,7 +105,7 @@ impl ClassDefinition for ClassDefinitionImpl {
105105
self.inner.access_flags
106106
}
107107

108-
async fn instantiate(&self) -> Result<Box<dyn ClassInstance>> {
108+
async fn instantiate(&self, _: &Jvm) -> Result<Box<dyn ClassInstance>> {
109109
Ok(Box::new(ClassInstanceImpl::new(self)))
110110
}
111111

0 commit comments

Comments
 (0)