comparison src/share/vm/memory/genCollectedHeap.cpp @ 642:660978a2a31a

6791178: Specialize for zero as the compressed oop vm heap base Summary: Use zero based compressed oops if java heap is below 32gb and unscaled compressed oops if java heap is below 4gb. Reviewed-by: never, twisti, jcoomes, coleenp
author kvn
date Thu, 12 Mar 2009 10:37:46 -0700
parents c6c601a0f2d6
children bd441136a5ce
comparison
equal deleted inserted replaced
641:6af0a709d52b 642:660978a2a31a
216 216
217 // Calculate the address of the first word of the heap. 217 // Calculate the address of the first word of the heap.
218 heap_address -= total_reserved; 218 heap_address -= total_reserved;
219 } else { 219 } else {
220 heap_address = NULL; // any address will do. 220 heap_address = NULL; // any address will do.
221 if (UseCompressedOops) {
222 heap_address = Universe::preferred_heap_base(total_reserved, Universe::UnscaledNarrowOop);
223 *_total_reserved = total_reserved;
224 *_n_covered_regions = n_covered_regions;
225 *heap_rs = ReservedHeapSpace(total_reserved, alignment,
226 UseLargePages, heap_address);
227
228 if (heap_address != NULL && !heap_rs->is_reserved()) {
229 // Failed to reserve at specified address - the requested memory
230 // region is taken already, for example, by 'java' launcher.
231 // Try again to reserver heap higher.
232 heap_address = Universe::preferred_heap_base(total_reserved, Universe::ZeroBasedNarrowOop);
233 *heap_rs = ReservedHeapSpace(total_reserved, alignment,
234 UseLargePages, heap_address);
235
236 if (heap_address != NULL && !heap_rs->is_reserved()) {
237 // Failed to reserve at specified address again - give up.
238 heap_address = Universe::preferred_heap_base(total_reserved, Universe::HeapBasedNarrowOop);
239 assert(heap_address == NULL, "");
240 *heap_rs = ReservedHeapSpace(total_reserved, alignment,
241 UseLargePages, heap_address);
242 }
243 }
244 return heap_address;
245 }
221 } 246 }
222 247
223 *_total_reserved = total_reserved; 248 *_total_reserved = total_reserved;
224 *_n_covered_regions = n_covered_regions; 249 *_n_covered_regions = n_covered_regions;
225 *heap_rs = ReservedHeapSpace(total_reserved, alignment, 250 *heap_rs = ReservedHeapSpace(total_reserved, alignment,