--- old/src/share/vm/code/codeCache.cpp 2015-08-27 08:36:38.854134395 +0200 +++ new/src/share/vm/code/codeCache.cpp 2015-08-27 08:36:38.782134393 +0200 @@ -746,17 +746,14 @@ void CodeCache::gc_epilogue() { assert_locked_or_safepoint(CodeCache_lock); NMethodIterator iter; - while(iter.next()) { + while(iter.next_alive()) { nmethod* nm = iter.method(); - if (!nm->is_zombie()) { - if (needs_cache_clean()) { - // Clean ICs of unloaded nmethods as well because they may reference other - // unloaded nmethods that may be flushed earlier in the sweeper cycle. - nm->cleanup_inline_caches(); - } - DEBUG_ONLY(nm->verify()); - DEBUG_ONLY(nm->verify_oop_relocations()); + assert(!nm->is_unloaded(), "Tautology"); + if (needs_cache_clean()) { + nm->cleanup_inline_caches(); } + DEBUG_ONLY(nm->verify()); + DEBUG_ONLY(nm->verify_oop_relocations()); } set_needs_cache_clean(false); prune_scavenge_root_nmethods();