< prev index next >

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

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

@@ -35,10 +35,11 @@
 class ShenandoahHeapRegionClosure;
 class ShenandoahHeapRegionSet;
 class ShenandoahCollectionSet;
 class ShenandoahFreeSet;
 class ShenandoahConcurrentMark;
+class ShenandoahPartialGC;
 class ShenandoahConcurrentThread;
 class ShenandoahMonitoringSupport;
 
 class SCMUpdateRefsClosure: public OopClosure {
 private:

@@ -142,12 +143,11 @@
   ShenandoahFreeSet* _free_regions;
   ShenandoahCollectionSet* _collection_set;
 
   ShenandoahHeapRegion* _currentAllocationRegion;
   ShenandoahConcurrentMark* _scm;
-
-
+  ShenandoahPartialGC* _partial_gc;
 
   ShenandoahConcurrentThread* _concurrent_gc_thread;
 
   ShenandoahMonitoringSupport* _monitoring_support;
 

@@ -297,10 +297,11 @@
   static address concurrent_mark_in_progress_addr();
 
   void prepare_for_concurrent_evacuation();
   void evacuate_and_update_roots();
 
+  void do_partial_collection();
   void verify_matrix();
 private:
   void set_evacuation_in_progress(bool in_progress);
 public:
   inline bool is_evacuation_in_progress();

@@ -340,10 +341,11 @@
   inline bool try_cancel_concgc() const;
   void clear_cancelled_concgc();
 
   ShenandoahHeapRegionSet* regions() { return _ordered_regions;}
   ShenandoahFreeSet* free_regions();
+  ShenandoahCollectionSet* collection_set() { return _collection_set; }
   void clear_free_regions();
   void add_free_region(ShenandoahHeapRegion* r);
 
   ShenandoahConnectionMatrix* connection_matrix();
 

@@ -390,10 +392,11 @@
 
   VirtualSpace* storage() const;
 
   ShenandoahMonitoringSupport* monitoring_support();
   ShenandoahConcurrentMark* concurrentMark() { return _scm;}
+  ShenandoahPartialGC* partial_gc();
 
   ReferenceProcessor* ref_processor() { return _ref_processor;}
 
   WorkGang* workers() const { return _workers;}
 

@@ -403,10 +406,11 @@
   ShenandoahHeapRegion* next_compaction_region(const ShenandoahHeapRegion* r);
 
   void heap_region_iterate(ShenandoahHeapRegionClosure* blk, bool skip_dirty_regions = false, bool skip_humongous_continuation = false) const;
 
   void verify_heap_after_evacuation();
+  void verify_heap_after_marking();
 
   // Delete entries for dead interned string and clean up unreferenced symbols
   // in symbol table, possibly in parallel.
   void unlink_string_and_symbol_table(BoolObjectClosure* is_alive, bool unlink_strings = true, bool unlink_symbols = true);
 

@@ -446,30 +450,31 @@
 
   inline bool mark_next_no_checks(oop obj) const;
 
   void parallel_evacuate();
 
+public:
   inline oop atomic_compare_exchange_oop(oop n, narrowOop* addr, oop c);
   inline oop atomic_compare_exchange_oop(oop n, oop* addr, oop c);
 
+private:
   void evacuate_region(ShenandoahHeapRegion* from_region, ShenandoahHeapRegion* to_region);
 
 #ifdef ASSERT
   void verify_evacuated_region(ShenandoahHeapRegion* from_region);
 #endif
 
   inline void copy_object(oop p, HeapWord* s, size_t words);
   void verify_copy(oop p, oop c);
   void verify_heap_size_consistency();
-  void verify_heap_after_marking();
+private:
   void verify_heap_after_update_refs();
   void verify_regions_after_update_refs();
 
   void ref_processing_init();
 
   GCTracer* tracer();
-  ShenandoahCollectionSet* collection_set() { return _collection_set; }
 
   bool call_from_write_barrier(bool evacuating);
   void grow_heap_by(size_t num_regions);
   void ensure_new_regions(size_t num_new_regions);
 
< prev index next >