diff src/share/vm/runtime/arguments.cpp @ 1795:a8b66e00933b

6984368: Large default heap size does not allow to use zero based compressed oops Summary: take into account HeapBaseMinAddress and round down MaxPermSize Reviewed-by: never
author kvn
date Tue, 14 Sep 2010 17:19:35 -0700
parents d5d065957597
children 18c378513575
line wrap: on
line diff
--- a/src/share/vm/runtime/arguments.cpp	Tue Sep 14 14:09:24 2010 -0700
+++ b/src/share/vm/runtime/arguments.cpp	Tue Sep 14 17:19:35 2010 -0700
@@ -1273,7 +1273,8 @@
 }
 
 inline uintx max_heap_for_compressed_oops() {
-  LP64_ONLY(return OopEncodingHeapMax - MaxPermSize - os::vm_page_size());
+  // Heap should be above HeapBaseMinAddress to get zero based compressed oops.
+  LP64_ONLY(return OopEncodingHeapMax - MaxPermSize - os::vm_page_size() - HeapBaseMinAddress);
   NOT_LP64(ShouldNotReachHere(); return 0);
 }