Skip to content

Commit f15a59c

Browse files
committed
8278756: Parallel: Drop PSOldGen::_reserved
Reviewed-by: tschatzl, mli
1 parent 271d26f commit f15a59c

File tree

9 files changed

+38
-52
lines changed

9 files changed

+38
-52
lines changed

src/hotspot/share/gc/parallel/objectStartArray.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ class ObjectStartArray : public CHeapObj<mtGC> {
4141
private:
4242
PSVirtualSpace _virtual_space;
4343
MemRegion _reserved_region;
44+
// The committed (old-gen heap) virtual space this object-start-array covers.
4445
MemRegion _covered_region;
4546
MemRegion _blocks_region;
4647
jbyte* _raw_base;

src/hotspot/share/gc/parallel/parallelScavengeHeap.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -645,8 +645,10 @@ void ParallelScavengeHeap::prepare_for_verify() {
645645
PSHeapSummary ParallelScavengeHeap::create_ps_heap_summary() {
646646
PSOldGen* old = old_gen();
647647
HeapWord* old_committed_end = (HeapWord*)old->virtual_space()->committed_high_addr();
648-
VirtualSpaceSummary old_summary(old->reserved().start(), old_committed_end, old->reserved().end());
649-
SpaceSummary old_space(old->reserved().start(), old_committed_end, old->used_in_bytes());
648+
HeapWord* old_reserved_start = old->reserved().start();
649+
HeapWord* old_reserved_end = old->reserved().end();
650+
VirtualSpaceSummary old_summary(old_reserved_start, old_committed_end, old_reserved_end);
651+
SpaceSummary old_space(old_reserved_start, old_committed_end, old->used_in_bytes());
650652

651653
PSYoungGen* young = young_gen();
652654
VirtualSpaceSummary young_summary(young->reserved().start(),

src/hotspot/share/gc/parallel/psOldGen.cpp

Lines changed: 15 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,6 @@ void PSOldGen::initialize(ReservedSpace rs, size_t initial_size, size_t alignmen
5050
initialize_virtual_space(rs, initial_size, alignment);
5151
initialize_work(perf_data_name, level);
5252

53-
// The old gen can grow to max_gen_size(). _reserve reflects only
54-
// the current maximum that can be committed.
55-
assert(_reserved.byte_size() <= max_gen_size(), "Consistency check");
56-
5753
initialize_performance_counters(perf_data_name, level);
5854
}
5955

@@ -69,66 +65,51 @@ void PSOldGen::initialize_virtual_space(ReservedSpace rs,
6965
}
7066

7167
void PSOldGen::initialize_work(const char* perf_data_name, int level) {
72-
//
73-
// Basic memory initialization
74-
//
75-
76-
MemRegion limit_reserved((HeapWord*)virtual_space()->low_boundary(),
77-
heap_word_size(max_gen_size()));
78-
assert(limit_reserved.byte_size() == max_gen_size(),
79-
"word vs bytes confusion");
80-
//
81-
// Object start stuff
82-
//
68+
MemRegion const reserved_mr = reserved();
69+
assert(reserved_mr.byte_size() == max_gen_size(), "invariant");
8370

84-
start_array()->initialize(limit_reserved);
71+
// Object start stuff: for all reserved memory
72+
start_array()->initialize(reserved_mr);
8573

86-
_reserved = MemRegion((HeapWord*)virtual_space()->low_boundary(),
87-
(HeapWord*)virtual_space()->high_boundary());
74+
// Card table stuff: for all committed memory
75+
MemRegion committed_mr((HeapWord*)virtual_space()->low(),
76+
(HeapWord*)virtual_space()->high());
8877

89-
//
90-
// Card table stuff
91-
//
92-
93-
MemRegion cmr((HeapWord*)virtual_space()->low(),
94-
(HeapWord*)virtual_space()->high());
9578
if (ZapUnusedHeapArea) {
9679
// Mangle newly committed space immediately rather than
9780
// waiting for the initialization of the space even though
9881
// mangling is related to spaces. Doing it here eliminates
9982
// the need to carry along information that a complete mangling
10083
// (bottom to end) needs to be done.
101-
SpaceMangler::mangle_region(cmr);
84+
SpaceMangler::mangle_region(committed_mr);
10285
}
10386

10487
ParallelScavengeHeap* heap = ParallelScavengeHeap::heap();
10588
PSCardTable* ct = heap->card_table();
106-
ct->resize_covered_region(cmr);
89+
ct->resize_covered_region(committed_mr);
10790

10891
// Verify that the start and end of this generation is the start of a card.
10992
// If this wasn't true, a single card could span more than one generation,
11093
// which would cause problems when we commit/uncommit memory, and when we
11194
// clear and dirty cards.
112-
guarantee(ct->is_card_aligned(_reserved.start()), "generation must be card aligned");
113-
if (_reserved.end() != heap->reserved_region().end()) {
114-
// Don't check at the very end of the heap as we'll assert that we're probing off
115-
// the end if we try.
116-
guarantee(ct->is_card_aligned(_reserved.end()), "generation must be card aligned");
117-
}
95+
guarantee(ct->is_card_aligned(reserved_mr.start()), "generation must be card aligned");
96+
// Check the heap layout documented at `class ParallelScavengeHeap`.
97+
assert(reserved_mr.end() != heap->reserved_region().end(), "invariant");
98+
guarantee(ct->is_card_aligned(reserved_mr.end()), "generation must be card aligned");
11899

119100
//
120101
// ObjectSpace stuff
121102
//
122103

123104
_object_space = new MutableSpace(virtual_space()->alignment());
124-
object_space()->initialize(cmr,
105+
object_space()->initialize(committed_mr,
125106
SpaceDecorator::Clear,
126107
SpaceDecorator::Mangle,
127108
MutableSpace::SetupPages,
128109
&ParallelScavengeHeap::heap()->workers());
129110

130111
// Update the start_array
131-
start_array()->set_covered_region(cmr);
112+
start_array()->set_covered_region(committed_mr);
132113
}
133114

134115
void PSOldGen::initialize_performance_counters(const char* perf_data_name, int level) {
@@ -314,7 +295,6 @@ void PSOldGen::resize(size_t desired_free_space) {
314295
// Adjust according to our min and max
315296
new_size = clamp(new_size, min_gen_size(), max_gen_size());
316297

317-
assert(max_gen_size() >= reserved().byte_size(), "max new size problem?");
318298
new_size = align_up(new_size, alignment);
319299

320300
const size_t current_size = capacity_in_bytes();

src/hotspot/share/gc/parallel/psOldGen.hpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,7 @@
3434

3535
class PSOldGen : public CHeapObj<mtGC> {
3636
friend class VMStructs;
37-
3837
private:
39-
MemRegion _reserved; // Used for simple containment tests
4038
PSVirtualSpace* _virtual_space; // Controls mapping and unmapping of virtual mem
4139
ObjectStartArray _start_array; // Keeps track of where objects start in a 512b block
4240
MutableSpace* _object_space; // Where all the objects live
@@ -99,16 +97,20 @@ class PSOldGen : public CHeapObj<mtGC> {
9997
PSOldGen(ReservedSpace rs, size_t initial_size, size_t min_size,
10098
size_t max_size, const char* perf_data_name, int level);
10199

102-
MemRegion reserved() const { return _reserved; }
100+
MemRegion reserved() const {
101+
return MemRegion((HeapWord*)(_virtual_space->low_boundary()),
102+
(HeapWord*)(_virtual_space->high_boundary()));
103+
}
104+
103105
size_t max_gen_size() const { return _max_gen_size; }
104106
size_t min_gen_size() const { return _min_gen_size; }
105107

106108
bool is_in(const void* p) const {
107-
return _virtual_space->contains((void *)p);
109+
return _virtual_space->is_in_committed((void *)p);
108110
}
109111

110112
bool is_in_reserved(const void* p) const {
111-
return reserved().contains(p);
113+
return _virtual_space->is_in_reserved(p);
112114
}
113115

114116
MutableSpace* object_space() const { return _object_space; }

src/hotspot/share/gc/parallel/psParallelCompact.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1041,9 +1041,9 @@ void PSParallelCompact::post_compact()
10411041
PSCardTable* ct = heap->card_table();
10421042
MemRegion old_mr = heap->old_gen()->reserved();
10431043
if (young_gen_empty) {
1044-
ct->clear(MemRegion(old_mr.start(), old_mr.end()));
1044+
ct->clear(old_mr);
10451045
} else {
1046-
ct->invalidate(MemRegion(old_mr.start(), old_mr.end()));
1046+
ct->invalidate(old_mr);
10471047
}
10481048

10491049
// Delete metaspaces for unloaded class loaders and clean up loader_data graph

src/hotspot/share/gc/parallel/psVirtualspace.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,6 @@ PSVirtualSpace::~PSVirtualSpace() {
6666
release();
6767
}
6868

69-
bool PSVirtualSpace::contains(void* p) const {
70-
char* const cp = (char*)p;
71-
return cp >= committed_low_addr() && cp < committed_high_addr();
72-
}
73-
7469
void PSVirtualSpace::release() {
7570
DEBUG_ONLY(PSVirtualSpaceVerifier this_verifier(this));
7671
// This may not release memory it didn't reserve.

src/hotspot/share/gc/parallel/psVirtualspace.hpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,13 @@ class PSVirtualSpace : public CHeapObj<mtGC> {
7575
PSVirtualSpace();
7676
void initialize(ReservedSpace rs);
7777

78-
bool contains(void* p) const;
78+
bool is_in_committed(const void* p) const {
79+
return (p >= committed_low_addr()) && (p < committed_high_addr());
80+
}
81+
82+
bool is_in_reserved(const void* p) const {
83+
return (p >= reserved_low_addr()) && (p < reserved_high_addr());
84+
}
7985

8086
// Accessors (all sizes are bytes).
8187
size_t alignment() const { return _alignment; }
@@ -85,6 +91,7 @@ class PSVirtualSpace : public CHeapObj<mtGC> {
8591
char* committed_high_addr() const { return _committed_high_addr; }
8692
bool special() const { return _special; }
8793

94+
// Return size in bytes
8895
inline size_t committed_size() const;
8996
inline size_t reserved_size() const;
9097
inline size_t uncommitted_size() const;

src/hotspot/share/gc/parallel/psYoungGen.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ class PSYoungGen : public CHeapObj<mtGC> {
9090
MemRegion reserved() const { return _reserved; }
9191

9292
bool is_in(const void* p) const {
93-
return _virtual_space->contains((void *)p);
93+
return _virtual_space->is_in_committed(p);
9494
}
9595

9696
bool is_in_reserved(const void* p) const {

src/hotspot/share/gc/parallel/vmStructs_parallelgc.hpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@
5757
nonstatic_field(PSYoungGen, _min_gen_size, const size_t) \
5858
nonstatic_field(PSYoungGen, _max_gen_size, const size_t) \
5959
\
60-
nonstatic_field(PSOldGen, _reserved, MemRegion) \
6160
nonstatic_field(PSOldGen, _virtual_space, PSVirtualSpace*) \
6261
nonstatic_field(PSOldGen, _object_space, MutableSpace*) \
6362
nonstatic_field(PSOldGen, _min_gen_size, const size_t) \

0 commit comments

Comments
 (0)