< prev index next >
src/share/vm/gc/shenandoah/shenandoahConcurrentThread.cpp
Print this page
rev 13068 : [mq]: partial.patch
*** 51,60 ****
--- 51,62 ----
while (!should_terminate()) {
if (in_graceful_shutdown()) {
break;
} else if (is_full_gc()) {
service_fullgc_cycle();
+ } else if (heap->shenandoahPolicy()->should_start_partial_gc()) {
+ service_partial_cycle();
} else if (heap->shenandoahPolicy()->should_start_concurrent_mark(heap->used(), heap->capacity())) {
service_normal_cycle();
if (heap->is_evacuation_in_progress()) {
heap->set_evacuation_in_progress_concurrently(false);
}
*** 71,80 ****
--- 73,88 ----
while (!should_terminate()) {
Thread::current()->_ParkEvent->park(10);
}
}
+ void ShenandoahConcurrentThread::service_partial_cycle() {
+ GCIdMark gc_id_mark;
+ VM_ShenandoahPartialGC partial_gc;
+ VMThread::execute(&partial_gc);
+ }
+
void ShenandoahConcurrentThread::service_normal_cycle() {
if (check_cancellation()) return;
ShenandoahHeap* heap = ShenandoahHeap::heap();
< prev index next >