--- old/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp 2014-09-29 13:41:07.542345758 +0200 +++ new/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp 2014-09-29 13:41:07.446349085 +0200 @@ -4171,16 +4171,14 @@ void G1CollectedHeap::remove_self_forwarding_pointers() { double remove_self_forwards_start = os::elapsedTime(); - HeapRegionClaimer hrclaimer; - G1ParRemoveSelfForwardPtrsTask rsfp_task(this, &hrclaimer); - if (G1CollectedHeap::use_parallel_gc_threads()) { set_par_threads(); - hrclaimer.initialize(workers()->active_workers()); + G1ParRemoveSelfForwardPtrsTask rsfp_task(this); workers()->run_task(&rsfp_task); set_par_threads(0); } else { - rsfp_task.work(0); + RemoveSelfForwardPtrHRClosure rsfp(this); + _g1h->collection_set_iterate(&rsfp); } // Now restore saved marks, if any.