< prev index next >
src/share/vm/gc/shenandoah/shenandoahConcurrentThread.cpp
Print this page
rev 13125 : imported patch update-refs.patch
*** 171,180 ****
--- 171,198 ----
GCTraceTime(Info, gc) time("Concurrent evacuation ", gc_timer, GCCause::_no_gc, true);
TraceCollectorStats tcs(heap->monitoring_support()->concurrent_collection_counters());
heap->do_evacuation();
}
+ // Do an update-refs phase if required.
+ if (check_cancellation()) return;
+
+ if (heap->shenandoahPolicy()->update_refs_early()) {
+
+ VM_ShenandoahPreUpdateRoots pre_update_roots;
+ VMThread::execute(&pre_update_roots);
+
+ {
+ GCTraceTime(Info, gc) time("Concurrent update references ", gc_timer, GCCause::_no_gc, true);
+ heap->concurrent_update_heap_references();
+ }
+ if (check_cancellation()) return;
+
+ VM_ShenandoahPostUpdateRoots post_update_roots;
+ VMThread::execute(&post_update_roots);
+ }
+
// Prepare for the next normal cycle:
if (check_cancellation()) return;
{
GCTraceTime(Info, gc) time("Concurrent reset bitmaps", gc_timer, GCCause::_no_gc);
< prev index next >