@@ -8,6 +8,7 @@ use ristretto_classloader::Value;
88use ristretto_macros:: intrinsic_method;
99use std:: hash:: { DefaultHasher , Hash , Hasher } ;
1010use 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 ) ]
130131pub ( 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) ]
151154mod 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