< prev index next >
src/share/vm/gc/g1/heapRegionType.hpp
Print this page
*** 42,72 ****
// future, we'll have to increase the size of the latter and hence
// decrease the size of the former.
//
// 0000 0 [ 0] Free
//
! // 0001 0 Young Mask
// 0001 0 [ 2] Eden
// 0001 1 [ 3] Survivor
//
! // 0010 0 Humongous Mask
! // 0010 0 [ 4] Starts Humongous
! // 0010 1 [ 5] Continues Humongous
//
! // 01000 [ 8] Old
typedef enum {
FreeTag = 0,
YoungMask = 2,
EdenTag = YoungMask,
SurvTag = YoungMask + 1,
HumongousMask = 4,
! StartsHumongousTag = HumongousMask,
! ContinuesHumongousTag = HumongousMask + 1,
! OldTag = 8
} Tag;
volatile Tag _tag;
static bool is_valid(Tag tag);
--- 42,79 ----
// future, we'll have to increase the size of the latter and hence
// decrease the size of the former.
//
// 0000 0 [ 0] Free
//
! // 0001 0 [ 2] Young Mask
// 0001 0 [ 2] Eden
// 0001 1 [ 3] Survivor
//
! // 0010 0 [ 4] Humongous Mask
! // 0100 0 [ 8] Pinned Mask
! // 0110 0 [12] Starts Humongous
! // 0110 1 [13] Continues Humongous
//
! // 1000 0 [16] Old Mask
! //
! // 1100 0 [24] Archive
typedef enum {
FreeTag = 0,
YoungMask = 2,
EdenTag = YoungMask,
SurvTag = YoungMask + 1,
HumongousMask = 4,
! PinnedMask = 8,
! StartsHumongousTag = HumongousMask | PinnedMask,
! ContinuesHumongousTag = HumongousMask | PinnedMask + 1,
!
! OldMask = 16,
! OldTag = OldMask,
! ArchiveTag = PinnedMask | OldMask
} Tag;
volatile Tag _tag;
static bool is_valid(Tag tag);
*** 106,116 ****
bool is_humongous() const { return (get() & HumongousMask) != 0; }
bool is_starts_humongous() const { return get() == StartsHumongousTag; }
bool is_continues_humongous() const { return get() == ContinuesHumongousTag; }
! bool is_old() const { return get() == OldTag; }
// Setters
void set_free() { set(FreeTag); }
--- 113,129 ----
bool is_humongous() const { return (get() & HumongousMask) != 0; }
bool is_starts_humongous() const { return get() == StartsHumongousTag; }
bool is_continues_humongous() const { return get() == ContinuesHumongousTag; }
! bool is_archive() const { return get() == ArchiveTag; }
!
! // is_old regions may or may not also be pinned
! bool is_old() const { return (get() & OldMask) != 0; }
!
! // is_pinned regions may be archive or humongous
! bool is_pinned() const { return (get() & PinnedMask) != 0; }
// Setters
void set_free() { set(FreeTag); }
*** 121,130 ****
--- 134,145 ----
void set_starts_humongous() { set_from(StartsHumongousTag, FreeTag); }
void set_continues_humongous() { set_from(ContinuesHumongousTag, FreeTag); }
void set_old() { set(OldTag); }
+ void set_archive() { set_from(ArchiveTag, FreeTag); }
+
// Misc
const char* get_str() const;
const char* get_short_str() const;
< prev index next >