RFR: Update nmethod caching and clean up unused/duplicate methods [v8]

Vladimir Kozlov kvn at openjdk.org
Mon Jun 16 18:36:50 UTC 2025


On Mon, 16 Jun 2025 15:55:52 GMT, Ashutosh Mehra <asmehra at openjdk.org> wrote:

>> If @adinn don't have any more comments you can integrate.
>> 
>> We may need few more AOT fixes in mainline before marge from it.
>
> GHA passed. Thanks @vnkozlov and @adinn for the reviews.

@ashu-mehra  I submitted testing after this was integrated and one closed test crashed on MacOS-aarch64 during "product" run when GC trying to purge nmethod:


#  Internal Error (/workspace/open/src/hotspot/share/nmt/mallocHeader.inline.hpp:107), pid=55426, tid=16643
#  fatal error: NMT corruption: Block at 0x00000001209f4088: header canary broken
#
# JRE version: Java(TM) SE Runtime Environment (25.0) (fastdebug build 25-internal-LTS-2025-06-16-1707161.vladimir.kozlov.leyden)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 25-internal-LTS-2025-06-16-1707161.vladimir.kozlov.leyden, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, bsd-aarch64)

Stack: [0x000000016e2fc000,0x000000016e4ff000],  sp=0x000000016e4fddf0,  free space=2055k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.dylib+0x127c010]  VMError::report(outputStream*, bool)+0x1b00  (mallocHeader.inline.hpp:107)
V  [libjvm.dylib+0x127f8b8]  VMError::report_and_die(int, char const*, char const*, char*, Thread*, unsigned char*, void const*, void const*, char const*, int, unsigned long)+0x55c
V  [libjvm.dylib+0x5cf650]  DebuggingContext::~DebuggingContext()+0x0
V  [libjvm.dylib+0xdeed80]  MallocHeader* MallocHeader::resolve_checked_impl<void*, MallocHeader*>(void*)+0x19c
V  [libjvm.dylib+0xdee630]  MallocTracker::record_free_block(void*)+0x44
V  [libjvm.dylib+0xf20f84]  os::free(void*)+0xa8
V  [libjvm.dylib+0xec194c]  nmethod::purge(bool)+0x158
V  [libjvm.dylib+0x4d5fe0]  ClassUnloadingContext::purge_nmethods()+0xac
V  [libjvm.dylib+0x71961c]  G1CollectedHeap::unload_classes_and_code(char const*, BoolObjectClosure*, GCTimer*)+0x434
V  [libjvm.dylib+0x72dd40]  G1ConcurrentMark::remark()+0x2b0
V  [libjvm.dylib+0x7f67e4]  VM_G1PauseConcurrent::doit()+0x1b8
V  [libjvm.dylib+0x128743c]  VM_Operation::evaluate()+0x11c
V  [libjvm.dylib+0x12a4e20]  VMThread::evaluate_operation(VM_Operation*)+0x114
V  [libjvm.dylib+0x12a5924]  VMThread::inner_execute(VM_Operation*)+0x320
V  [libjvm.dylib+0x12a4ad0]  VMThread::loop()+0x98
V  [libjvm.dylib+0x12a4868]  VMThread::run()+0xc0
V  [libjvm.dylib+0x11be0d4]  Thread::call_run()+0xf0
V  [libjvm.dylib+0xf28da4]  thread_native_entry(Thread*)+0x140
C  [libsystem_pthread.dylib+0x726c]  _pthread_start+0x94
VM_Operation (0x000000016dac2bf0): G1PauseRemark, mode: safepoint, requested by thread 0x0000000147841810

-------------

PR Comment: https://git.openjdk.org/leyden/pull/71#issuecomment-2977654682


More information about the leyden-dev mailing list