< prev index next >
src/hotspot/share/gc/g1/g1OopClosures.inline.hpp
Print this page
rev 49826 : imported patch 6672778-partial-queue-trimming
rev 49827 : imported patch 6672778-refactoring
@@ -65,10 +65,14 @@
if (state.is_humongous()) {
_g1h->set_humongous_is_live(obj);
}
}
+inline void G1ScanClosureBase::trim_queue_partially() {
+ _par_scan_state->trim_queue_partially();
+}
+
template <class T>
inline void G1ScanEvacuatedObjClosure::do_oop_nv(T* p) {
T heap_oop = RawAccess<>::oop_load(p);
if (CompressedOops::is_null(heap_oop)) {
@@ -223,10 +227,14 @@
// well-formed. So we have to read its size from its from-space
// image which we know should not be changing.
_cm->mark_in_next_bitmap(_worker_id, to_obj, from_obj->size());
}
+void G1ParCopyHelper::trim_queue_partially() {
+ _par_scan_state->trim_queue_partially();
+}
+
template <G1Barrier barrier, G1Mark do_mark_object>
template <class T>
void G1ParCopyClosure<barrier, do_mark_object>::do_oop_work(T* p) {
T heap_oop = RawAccess<>::oop_load(p);
@@ -267,10 +275,11 @@
// closure during an initial mark pause then attempt to mark the object.
if (do_mark_object == G1MarkFromRoot) {
mark_object(obj);
}
}
+ trim_queue_partially();
}
template <class T> void G1RebuildRemSetClosure::do_oop_nv(T* p) {
oop const obj = RawAccess<MO_VOLATILE>::oop_load(p);
if (obj == NULL) {
< prev index next >