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;
}
}