< prev index next >
src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.inline.hpp
Print this page
rev 50076 : Fold Partial GC into Traversal GC
@@ -40,10 +40,11 @@
shenandoah_assert_not_forwarded_except(NULL, obj, _heap->is_concurrent_traversal_in_progress() && _heap->cancelled_concgc());
shenandoah_assert_marked_next(NULL, obj);
shenandoah_assert_not_in_cset_except(NULL, obj, _heap->cancelled_concgc());
+ cl->set_base_object(obj);
if (task->is_not_chunked()) {
if (COUNT_LIVENESS) count_liveness(live_data, obj);
if (obj->is_instance()) {
// Case 1: Normal oop, process as usual.
obj->oop_iterate(cl);
@@ -60,10 +61,11 @@
}
} else {
// Case 4: Array chunk, has sensible chunk id. Process it.
do_chunked_array<T>(q, cl, obj, task->chunk(), task->pow());
}
+ cl->set_base_object(NULL);
}
inline void ShenandoahConcurrentMark::count_liveness(jushort* live_data, oop obj) {
size_t region_idx = _heap->heap_region_index_containing(obj);
ShenandoahHeapRegion* region = _heap->get_region(region_idx);
< prev index next >