101 guarantee(HeapWordSize == wordSize, "HeapWordSize must equal wordSize");
102
103 // Allocate space for the heap.
104
105 char* heap_address;
106 ReservedSpace heap_rs;
107
108 size_t heap_alignment = collector_policy()->heap_alignment();
109
110 heap_address = allocate(heap_alignment, &heap_rs);
111
112 if (!heap_rs.is_reserved()) {
113 vm_shutdown_during_initialization(
114 "Could not reserve enough space for object heap");
115 return JNI_ENOMEM;
116 }
117
118 initialize_reserved_region((HeapWord*)heap_rs.base(), (HeapWord*)(heap_rs.base() + heap_rs.size()));
119
120 _rem_set = collector_policy()->create_rem_set(reserved_region());
121 _barrier_set = rem_set()->bs();
122 oopDesc::set_bs(_barrier_set);
123
124 _gch = this;
125
126 ReservedSpace young_rs = heap_rs.first_part(gen_policy()->young_gen_spec()->max_size(), false, false);
127 _young_gen = gen_policy()->young_gen_spec()->init(young_rs, 0, rem_set());
128 heap_rs = heap_rs.last_part(gen_policy()->young_gen_spec()->max_size());
129
130 ReservedSpace old_rs = heap_rs.first_part(gen_policy()->old_gen_spec()->max_size(), false, false);
131 _old_gen = gen_policy()->old_gen_spec()->init(old_rs, 1, rem_set());
132 clear_incremental_collection_failed();
133
134 #if INCLUDE_ALL_GCS
135 // If we are running CMS, create the collector responsible
136 // for collecting the CMS generations.
137 if (collector_policy()->is_concurrent_mark_sweep_policy()) {
138 bool success = create_cms_collector();
139 if (!success) return JNI_ENOMEM;
140 }
141 #endif // INCLUDE_ALL_GCS
142
|
101 guarantee(HeapWordSize == wordSize, "HeapWordSize must equal wordSize");
102
103 // Allocate space for the heap.
104
105 char* heap_address;
106 ReservedSpace heap_rs;
107
108 size_t heap_alignment = collector_policy()->heap_alignment();
109
110 heap_address = allocate(heap_alignment, &heap_rs);
111
112 if (!heap_rs.is_reserved()) {
113 vm_shutdown_during_initialization(
114 "Could not reserve enough space for object heap");
115 return JNI_ENOMEM;
116 }
117
118 initialize_reserved_region((HeapWord*)heap_rs.base(), (HeapWord*)(heap_rs.base() + heap_rs.size()));
119
120 _rem_set = collector_policy()->create_rem_set(reserved_region());
121 set_barrier_set(rem_set()->bs());
122
123 _gch = this;
124
125 ReservedSpace young_rs = heap_rs.first_part(gen_policy()->young_gen_spec()->max_size(), false, false);
126 _young_gen = gen_policy()->young_gen_spec()->init(young_rs, 0, rem_set());
127 heap_rs = heap_rs.last_part(gen_policy()->young_gen_spec()->max_size());
128
129 ReservedSpace old_rs = heap_rs.first_part(gen_policy()->old_gen_spec()->max_size(), false, false);
130 _old_gen = gen_policy()->old_gen_spec()->init(old_rs, 1, rem_set());
131 clear_incremental_collection_failed();
132
133 #if INCLUDE_ALL_GCS
134 // If we are running CMS, create the collector responsible
135 // for collecting the CMS generations.
136 if (collector_policy()->is_concurrent_mark_sweep_policy()) {
137 bool success = create_cms_collector();
138 if (!success) return JNI_ENOMEM;
139 }
140 #endif // INCLUDE_ALL_GCS
141
|