diff -r 882004b9e7e1 -r 2c6ef90f030a src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp --- a/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp Tue Jul 01 09:03:55 2014 +0200 +++ b/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp Mon Jul 07 10:12:40 2014 +0200 @@ -929,7 +929,10 @@ void HeapRegionRemSet::remove_strong_code_root(nmethod* nm) { assert(nm != NULL, "sanity"); - _code_roots.remove(nm); + assert_locked_or_safepoint(CodeCache_lock); + + _code_roots.remove_lock_free(nm); + // Check that there were no duplicates guarantee(!_code_roots.contains(nm), "duplicate entry found"); }