< prev index next >
src/share/vm/gc/g1/heapRegionSet.hpp
Print this page
*** 27,50 ****
#include "gc/g1/heapRegion.hpp"
#define assert_heap_region_set(p, message) \
do { \
! assert((p), "[%s] %s ln: %u cy: " SIZE_FORMAT, \
! name(), message, length(), total_capacity_bytes()); \
} while (0)
#define guarantee_heap_region_set(p, message) \
do { \
! guarantee((p), "[%s] %s ln: %u cy: " SIZE_FORMAT, \
! name(), message, length(), total_capacity_bytes()); \
} while (0)
#define assert_free_region_list(p, message) \
do { \
! assert((p), "[%s] %s ln: %u cy: " SIZE_FORMAT " hd: " PTR_FORMAT " tl: " PTR_FORMAT, \
! name(), message, length(), total_capacity_bytes(), p2i(_head), p2i(_tail)); \
} while (0)
// Set verification will be forced either if someone defines
// HEAP_REGION_SET_FORCE_VERIFY to be 1, or in builds in which
--- 27,50 ----
#include "gc/g1/heapRegion.hpp"
#define assert_heap_region_set(p, message) \
do { \
! assert((p), "[%s] %s ln: %u", \
! name(), message, length()); \
} while (0)
#define guarantee_heap_region_set(p, message) \
do { \
! guarantee((p), "[%s] %s ln: %u", \
! name(), message, length()); \
} while (0)
#define assert_free_region_list(p, message) \
do { \
! assert((p), "[%s] %s ln: %u hd: " PTR_FORMAT " tl: " PTR_FORMAT, \
! name(), message, length(), p2i(_head), p2i(_tail)); \
} while (0)
// Set verification will be forced either if someone defines
// HEAP_REGION_SET_FORCE_VERIFY to be 1, or in builds in which
*** 61,92 ****
class MasterFreeRegionListMtSafeChecker : public HRSMtSafeChecker { public: void check(); };
class SecondaryFreeRegionListMtSafeChecker : public HRSMtSafeChecker { public: void check(); };
class HumongousRegionSetMtSafeChecker : public HRSMtSafeChecker { public: void check(); };
class OldRegionSetMtSafeChecker : public HRSMtSafeChecker { public: void check(); };
- class HeapRegionSetCount VALUE_OBJ_CLASS_SPEC {
- friend class VMStructs;
- uint _length;
- size_t _capacity;
-
- public:
- HeapRegionSetCount() : _length(0), _capacity(0) { }
-
- const uint length() const { return _length; }
- const size_t capacity() const { return _capacity; }
-
- void increment(uint length_to_add, size_t capacity_to_add) {
- _length += length_to_add;
- _capacity += capacity_to_add;
- }
-
- void decrement(const uint length_to_remove, const size_t capacity_to_remove) {
- _length -= length_to_remove;
- _capacity -= capacity_to_remove;
- }
- };
-
// Base class for all the classes that represent heap region sets. It
// contains the basic attributes that each set needs to maintain
// (e.g., length, region num, used bytes sum) plus any shared
// functionality (e.g., verification).
--- 61,70 ----
*** 96,109 ****
bool _is_humongous;
bool _is_free;
HRSMtSafeChecker* _mt_safety_checker;
protected:
! // The number of regions added to the set. If the set contains
! // only humongous regions, this reflects only 'starts humongous'
! // regions and does not include 'continues humongous' ones.
! HeapRegionSetCount _count;
const char* _name;
bool _verify_in_progress;
--- 74,85 ----
bool _is_humongous;
bool _is_free;
HRSMtSafeChecker* _mt_safety_checker;
protected:
! // The number of regions in to the set.
! uint _length;
const char* _name;
bool _verify_in_progress;
*** 128,144 ****
HeapRegionSetBase(const char* name, bool humongous, bool free, HRSMtSafeChecker* mt_safety_checker);
public:
const char* name() { return _name; }
! uint length() const { return _count.length(); }
!
! bool is_empty() { return _count.length() == 0; }
! size_t total_capacity_bytes() {
! return _count.capacity();
! }
// It updates the fields of the set to reflect hr being added to
// the set and tags the region appropriately.
inline void add(HeapRegion* hr);
--- 104,116 ----
HeapRegionSetBase(const char* name, bool humongous, bool free, HRSMtSafeChecker* mt_safety_checker);
public:
const char* name() { return _name; }
! uint length() const { return _length; }
! bool is_empty() { return _length == 0; }
// It updates the fields of the set to reflect hr being added to
// the set and tags the region appropriately.
inline void add(HeapRegion* hr);
*** 179,190 ****
class HeapRegionSet : public HeapRegionSetBase {
public:
HeapRegionSet(const char* name, bool humongous, HRSMtSafeChecker* mt_safety_checker):
HeapRegionSetBase(name, humongous, false /* free */, mt_safety_checker) { }
! void bulk_remove(const HeapRegionSetCount& removed) {
! _count.decrement(removed.length(), removed.capacity());
}
};
// A set that links all the regions added to it in a doubly-linked
// sorted list. We should try to avoid doing operations that iterate over
--- 151,162 ----
class HeapRegionSet : public HeapRegionSetBase {
public:
HeapRegionSet(const char* name, bool humongous, HRSMtSafeChecker* mt_safety_checker):
HeapRegionSetBase(name, humongous, false /* free */, mt_safety_checker) { }
! void bulk_remove(const uint removed) {
! _length -= removed;
}
};
// A set that links all the regions added to it in a doubly-linked
// sorted list. We should try to avoid doing operations that iterate over
< prev index next >