@@ -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
7167void 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
134115void 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 ();
0 commit comments