< prev index next >
src/hotspot/share/gc/g1/heapRegionType.hpp
Print this page
rev 51652 : Added support for eager mixed collection of evacuation failure regions
rev 52017 : All changes for G1 GC moved from 'combined' repo folder
@@ -72,12 +72,13 @@
PinnedMask = 8,
StartsHumongousTag = HumongousMask | PinnedMask,
ContinuesHumongousTag = HumongousMask | PinnedMask + 1,
OldMask = 16,
+ PreMatureOldMask = OldMask + 1,
OldTag = OldMask,
-
+ PreMatureOldTag = PreMatureOldMask,
// Archive regions are regions with immutable content (i.e. not reclaimed, and
// not allocated into during regular operation). They differ in the kind of references
// allowed for the contained objects:
// - Closed archive regions form a separate self-contained (closed) object graph
// within the set of all of these regions. No references outside of closed
@@ -135,10 +136,12 @@
bool is_closed_archive() const { return get() == ClosedArchiveTag; }
// is_old regions may or may not also be pinned
bool is_old() const { return (get() & OldMask) != 0; }
+ bool is_premature_old() const { return get() == PreMatureOldTag; }
+
bool is_old_or_humongous() const { return (get() & (OldMask | HumongousMask)) != 0; }
bool is_old_or_humongous_or_archive() const { return (get() & (OldMask | HumongousMask | ArchiveMask)) != 0; }
// is_pinned regions may be archive or humongous
@@ -155,10 +158,12 @@
void set_starts_humongous() { set_from(StartsHumongousTag, FreeTag); }
void set_continues_humongous() { set_from(ContinuesHumongousTag, FreeTag); }
void set_old() { set(OldTag); }
+ void set_premature_old() { set(PreMatureOldTag); }
+
// Change the current region type to be of an old region type if not already done so.
// Returns whether the region type has been changed or not.
bool relabel_as_old() {
//assert(!is_free(), "Should not try to move Free region");
assert(!is_humongous(), "Should not try to move Humongous region");
< prev index next >