@@ -1105,17 +1105,32 @@ lookupJNINative(J9VMThread *currentThread, J9NativeLibrary *nativeLibrary, J9Met
1105
1105
#if JAVA_SPEC_VERSION >= 17
1106
1106
if (NULL == nativeLibrary) {
1107
1107
internalAcquireVMAccess (currentThread);
1108
- j9object_t entryName = vm->memoryManagerFunctions ->j9gc_createJavaLangString (currentThread, (U_8*)symbolName, strlen (symbolName), 0 );
1108
+ J9MemoryManagerFunctions *mmFuncs = vm->memoryManagerFunctions ;
1109
+ j9object_t entryName = mmFuncs->j9gc_createJavaLangString (currentThread, (U_8*)symbolName, strlen (symbolName), 0 );
1109
1110
if (NULL != entryName) {
1110
- j9object_t classLoaderObject = J9_CLASS_FROM_METHOD (nativeMethod)->classLoader ->classLoaderObject ;
1111
- J9Method *findNativeMethod = J9VMJAVALANGCLASSLOADER_FINDNATIVE_METHOD (vm);
1112
- UDATA args[] = {(UDATA)classLoaderObject, (UDATA)entryName};
1113
- internalRunStaticMethod (currentThread, findNativeMethod, TRUE , (sizeof (args) / sizeof (UDATA)), args);
1114
- functionAddress = (UDATA*)(*(U_64*)&(currentThread->returnValue ));
1111
+ #if JAVA_SPEC_VERSION >= 24
1112
+ J9ROMMethod *nativeROMMethod = J9_ROM_METHOD_FROM_RAM_METHOD (nativeMethod);
1113
+ j9object_t javaName = mmFuncs->j9gc_createJavaLangStringWithUTFCache (currentThread, J9ROMMETHOD_NAME (nativeROMMethod));
1114
+ if (NULL != javaName)
1115
+ #endif /* JAVA_SPEC_VERSION >= 24 */
1116
+ {
1117
+ J9Class *nativeMethodCls = J9_CLASS_FROM_METHOD (nativeMethod);
1118
+ j9object_t classLoaderObject = nativeMethodCls->classLoader ->classLoaderObject ;
1119
+ #if JAVA_SPEC_VERSION >= 24
1120
+ j9object_t classObject = nativeMethodCls->classObject ;
1121
+ J9Method *findNativeMethod = J9VMJAVALANGCLASSLOADER_FINDNATIVE1_METHOD (vm);
1122
+ UDATA args[] = {(UDATA)classLoaderObject, (UDATA)entryName, (UDATA)classObject, (UDATA)javaName};
1123
+ #else /* JAVA_SPEC_VERSION >= 24 */
1124
+ J9Method *findNativeMethod = J9VMJAVALANGCLASSLOADER_FINDNATIVE0_METHOD (vm);
1125
+ UDATA args[] = {(UDATA)classLoaderObject, (UDATA)entryName};
1126
+ #endif /* JAVA_SPEC_VERSION >= 24 */
1127
+ internalRunStaticMethod (currentThread, findNativeMethod, TRUE , (sizeof (args) / sizeof (UDATA)), args);
1128
+ functionAddress = (UDATA*)(*(U_64*)&(currentThread->returnValue ));
1115
1129
#if defined(J9VM_OPT_JAVA_OFFLOAD_SUPPORT)
1116
- doSwitching = ((UDATA)functionAddress) & J9_NATIVE_LIBRARY_SWITCH_MASK;
1117
- functionAddress = (UDATA *)(((UDATA)functionAddress) & ~(UDATA)J9_NATIVE_LIBRARY_SWITCH_MASK);
1130
+ doSwitching = ((UDATA)functionAddress) & J9_NATIVE_LIBRARY_SWITCH_MASK;
1131
+ functionAddress = (UDATA *)(((UDATA)functionAddress) & ~(UDATA)J9_NATIVE_LIBRARY_SWITCH_MASK);
1118
1132
#endif /* defined(J9VM_OPT_JAVA_OFFLOAD_SUPPORT) */
1133
+ }
1119
1134
}
1120
1135
/* always clear pending exception, might retry later */
1121
1136
VM_VMHelpers::clearException (currentThread);
0 commit comments