--- old/src/share/vm/gc/g1/g1CollectedHeap.cpp 2017-07-10 14:22:43.587119367 +0200 +++ new/src/share/vm/gc/g1/g1CollectedHeap.cpp 2017-07-10 14:22:43.486116234 +0200 @@ -95,28 +95,6 @@ // apply to TLAB allocation, which is not part of this interface: it // is done by clients of this interface.) -// Local to this file. - -class RefineCardTableEntryClosure: public CardTableEntryClosure { - bool _concurrent; -public: - RefineCardTableEntryClosure() : _concurrent(true) { } - - bool do_card_ptr(jbyte* card_ptr, uint worker_i) { - G1CollectedHeap::heap()->g1_rem_set()->refine_card_concurrently(card_ptr, worker_i); - - if (_concurrent && SuspendibleThreadSet::should_yield()) { - // Caller will actually yield. - return false; - } - // Otherwise, we finished successfully; return true. - return true; - } - - void set_concurrent(bool b) { _concurrent = b; } -}; - - class RedirtyLoggedCardTableEntryClosure : public CardTableEntryClosure { private: size_t _num_dirtied; @@ -1582,7 +1560,6 @@ _g1_rem_set(NULL), _cg1r(NULL), _g1mm(NULL), - _refine_cte_cl(NULL), _preserved_marks_set(true /* in_c_heap */), _secondary_free_list("Secondary Free List", new SecondaryFreeRegionListMtSafeChecker()), _old_set("Old Set", false /* humongous */, new OldRegionSetMtSafeChecker()), @@ -1661,10 +1638,8 @@ } jint G1CollectedHeap::initialize_concurrent_refinement() { - _refine_cte_cl = new RefineCardTableEntryClosure(); - jint ecode = JNI_OK; - _cg1r = ConcurrentG1Refine::create(_refine_cte_cl, &ecode); + _cg1r = ConcurrentG1Refine::create(_g1_rem_set->refine_card_concurrently_closure(), &ecode); return ecode; } @@ -1821,7 +1796,7 @@ return ecode; } - JavaThread::dirty_card_queue_set().initialize(_refine_cte_cl, + JavaThread::dirty_card_queue_set().initialize(_g1_rem_set->refine_card_concurrently_closure(), DirtyCardQ_CBL_mon, DirtyCardQ_FL_lock, (int)concurrent_g1_refine()->yellow_zone(), @@ -5167,10 +5142,6 @@ used_unlocked(), recalculate_used()); } -void G1CollectedHeap::set_refine_cte_cl_concurrency(bool concurrent) { - _refine_cte_cl->set_concurrent(concurrent); -} - bool G1CollectedHeap::is_in_closed_subset(const void* p) const { HeapRegion* hr = heap_region_containing(p); return hr->is_in(p);