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