--- old/src/hotspot/share/gc/g1/g1CollectedHeap.cpp 2018-08-17 13:29:31.604731098 -0400 +++ new/src/hotspot/share/gc/g1/g1CollectedHeap.cpp 2018-08-17 13:29:31.146688593 -0400 @@ -83,7 +83,6 @@ #include "oops/access.inline.hpp" #include "oops/compressedOops.inline.hpp" #include "oops/oop.inline.hpp" -#include "prims/resolvedMethodTable.hpp" #include "runtime/atomic.hpp" #include "runtime/flags/flagSetting.hpp" #include "runtime/handles.inline.hpp" @@ -3532,28 +3531,6 @@ } }; -class G1ResolvedMethodCleaningTask : public StackObj { - volatile int _resolved_method_task_claimed; -public: - G1ResolvedMethodCleaningTask() : - _resolved_method_task_claimed(0) {} - - bool claim_resolved_method_task() { - if (_resolved_method_task_claimed) { - return false; - } - return Atomic::cmpxchg(1, &_resolved_method_task_claimed, 0) == 0; - } - - // These aren't big, one thread can do it all. - void work() { - if (claim_resolved_method_task()) { - ResolvedMethodTable::unlink(); - } - } -}; - - // To minimize the remark pause times, the tasks below are done in parallel. class G1ParallelCleaningTask : public AbstractGangTask { private: @@ -3561,7 +3538,6 @@ G1StringCleaningTask _string_task; G1CodeCacheUnloadingTask _code_cache_task; G1KlassCleaningTask _klass_cleaning_task; - G1ResolvedMethodCleaningTask _resolved_method_cleaning_task; public: // The constructor is run in the VMThread. @@ -3570,8 +3546,7 @@ _unloading_occurred(unloading_occurred), _string_task(is_alive, true, G1StringDedup::is_enabled()), _code_cache_task(num_workers, is_alive, unloading_occurred), - _klass_cleaning_task(), - _resolved_method_cleaning_task() { + _klass_cleaning_task() { } // The parallel work done by all worker threads. @@ -3585,9 +3560,6 @@ // Clean the Strings. _string_task.work(worker_id); - // Clean unreferenced things in the ResolvedMethodTable - _resolved_method_cleaning_task.work(); - // Wait for all workers to finish the first code cache cleaning pass. _code_cache_task.barrier_wait(worker_id);