@@ -22,8 +22,7 @@ oldCode: |-
2222 // Run javac -h to generate the .h file, then write C:
2323 // JNIEXPORT int JNICALL Java_CallCFromJava_greet(
2424 // JNIEnv *env, jclass clazz, jstring str) {
25- // const char* name =
26- // (*env)->GetStringUTFChars(env, str, NULL);
25+ // const char* name = (*env)->GetStringUTFChars(env, str, NULL);
2726 // printf("Hello %s\n", name);
2827 // return 0;
2928 // }
@@ -32,17 +31,11 @@ modernCode: |-
3231 try (var arena = Arena.ofConfined()) {
3332 // Use any system library directly — no C wrapper needed
3433 var stdlib = Linker.nativeLinker().defaultLookup();
35- var foreignFuncAddr =
36- stdlib.find("strlen").orElseThrow();
37- var strlenSig =
38- FunctionDescriptor.of(
39- ValueLayout.JAVA_LONG, ValueLayout.ADDRESS);
40- var strlenMethod =
41- Linker.nativeLinker()
42- .downcallHandle(foreignFuncAddr, strlenSig);
43- var ret = (long) strlenMethod.invokeExact(
44- arena.allocateFrom("Bambi"));
45- System.out.println("Return value " + ret); // 5
34+ var foreignFuncAddr = stdlib.find("strlen").orElseThrow();
35+ var strlenSig = FunctionDescriptor.of(ValueLayout.JAVA_LONG, ValueLayout.ADDRESS);
36+ var strlenMethod = Linker.nativeLinker() .downcallHandle(foreignFuncAddr, strlenSig);
37+ var ret = (long) strlenMethod.invokeExact(arena.allocateFrom("Bambi"));
38+ IO.println("Return value " + ret); // 5
4639 }
4740 }
4841
0 commit comments