6984368: Large default heap size does not allow to use zero based compressed oops
authorkvn
Tue Sep 14 17:19:35 2010 -0700 (2 years ago)
changeset 19754cf84525dc4d
parent 1974cff4ddf257b4
child 1976f6b107f3629a
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
src/share/vm/memory/collectorPolicy.cpp
src/share/vm/runtime/arguments.cpp
--- a/src/share/vm/memory/collectorPolicy.cpp Mon Sep 13 16:45:00 2010 -0700
+++ b/src/share/vm/memory/collectorPolicy.cpp Tue Sep 14 17:19:35 2010 -0700
@@ -32,7 +32,11 @@ void CollectorPolicy::initialize_flags()
MaxPermSize = PermSize;
}
PermSize = MAX2(min_alignment(), align_size_down_(PermSize, min_alignment()));
- MaxPermSize = align_size_up(MaxPermSize, max_alignment());
+ // Don't increase Perm size limit above specified.
+ MaxPermSize = align_size_down(MaxPermSize, max_alignment());
+ if (PermSize > MaxPermSize) {
+ PermSize = MaxPermSize;
+ }
MinPermHeapExpansion = MAX2(min_alignment(), align_size_down_(MinPermHeapExpansion, min_alignment()));
MaxPermHeapExpansion = MAX2(min_alignment(), align_size_down_(MaxPermHeapExpansion, min_alignment()));
--- a/src/share/vm/runtime/arguments.cpp Mon Sep 13 16:45:00 2010 -0700
+++ b/src/share/vm/runtime/arguments.cpp Tue Sep 14 17:19:35 2010 -0700
@@ -1250,7 +1250,8 @@ bool verify_object_alignment() {
}
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);
}