Skip to content

Commit e749838

Browse files
committed
Add java.util.Random::setSeed
1 parent 7922198 commit e749838

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

java_runtime/src/classes/java/util/random.rs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ impl Random {
1818
JavaMethodProto::new("<init>", "()V", Self::init, Default::default()),
1919
JavaMethodProto::new("<init>", "(J)V", Self::init_with_seed, Default::default()),
2020
JavaMethodProto::new("nextInt", "()I", Self::next_int, Default::default()),
21+
JavaMethodProto::new("setSeed", "()J", Self::set_seed, Default::default()),
2122
],
2223
fields: vec![JavaFieldProto::new("seed", "J", Default::default())],
2324
access_flags: Default::default(),
@@ -38,10 +39,7 @@ impl Random {
3839

3940
let _: () = jvm.invoke_special(&this, "java/lang/Object", "<init>", "()V", ()).await?;
4041

41-
// TODO constant
42-
let seed = (seed ^ 0x5DEECE66D) & ((1 << 48) - 1);
43-
44-
jvm.put_field(&mut this, "seed", "J", seed).await?;
42+
let _: () = jvm.invoke_virtual(&this, "setSeed", "(J)V", (seed,)).await?;
4543

4644
Ok(())
4745
}
@@ -58,4 +56,14 @@ impl Random {
5856

5957
Ok(value)
6058
}
59+
60+
async fn set_seed(jvm: &Jvm, _: &mut RuntimeContext, mut this: ClassInstanceRef<Self>, seed: i64) -> Result<()> {
61+
tracing::debug!("java.util.Random::setSeed({:?}, {:?})", &this, seed);
62+
63+
let seed = (seed ^ 0x5DEECE66D) & ((1 << 48) - 1);
64+
65+
jvm.put_field(&mut this, "seed", "J", seed).await?;
66+
67+
Ok(())
68+
}
6169
}

0 commit comments

Comments
 (0)