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