< prev index next >
src/share/vm/gc/g1/heapRegionSet.hpp
Print this page
*** 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,143 ****
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,119 ----
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; }
size_t total_capacity_bytes() {
! return _length * HeapRegion::GrainBytes;
}
// 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
--- 155,166 ----
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 >