diff --git a/src/share/vm/code/codeCache.cpp b/src/share/vm/code/codeCache.cpp index 0b4a99ad179389f660da7c9a607086ad0797980b..c40a377ebb36b699dd5b19a43b0193c5da123d5f 100644 --- a/src/share/vm/code/codeCache.cpp +++ b/src/share/vm/code/codeCache.cpp @@ -309,12 +309,10 @@ int CodeCache::alignment_offset() { // Mark nmethods for unloading if they contain otherwise unreachable // oops. -void CodeCache::do_unloading(BoolObjectClosure* is_alive, - OopClosure* keep_alive, - bool unloading_occurred) { +void CodeCache::do_unloading(BoolObjectClosure* is_alive, bool unloading_occurred) { assert_locked_or_safepoint(CodeCache_lock); FOR_ALL_ALIVE_NMETHODS(nm) { - nm->do_unloading(is_alive, keep_alive, unloading_occurred); + nm->do_unloading(is_alive, unloading_occurred); } } diff --git a/src/share/vm/code/codeCache.hpp b/src/share/vm/code/codeCache.hpp index b9dee54d614056f1c6b770216d4e1e7184d502e5..6187ba9a2a738e1f55ae75fc5e2d39ad52a607fc 100644 --- a/src/share/vm/code/codeCache.hpp +++ b/src/share/vm/code/codeCache.hpp @@ -130,9 +130,7 @@ class CodeCache : AllStatic { // If "unloading_occurred" is true, then unloads (i.e., breaks root links // to) any unmarked codeBlobs in the cache. Sets "marked_for_unloading" // to "true" iff some code got unloaded. - static void do_unloading(BoolObjectClosure* is_alive, - OopClosure* keep_alive, - bool unloading_occurred); + static void do_unloading(BoolObjectClosure* is_alive, bool unloading_occurred); static void oops_do(OopClosure* f) { CodeBlobToOopClosure oopc(f, /*do_marking=*/ false); blobs_do(&oopc); diff --git a/src/share/vm/code/nmethod.cpp b/src/share/vm/code/nmethod.cpp index 1b3ddf48ec20441a18e01735501cee5179d49b53..8d206ea6a29d3db81d0a56678382835804d5f734 100644 --- a/src/share/vm/code/nmethod.cpp +++ b/src/share/vm/code/nmethod.cpp @@ -1472,9 +1472,7 @@ void nmethod::flush_dependencies(BoolObjectClosure* is_alive) { // If this oop is not live, the nmethod can be unloaded. -bool nmethod::can_unload(BoolObjectClosure* is_alive, - OopClosure* keep_alive, - oop* root, bool unloading_occurred) { +bool nmethod::can_unload(BoolObjectClosure* is_alive, oop* root, bool unloading_occurred) { assert(root != NULL, "just checking"); oop obj = *root; if (obj == NULL || is_alive->do_object_b(obj)) { @@ -1583,8 +1581,7 @@ void nmethod::post_compiled_method_unload() { // GC to unload an nmethod if it contains otherwise unreachable // oops. -void nmethod::do_unloading(BoolObjectClosure* is_alive, - OopClosure* keep_alive, bool unloading_occurred) { +void nmethod::do_unloading(BoolObjectClosure* is_alive, bool unloading_occurred) { // Make sure the oop's ready to receive visitors assert(!is_zombie() && !is_unloaded(), "should not call follow on zombie or unloaded nmethod"); @@ -1672,7 +1669,7 @@ void nmethod::do_unloading(BoolObjectClosure* is_alive, (r->oop_addr() >= oops_begin() && r->oop_addr() < oops_end()), "oop must be found in exactly one place"); if (r->oop_is_immediate() && r->oop_value() != NULL) { - if (can_unload(is_alive, keep_alive, r->oop_addr(), unloading_occurred)) { + if (can_unload(is_alive, r->oop_addr(), unloading_occurred)) { return; } } @@ -1684,7 +1681,7 @@ void nmethod::do_unloading(BoolObjectClosure* is_alive, // Scopes for (oop* p = oops_begin(); p < oops_end(); p++) { if (*p == Universe::non_oop_word()) continue; // skip non-oops - if (can_unload(is_alive, keep_alive, p, unloading_occurred)) { + if (can_unload(is_alive, p, unloading_occurred)) { return; } } diff --git a/src/share/vm/code/nmethod.hpp b/src/share/vm/code/nmethod.hpp index a64e9ff71b89c225107b8d105d2437e29587c6d5..fbd0b2cdb85f3b98919ed606e955ff78bd5d175b 100644 --- a/src/share/vm/code/nmethod.hpp +++ b/src/share/vm/code/nmethod.hpp @@ -556,10 +556,8 @@ public: void set_method(Method* method) { _method = method; } // GC support - void do_unloading(BoolObjectClosure* is_alive, OopClosure* keep_alive, - bool unloading_occurred); - bool can_unload(BoolObjectClosure* is_alive, OopClosure* keep_alive, - oop* root, bool unloading_occurred); + void do_unloading(BoolObjectClosure* is_alive, bool unloading_occurred); + bool can_unload(BoolObjectClosure* is_alive, oop* root, bool unloading_occurred); void preserve_callee_argument_oops(frame fr, const RegisterMap *reg_map, OopClosure* f); diff --git a/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp b/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp index d26749e2667cf7f1ba569768b37e3f82d746240d..203821d2fcdaa380072b78f42633fb04ab7dc381 100644 --- a/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp +++ b/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp @@ -5954,9 +5954,7 @@ void CMSCollector::refProcessingWork(bool asynch, bool clear_all_soft_refs) { bool purged_class = SystemDictionary::do_unloading(&_is_alive_closure); // Follow CodeCache roots and unload any methods marked for unloading - CodeCache::do_unloading(&_is_alive_closure, - &cmsKeepAliveClosure, - purged_class); + CodeCache::do_unloading(&_is_alive_closure, purged_class); cmsDrainMarkingStackClosure.do_void(); verify_work_stacks_empty(); diff --git a/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp b/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp index 67eac907cdee40e330f7b878529813d34fe5d555..55925da896ccec0b2fc703bb8e7db3c59c8c7cef 100644 --- a/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp +++ b/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp @@ -151,9 +151,7 @@ void G1MarkSweep::mark_sweep_phase1(bool& marked_for_unloading, // Follow code cache roots (has to be done after system dictionary, // assumes all live klasses are marked) - CodeCache::do_unloading(&GenMarkSweep::is_alive, - &GenMarkSweep::keep_alive, - purged_class); + CodeCache::do_unloading(&GenMarkSweep::is_alive, purged_class); GenMarkSweep::follow_stack(); // Update subklass/sibling/implementor links of live klasses diff --git a/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp b/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp index 1c59966eed1c58cf591a046ec72f91ae314db1c8..44e764f7ae78c9e6ff7609cfa8c8767aaa7e7459 100644 --- a/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp +++ b/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp @@ -521,8 +521,7 @@ void PSMarkSweep::mark_sweep_phase1(bool clear_all_softrefs) { bool purged_class = SystemDictionary::do_unloading(is_alive_closure()); // Follow code cache roots - CodeCache::do_unloading(is_alive_closure(), mark_and_push_closure(), - purged_class); + CodeCache::do_unloading(is_alive_closure(), purged_class); follow_stack(); // Flush marking stack // Update subklass/sibling/implementor links of live klasses diff --git a/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp b/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp index fe8ec1780b6ae38f0357a7327f533ae885b2fe84..7a07762127735f4900c8757b627fd647ffb3928b 100644 --- a/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp +++ b/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp @@ -2375,8 +2375,7 @@ void PSParallelCompact::marking_phase(ParCompactionManager* cm, bool purged_class = SystemDictionary::do_unloading(is_alive_closure()); // Follow code cache roots. - CodeCache::do_unloading(is_alive_closure(), &mark_and_push_closure, - purged_class); + CodeCache::do_unloading(is_alive_closure(), purged_class); cm->follow_marking_stacks(); // Flush marking stack. // Update subklass/sibling/implementor links of live klasses diff --git a/src/share/vm/memory/genMarkSweep.cpp b/src/share/vm/memory/genMarkSweep.cpp index 5ab72e4e97dcb2c11f6f716bd2fb5e646c722975..91fe3957c6acfa1180e99462a0df39f809a05cbc 100644 --- a/src/share/vm/memory/genMarkSweep.cpp +++ b/src/share/vm/memory/genMarkSweep.cpp @@ -291,7 +291,7 @@ void GenMarkSweep::mark_sweep_phase1(int level, bool purged_class = SystemDictionary::do_unloading(&is_alive); // Follow code cache roots - CodeCache::do_unloading(&is_alive, &keep_alive, purged_class); + CodeCache::do_unloading(&is_alive, purged_class); follow_stack(); // Flush marking stack // Update subklass/sibling/implementor links of live klasses