< prev index next >
src/hotspot/share/gc/g1/g1OopClosures.inline.hpp
Print this page
rev 49677 : imported patch 8200426-g1h-refactoring
rev 49678 : imported patch 8200426-sangheon-review
rev 49680 : imported patch 6672778-partial-queue-trimming
rev 49681 : [mq]: 6672778-refactoring
*** 65,74 ****
--- 65,78 ----
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,232 ****
--- 227,240 ----
// 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,276 ****
--- 275,285 ----
// 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 >