src/hotspot/share/runtime/arguments.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
open Cdiff src/hotspot/share/runtime/arguments.cpp
src/hotspot/share/runtime/arguments.cpp
Print this page
*** 1606,1623 ****
LP64_ONLY(return OopEncodingHeapMax - displacement_due_to_null_page);
NOT_LP64(ShouldNotReachHere(); return 0);
}
! void Arguments::set_use_compressed_oops() {
#ifndef ZERO
#ifdef _LP64
- // MaxHeapSize is not set up properly at this point, but
- // the only value that can override MaxHeapSize if we are
- // to use UseCompressedOops is InitialHeapSize.
- size_t max_heap_size = MAX2(MaxHeapSize, InitialHeapSize);
-
if (max_heap_size <= max_heap_for_compressed_oops()) {
#if !defined(COMPILER1) || defined(TIERED)
if (FLAG_IS_DEFAULT(UseCompressedOops)) {
FLAG_SET_ERGO(bool, UseCompressedOops, true);
}
--- 1606,1618 ----
LP64_ONLY(return OopEncodingHeapMax - displacement_due_to_null_page);
NOT_LP64(ShouldNotReachHere(); return 0);
}
! void Arguments::set_use_compressed_oops(size_t max_heap_size) {
#ifndef ZERO
#ifdef _LP64
if (max_heap_size <= max_heap_for_compressed_oops()) {
#if !defined(COMPILER1) || defined(TIERED)
if (FLAG_IS_DEFAULT(UseCompressedOops)) {
FLAG_SET_ERGO(bool, UseCompressedOops, true);
}
*** 1677,1699 ****
jint Arguments::set_ergonomics_flags() {
GCConfig::initialize();
set_conservative_max_heap_alignment();
- #ifndef ZERO
- #ifdef _LP64
- set_use_compressed_oops();
-
- // set_use_compressed_klass_ptrs() must be called after calling
- // set_use_compressed_oops().
- set_use_compressed_klass_ptrs();
-
- // Also checks that certain machines are slower with compressed oops
- // in vm_version initialization code.
- #endif // _LP64
- #endif // !ZERO
-
return JNI_OK;
}
julong Arguments::limit_by_allocatable_memory(julong limit) {
julong max_allocatable;
--- 1672,1681 ----
*** 1742,1751 ****
--- 1724,1738 ----
if (!FLAG_IS_DEFAULT(ErgoHeapSizeLimit) && ErgoHeapSizeLimit != 0) {
// Limit the heap size to ErgoHeapSizeLimit
reasonable_max = MIN2(reasonable_max, (julong)ErgoHeapSizeLimit);
}
+
+ // Now that we have a more accurate MaxHeapSize, see if we can
+ // enable compressed oops.
+ set_use_compressed_oops(MAX2(reasonable_max, InitialHeapSize));
+
if (UseCompressedOops) {
// Limit the heap size to the maximum possible when using compressed oops
julong max_coop_heap = (julong)max_heap_for_compressed_oops();
// HeapBaseMinAddress can be greater than default but not less than.
*** 1778,1787 ****
--- 1765,1777 ----
reasonable_max = MAX2(reasonable_max, (julong)InitialHeapSize);
}
log_trace(gc, heap)(" Maximum heap size " SIZE_FORMAT, (size_t) reasonable_max);
FLAG_SET_ERGO(size_t, MaxHeapSize, (size_t)reasonable_max);
+
+ } else {
+ set_use_compressed_oops(MaxHeapSize);
}
// If the minimum or initial heap_size have not been set or requested to be set
// ergonomically, set them accordingly.
if (InitialHeapSize == 0 || min_heap_size() == 0) {
*** 3857,3868 ****
--- 3847,3863 ----
// Set flags based on ergonomics.
jint result = set_ergonomics_flags();
if (result != JNI_OK) return result;
// Set heap size based on available physical memory
+ // Also calls set_use_compressed_oops().
set_heap_size();
+ // set_use_compressed_klass_ptrs() must be called after calling
+ // set_use_compressed_oops().
+ set_use_compressed_klass_ptrs();
+
GCConfig::arguments()->initialize();
set_shared_spaces_flags();
// Initialize Metaspace flags and alignments
src/hotspot/share/runtime/arguments.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File