93 // HeapWordSize).
94 guarantee(HeapWordSize == wordSize, "HeapWordSize must equal wordSize");
95
96 // Allocate space for the heap.
97
98 char* heap_address;
99 ReservedSpace heap_rs;
100
101 size_t heap_alignment = collector_policy()->heap_alignment();
102
103 heap_address = allocate(heap_alignment, &heap_rs);
104
105 if (!heap_rs.is_reserved()) {
106 vm_shutdown_during_initialization(
107 "Could not reserve enough space for object heap");
108 return JNI_ENOMEM;
109 }
110
111 initialize_reserved_region((HeapWord*)heap_rs.base(), (HeapWord*)(heap_rs.base() + heap_rs.size()));
112
113 _rem_set = new CardTableRS(reserved_region());
114 _rem_set->initialize();
115 CardTableBarrierSet *bs = new CardTableBarrierSet(_rem_set);
116 bs->initialize();
117 set_barrier_set(bs);
118
119 ReservedSpace young_rs = heap_rs.first_part(_young_gen_spec->max_size(), false, false);
120 _young_gen = _young_gen_spec->init(young_rs, rem_set());
121 heap_rs = heap_rs.last_part(_young_gen_spec->max_size());
122
123 ReservedSpace old_rs = heap_rs.first_part(_old_gen_spec->max_size(), false, false);
124 _old_gen = _old_gen_spec->init(old_rs, rem_set());
125 clear_incremental_collection_failed();
126
127 return JNI_OK;
128 }
129
130 void GenCollectedHeap::initialize_size_policy(size_t init_eden_size,
131 size_t init_promo_size,
132 size_t init_survivor_size) {
133 const double max_gc_pause_sec = ((double) MaxGCPauseMillis) / 1000.0;
134 _size_policy = new AdaptiveSizePolicy(init_eden_size,
135 init_promo_size,
136 init_survivor_size,
137 max_gc_pause_sec,
138 GCTimeRatio);
139 }
140
141 char* GenCollectedHeap::allocate(size_t alignment,
142 ReservedSpace* heap_rs){
143 // Now figure out the total size.
144 const size_t pageSize = UseLargePages ? os::large_page_size() : os::vm_page_size();
145 assert(alignment % pageSize == 0, "Must be");
146
147 // Check for overflow.
|
93 // HeapWordSize).
94 guarantee(HeapWordSize == wordSize, "HeapWordSize must equal wordSize");
95
96 // Allocate space for the heap.
97
98 char* heap_address;
99 ReservedSpace heap_rs;
100
101 size_t heap_alignment = collector_policy()->heap_alignment();
102
103 heap_address = allocate(heap_alignment, &heap_rs);
104
105 if (!heap_rs.is_reserved()) {
106 vm_shutdown_during_initialization(
107 "Could not reserve enough space for object heap");
108 return JNI_ENOMEM;
109 }
110
111 initialize_reserved_region((HeapWord*)heap_rs.base(), (HeapWord*)(heap_rs.base() + heap_rs.size()));
112
113 _rem_set = create_rem_set(reserved_region());
114 _rem_set->initialize();
115 CardTableBarrierSet *bs = new CardTableBarrierSet(_rem_set);
116 bs->initialize();
117 set_barrier_set(bs);
118
119 ReservedSpace young_rs = heap_rs.first_part(_young_gen_spec->max_size(), false, false);
120 _young_gen = _young_gen_spec->init(young_rs, rem_set());
121 heap_rs = heap_rs.last_part(_young_gen_spec->max_size());
122
123 ReservedSpace old_rs = heap_rs.first_part(_old_gen_spec->max_size(), false, false);
124 _old_gen = _old_gen_spec->init(old_rs, rem_set());
125 clear_incremental_collection_failed();
126
127 return JNI_OK;
128 }
129
130 CardTableRS* GenCollectedHeap::create_rem_set(const MemRegion& reserved_region) {
131 return new CardTableRS(reserved_region, false /* scan_concurrently */);
132 }
133
134 void GenCollectedHeap::initialize_size_policy(size_t init_eden_size,
135 size_t init_promo_size,
136 size_t init_survivor_size) {
137 const double max_gc_pause_sec = ((double) MaxGCPauseMillis) / 1000.0;
138 _size_policy = new AdaptiveSizePolicy(init_eden_size,
139 init_promo_size,
140 init_survivor_size,
141 max_gc_pause_sec,
142 GCTimeRatio);
143 }
144
145 char* GenCollectedHeap::allocate(size_t alignment,
146 ReservedSpace* heap_rs){
147 // Now figure out the total size.
148 const size_t pageSize = UseLargePages ? os::large_page_size() : os::vm_page_size();
149 assert(alignment % pageSize == 0, "Must be");
150
151 // Check for overflow.
|