Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions runtime/oti/j9consts.h
Original file line number Diff line number Diff line change
Expand Up @@ -337,8 +337,7 @@ extern "C" {
#define J9_EXTENDED_RUNTIME_REDUCE_CPU_MONITOR_OVERHEAD 0x80000000

/* constants for J9JavaVM.extendedRuntimeFlags2 */
/* Bit 0x1 is free to use. */
#define J9_EXTENDED_RUNTIME2_UNUSED_0x1 0x1
#define J9_EXTENDED_RUNTIME2_KEEP_JNI_IDS 0x1
#define J9_EXTENDED_RUNTIME2_COMPRESS_OBJECT_REFERENCES 0x2
#define J9_EXTENDED_RUNTIME2_ENABLE_PREVIEW 0x4
#define J9_EXTENDED_RUNTIME2_LOAD_AGENT_MODULE 0x8
Expand Down
2 changes: 2 additions & 0 deletions runtime/oti/jvminit.h
Original file line number Diff line number Diff line change
Expand Up @@ -355,6 +355,8 @@ enum INIT_STAGE {
#define VMOPT_XXHANDLESIGUSR2 "-XX:+HandleSIGUSR2"
#define VMOPT_XXHEAPDUMPONOOM "-XX:+HeapDumpOnOutOfMemoryError"
#define VMOPT_XXNOHEAPDUMPONOOM "-XX:-HeapDumpOnOutOfMemoryError"
#define VMOPT_XXKEEPJNIIDS "-XX:+KeepJNIIDs"
#define VMOPT_XXNOKEEPJNIIDS "-XX:-KeepJNIIDs"
#define VMOPT_XDUMP_EXIT_OUTOFMEMORYERROR "-Xdump:exit:events=systhrow,filter=java/lang/OutOfMemoryError"
#define VMOPT_XDUMP_EXIT_OUTOFMEMORYERROR_DISABLE "-Xdump:exit:none:events=systhrow,filter=java/lang/OutOfMemoryError"

Expand Down
7 changes: 5 additions & 2 deletions runtime/vm/classallocation.c
Original file line number Diff line number Diff line change
Expand Up @@ -376,8 +376,11 @@ freeClassLoader(J9ClassLoader *classLoader, J9JavaVM *javaVM, J9VMThread *vmThre
RELEASE_CLASS_LOADER_BLOCKS_MUTEX(javaVM);
}

if (classLoader->jniIDs != NULL) {
pool_kill(classLoader->jniIDs);
if (NULL != classLoader->jniIDs) {
if (J9_ARE_NO_BITS_SET(javaVM->extendedRuntimeFlags2, J9_EXTENDED_RUNTIME2_KEEP_JNI_IDS)) {
pool_kill(classLoader->jniIDs);
}
classLoader->jniIDs = NULL;
}

if (NULL != classLoader->classHashTable) {
Expand Down
10 changes: 10 additions & 0 deletions runtime/vm/jvminit.c
Original file line number Diff line number Diff line change
Expand Up @@ -4074,6 +4074,16 @@ processVMArgsFromFirstToLast(J9JavaVM * vm)
}
#endif /* JAVA_SPEC_VERSION >= 19 */

{
IDATA keepJNIIDs = FIND_AND_CONSUME_VMARG(EXACT_MATCH, VMOPT_XXKEEPJNIIDS, NULL);
IDATA noKeepJNIIDs = FIND_AND_CONSUME_VMARG(EXACT_MATCH, VMOPT_XXNOKEEPJNIIDS, NULL);
if (keepJNIIDs > noKeepJNIIDs) {
vm->extendedRuntimeFlags2 |= J9_EXTENDED_RUNTIME2_KEEP_JNI_IDS;
} else if (keepJNIIDs < noKeepJNIIDs) {
vm->extendedRuntimeFlags2 &= ~(UDATA)J9_EXTENDED_RUNTIME2_KEEP_JNI_IDS;
}
}

return JNI_OK;
}

Expand Down