--- old/src/share/vm/gc/shared/vmGCOperations.cpp 2017-08-11 11:30:11.067642987 -0400 +++ new/src/share/vm/gc/shared/vmGCOperations.cpp 2017-08-11 11:30:10.661236319 -0400 @@ -30,6 +30,7 @@ #include "gc/shared/gcLocker.inline.hpp" #include "gc/shared/genCollectedHeap.hpp" #include "gc/shared/vmGCOperations.hpp" +#include "interpreter/oopMapCache.hpp" #include "logging/log.hpp" #include "memory/oopFactory.hpp" #include "runtime/handles.inline.hpp" @@ -111,6 +112,9 @@ void VM_GC_Operation::doit_epilogue() { assert(Thread::current()->is_Java_thread(), "just checking"); + // Clean up old interpreter OopMap entries that were replaced + // during the GC thread root traversal. + OopMapCache::cleanup_old_entries(); if (Universe::has_reference_pending_list()) { Heap_lock->notify_all(); }