< prev index next >
src/share/vm/gc/shenandoah/shenandoahHeap.hpp
Print this page
rev 13068 : [mq]: partial.patch
*** 35,44 ****
--- 35,45 ----
class ShenandoahHeapRegionClosure;
class ShenandoahHeapRegionSet;
class ShenandoahCollectionSet;
class ShenandoahFreeSet;
class ShenandoahConcurrentMark;
+ class ShenandoahPartialGC;
class ShenandoahConcurrentThread;
class ShenandoahMonitoringSupport;
class SCMUpdateRefsClosure: public OopClosure {
private:
*** 142,153 ****
ShenandoahFreeSet* _free_regions;
ShenandoahCollectionSet* _collection_set;
ShenandoahHeapRegion* _currentAllocationRegion;
ShenandoahConcurrentMark* _scm;
!
!
ShenandoahConcurrentThread* _concurrent_gc_thread;
ShenandoahMonitoringSupport* _monitoring_support;
--- 143,153 ----
ShenandoahFreeSet* _free_regions;
ShenandoahCollectionSet* _collection_set;
ShenandoahHeapRegion* _currentAllocationRegion;
ShenandoahConcurrentMark* _scm;
! ShenandoahPartialGC* _partial_gc;
ShenandoahConcurrentThread* _concurrent_gc_thread;
ShenandoahMonitoringSupport* _monitoring_support;
*** 297,306 ****
--- 297,307 ----
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,349 ****
--- 341,351 ----
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,399 ****
--- 392,402 ----
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,412 ****
--- 406,416 ----
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,475 ****
inline bool mark_next_no_checks(oop obj) const;
void parallel_evacuate();
inline oop atomic_compare_exchange_oop(oop n, narrowOop* addr, oop c);
inline oop atomic_compare_exchange_oop(oop n, oop* addr, oop c);
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();
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);
--- 450,480 ----
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();
! private:
void verify_heap_after_update_refs();
void verify_regions_after_update_refs();
void ref_processing_init();
GCTracer* tracer();
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 >