< prev index next >

src/share/vm/gc/shenandoah/shenandoahConcurrentThread.cpp

Print this page
rev 13068 : [mq]: partial.patch

@@ -51,10 +51,12 @@
   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,10 +73,16 @@
   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 >