198 failed_to_reserve_as_requested(base, requested_address, size, false)) {
199 // As a result of the alignment constraints, the allocated base differs
200 // from the requested address. Return back to the caller who can
201 // take remedial action (like try again without a requested address).
202 assert(_base == NULL, "should be");
203 return;
204 }
205 }
206 }
207 // Done
208 _base = base;
209 _size = size;
210 _alignment = alignment;
211 _noaccess_prefix = noaccess_prefix;
212
213 // Assert that if noaccess_prefix is used, it is the same as alignment.
214 assert(noaccess_prefix == 0 ||
215 noaccess_prefix == _alignment, "noaccess prefix wrong");
216
217 assert(markOopDesc::encode_pointer_as_mark(_base)->decode_pointer() == _base,
218 "area must be distinguisable from marks for mark-sweep");
219 assert(markOopDesc::encode_pointer_as_mark(&_base[size])->decode_pointer() == &_base[size],
220 "area must be distinguisable from marks for mark-sweep");
221 }
222
223
224 ReservedSpace::ReservedSpace(char* base, size_t size, size_t alignment,
225 bool special, bool executable) {
226 assert((size % os::vm_allocation_granularity()) == 0,
227 "size not allocation aligned");
228 _base = base;
229 _size = size;
230 _alignment = alignment;
231 _noaccess_prefix = 0;
232 _special = special;
233 _executable = executable;
234 }
235
236
237 ReservedSpace ReservedSpace::first_part(size_t partition_size, size_t alignment,
238 bool split, bool realloc) {
239 assert(partition_size <= size(), "partition failed");
240 if (split) {
|
198 failed_to_reserve_as_requested(base, requested_address, size, false)) {
199 // As a result of the alignment constraints, the allocated base differs
200 // from the requested address. Return back to the caller who can
201 // take remedial action (like try again without a requested address).
202 assert(_base == NULL, "should be");
203 return;
204 }
205 }
206 }
207 // Done
208 _base = base;
209 _size = size;
210 _alignment = alignment;
211 _noaccess_prefix = noaccess_prefix;
212
213 // Assert that if noaccess_prefix is used, it is the same as alignment.
214 assert(noaccess_prefix == 0 ||
215 noaccess_prefix == _alignment, "noaccess prefix wrong");
216
217 assert(markOopDesc::encode_pointer_as_mark(_base)->decode_pointer() == _base,
218 "area must be distinguishable from marks for mark-sweep");
219 assert(markOopDesc::encode_pointer_as_mark(&_base[size])->decode_pointer() == &_base[size],
220 "area must be distinguishable from marks for mark-sweep");
221 }
222
223
224 ReservedSpace::ReservedSpace(char* base, size_t size, size_t alignment,
225 bool special, bool executable) {
226 assert((size % os::vm_allocation_granularity()) == 0,
227 "size not allocation aligned");
228 _base = base;
229 _size = size;
230 _alignment = alignment;
231 _noaccess_prefix = 0;
232 _special = special;
233 _executable = executable;
234 }
235
236
237 ReservedSpace ReservedSpace::first_part(size_t partition_size, size_t alignment,
238 bool split, bool realloc) {
239 assert(partition_size <= size(), "partition failed");
240 if (split) {
|