--- old/src/share/vm/code/codeCache.hpp 2016-02-16 20:56:26.869873933 -0500 +++ new/src/share/vm/code/codeCache.hpp 2016-02-16 20:56:26.748873138 -0500 @@ -153,12 +153,14 @@ // to "true" iff some code got unloaded. static void do_unloading(BoolObjectClosure* is_alive, bool unloading_occurred); static void asserted_non_scavengable_nmethods_do(CodeBlobClosure* f = NULL) PRODUCT_RETURN; - static void scavenge_root_nmethods_do(CodeBlobClosure* f); + // Apply f to every live code blob in scavengable nmethods. Remove nmethods from + // the list if f->fix_relocations and the nmethod no longer has scavengable oops. + static void scavenge_root_nmethods_do(CodeBlobToOopClosure* f); static nmethod* scavenge_root_nmethods() { return _scavenge_root_nmethods; } static void set_scavenge_root_nmethods(nmethod* nm) { _scavenge_root_nmethods = nm; } static void add_scavenge_root_nmethod(nmethod* nm); - static void drop_scavenge_root_nmethod(nmethod* nm); + static void drop_scavenge_root_nmethod(nmethod* nm, nmethod* prev = NULL); static void prune_scavenge_root_nmethods(); // Printing/debugging