Skip to content

Commit 99b3acd

Browse files
Merge pull request #567 from theseus-rs/implement-cds-log-lambda-form-invoker
feat: implement jdk/internal/misc/CDS.logLambdaFormInvoker(Ljava/lang/String;)V
2 parents 25c852b + 651f4bf commit 99b3acd

File tree

1 file changed

+14
-7
lines changed
  • ristretto_vm/src/intrinsic_methods/jdk/internal/misc

1 file changed

+14
-7
lines changed

ristretto_vm/src/intrinsic_methods/jdk/internal/misc/cds.rs

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use ristretto_classloader::Value;
88
use ristretto_macros::intrinsic_method;
99
use std::hash::{DefaultHasher, Hash, Hasher};
1010
use std::sync::Arc;
11+
use tracing::debug;
1112

1213
#[intrinsic_method(
1314
"jdk/internal/misc/CDS.defineArchivedModules(Ljava/lang/ClassLoader;Ljava/lang/ClassLoader;)V",
@@ -129,9 +130,11 @@ pub(crate) async fn is_sharing_enabled_0(
129130
#[async_recursion(?Send)]
130131
pub(crate) async fn log_lambda_form_invoker(
131132
_thread: Arc<Thread>,
132-
_parameters: Parameters,
133+
mut parameters: Parameters,
133134
) -> Result<Option<Value>> {
134-
todo!("jdk.internal.misc.CDS.logLambdaFormInvoker(Ljava/lang/String;)V")
135+
let log_line = parameters.pop()?.as_string()?;
136+
debug!("CDS.logLambdaFormInvoker: {log_line}");
137+
Ok(None)
135138
}
136139

137140
#[intrinsic_method(
@@ -150,6 +153,7 @@ pub(crate) async fn needs_class_init_barrier_0(
150153
#[cfg(test)]
151154
mod tests {
152155
use super::*;
156+
use crate::JavaObject;
153157

154158
#[tokio::test]
155159
#[should_panic(
@@ -229,12 +233,15 @@ mod tests {
229233
}
230234

231235
#[tokio::test]
232-
#[should_panic(
233-
expected = "not yet implemented: jdk.internal.misc.CDS.logLambdaFormInvoker(Ljava/lang/String;)V"
234-
)]
235-
async fn test_log_lambda_form_invoker() {
236+
async fn test_log_lambda_form_invoker() -> Result<()> {
236237
let (_vm, thread) = crate::test::thread().await.expect("thread");
237-
let _ = log_lambda_form_invoker(thread, Parameters::default()).await;
238+
let line = "Test log from logLambdaFormInvoker"
239+
.to_object(&thread)
240+
.await?;
241+
let parameters = Parameters::new(vec![line]);
242+
let result = log_lambda_form_invoker(thread, parameters).await?;
243+
assert!(result.is_none());
244+
Ok(())
238245
}
239246

240247
#[tokio::test]

0 commit comments

Comments
 (0)