< prev index next >

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

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

@@ -39,10 +39,11 @@
 #include "gc/shenandoah/shenandoahHeapRegion.hpp"
 #include "gc/shenandoah/shenandoahHeapRegionSet.hpp"
 #include "gc/shenandoah/shenandoahHumongous.hpp"
 #include "gc/shenandoah/shenandoahMarkCompact.hpp"
 #include "gc/shenandoah/shenandoahMonitoringSupport.hpp"
+#include "gc/shenandoah/shenandoahPartialGC.hpp"
 #include "gc/shenandoah/shenandoahRootProcessor.hpp"
 #include "gc/shenandoah/vm_operations_shenandoah.hpp"
 
 #include "runtime/vmThread.hpp"
 #include "services/mallocTracker.hpp"

@@ -262,10 +263,11 @@
 
   _mark_bit_map1.initialize(heap_region, bitmap_region1);
   _next_mark_bit_map = &_mark_bit_map1;
 
   _connection_matrix = new ShenandoahConnectionMatrix(_max_regions);
+  _partial_gc = new ShenandoahPartialGC(this, _max_regions);
 
   _monitoring_support = new ShenandoahMonitoringSupport(this);
 
   _concurrent_gc_thread = new ShenandoahConcurrentThread();
 

@@ -2525,10 +2527,22 @@
 
 ShenandoahConnectionMatrix* ShenandoahHeap::connection_matrix() {
   return _connection_matrix;
 }
 
+ShenandoahPartialGC* ShenandoahHeap::partial_gc() {
+  return _partial_gc;
+}
+
+void ShenandoahHeap::do_partial_collection() {
+  {
+    ShenandoahHeapLock lock(this);
+    partial_gc()->prepare();
+  }
+  partial_gc()->do_partial_collection();
+}
+
 #ifdef ASSERT
 void ShenandoahHeap::assert_heaplock_owned_by_current_thread() {
   assert(_heap_lock == locked, "must be locked");
   assert(_heap_lock_owner == Thread::current(), "must be owned by current thread");
 }
< prev index next >