src/share/vm/gc_implementation/g1/concurrentMark.cpp

Print this page
rev 6796 : [mq]: templateOopIterate
rev 6801 : imported patch defaultToTrue

*** 342,352 **** *n = k; return true; } } ! template<class OopClosureClass> bool CMMarkStack::drain(OopClosureClass* cl, CMBitMap* bm, bool yield_after) { assert(!_drain_in_progress || !_drain_in_progress_yields || yield_after || SafepointSynchronize::is_at_safepoint(), "Drain recursion must be yield-safe."); bool res = true; --- 342,352 ---- *n = k; return true; } } ! template<bool nv, typename OopClosureClass> bool CMMarkStack::drain(OopClosureClass* cl, CMBitMap* bm, bool yield_after) { assert(!_drain_in_progress || !_drain_in_progress_yields || yield_after || SafepointSynchronize::is_at_safepoint(), "Drain recursion must be yield-safe."); bool res = true;
*** 356,366 **** oop newOop = pop(); assert(G1CollectedHeap::heap()->is_in_reserved(newOop), "Bad pop"); assert(newOop->is_oop(), "Expected an oop"); assert(bm == NULL || bm->isMarked((HeapWord*)newOop), "only grey objects on this stack"); ! newOop->oop_iterate(cl); if (yield_after && _cm->do_yield_check()) { res = false; break; } } --- 356,366 ---- oop newOop = pop(); assert(G1CollectedHeap::heap()->is_in_reserved(newOop), "Bad pop"); assert(newOop->is_oop(), "Expected an oop"); assert(bm == NULL || bm->isMarked((HeapWord*)newOop), "only grey objects on this stack"); ! newOop->oop_iterate<nv>(cl); if (yield_after && _cm->do_yield_check()) { res = false; break; } }