< prev index next >
src/hotspot/share/gc/g1/g1CollectedHeap.hpp
Print this page
rev 55208 : imported patch 8220089.webrev.0
rev 55209 : imported patch 8220089.webrev.1
rev 55210 : imported patch 8220089.webrev.2
rev 55211 : imported patch 8220089.webrev.3
*** 133,142 ****
--- 133,143 ----
friend class VM_CollectForMetadataAllocation;
friend class VM_G1CollectForAllocation;
friend class VM_G1CollectFull;
friend class VMStructs;
friend class MutatorAllocRegion;
+ friend class G1Allocator;
friend class G1FullCollector;
friend class G1GCAllocRegion;
friend class G1HeapVerifier;
// Closures used in implementation.
*** 457,476 ****
--- 458,481 ----
bool expect_null_mutator_alloc_region);
// These methods are the "callbacks" from the G1AllocRegion class.
// For mutator alloc regions.
+ void update_as_mutator_region(HeapRegion* alloc_region, bool is_reused);
HeapRegion* new_mutator_alloc_region(size_t word_size, bool force);
void retire_mutator_alloc_region(HeapRegion* alloc_region,
size_t allocated_bytes);
+ void reuse_retained_survivor_region(HeapRegion* alloc_region);
// For GC alloc regions.
bool has_more_regions(G1HeapRegionAttr dest);
HeapRegion* new_gc_alloc_region(size_t word_size, G1HeapRegionAttr dest);
void retire_gc_alloc_region(HeapRegion* alloc_region,
size_t allocated_bytes, G1HeapRegionAttr dest);
+ void update_retained_survivor_gc_alloc_region(HeapRegion* alloc_region);
+
// - if explicit_gc is true, the GC is for a System.gc() etc,
// otherwise it's for a failed allocation.
// - if clear_all_soft_refs is true, all soft references should be
// cleared during the GC.
// - it returns false if it is unable to do the collection due to the
*** 1250,1272 ****
// Convenience function to be used in situations where the heap type can be
// asserted to be this type.
static G1CollectedHeap* heap();
void set_region_short_lived_locked(HeapRegion* hr);
// add appropriate methods for any other surv rate groups
const G1SurvivorRegions* survivor() const { return &_survivor; }
! uint eden_regions_count() const { return _eden.length(); }
! uint survivor_regions_count() const { return _survivor.length(); }
! size_t eden_regions_used_bytes() const { return _eden.used_bytes(); }
! size_t survivor_regions_used_bytes() const { return _survivor.used_bytes(); }
uint young_regions_count() const { return _eden.length() + _survivor.length(); }
uint old_regions_count() const { return _old_set.length(); }
uint archive_regions_count() const { return _archive_set.length(); }
uint humongous_regions_count() const { return _humongous_set.length(); }
#ifdef ASSERT
bool check_young_list_empty();
#endif
// *** Stuff related to concurrent marking. It's not clear to me that so
--- 1255,1289 ----
// Convenience function to be used in situations where the heap type can be
// asserted to be this type.
static G1CollectedHeap* heap();
void set_region_short_lived_locked(HeapRegion* hr);
+ // Used to re-set survivor region to eden region.
+ void set_retained_region_short_lived_locked(HeapRegion* hr);
// add appropriate methods for any other surv rate groups
const G1SurvivorRegions* survivor() const { return &_survivor; }
! // Returns eden region count without any retained region.
! // At the end of GC, all retained regions were already added to _eden so
! // we have to subtract the retained region count to return only eden regions.
! uint eden_regions_count() const;
! // Returns survivor region count with retained region.
! // At the end of GC, all retained regions were already removed from _survivor so
! // we have to add the retained region count to return survivor regions.
! uint survivor_regions_count() const;
! // Returns used bytes of mutator regions without used bytes of a retained region.
! size_t eden_regions_used_bytes() const;
! // Returns used bytes of survivor regions with used bytes of a retained region.
! size_t survivor_regions_used_bytes() const;
uint young_regions_count() const { return _eden.length() + _survivor.length(); }
uint old_regions_count() const { return _old_set.length(); }
uint archive_regions_count() const { return _archive_set.length(); }
uint humongous_regions_count() const { return _humongous_set.length(); }
+ void convert_survivor_to_eden() { _survivor.convert_to_eden(); }
+
#ifdef ASSERT
bool check_young_list_empty();
#endif
// *** Stuff related to concurrent marking. It's not clear to me that so
< prev index next >