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