src/share/vm/runtime/arguments.cpp

Print this page
rev 5146 : [mq]: first-patch

*** 24,35 **** --- 24,41 ---- #include "precompiled.hpp" #include "classfile/javaAssertions.hpp" #include "classfile/symbolTable.hpp" #include "compiler/compilerOracle.hpp" + #if INCLUDE_ALL_GCS + #include "gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp" + #include "gc_implementation/g1/g1CollectedHeap.inline.hpp" + #include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp" + #endif // INCLUDE_ALL_GCS #include "memory/allocation.inline.hpp" #include "memory/cardTableRS.hpp" + #include "memory/genCollectedHeap.hpp" #include "memory/referenceProcessor.hpp" #include "memory/universe.inline.hpp" #include "oops/oop.inline.hpp" #include "prims/jvmtiExport.hpp" #include "runtime/arguments.hpp"
*** 50,62 **** # include "os_windows.inline.hpp" #endif #ifdef TARGET_OS_FAMILY_bsd # include "os_bsd.inline.hpp" #endif - #if INCLUDE_ALL_GCS - #include "gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp" - #endif // INCLUDE_ALL_GCS // Note: This is a special bug reporting site for the JVM #define DEFAULT_VENDOR_URL_BUG "http://bugreport.sun.com/bugreport/crash.jsp" #define DEFAULT_JAVA_LAUNCHER "generic" --- 56,65 ----
*** 88,97 **** --- 91,101 ---- int Arguments::_num_jvm_args = 0; char* Arguments::_java_command = NULL; SystemProperty* Arguments::_system_properties = NULL; const char* Arguments::_gc_log_filename = NULL; bool Arguments::_has_profile = false; + size_t Arguments::_conservative_max_heap_alignment = 0; uintx Arguments::_min_heap_size = 0; Arguments::Mode Arguments::_mode = _mixed; bool Arguments::_java_compiler = false; bool Arguments::_xdebug_mode = false; const char* Arguments::_java_vendor_url_bug = DEFAULT_VENDOR_URL_BUG;
*** 1389,1402 **** return false; } return true; } ! inline uintx max_heap_for_compressed_oops() { // Avoid sign flip. assert(OopEncodingHeapMax > (uint64_t)os::vm_page_size(), "Unusual page size"); ! LP64_ONLY(return OopEncodingHeapMax - os::vm_page_size()); NOT_LP64(ShouldNotReachHere(); return 0); } bool Arguments::should_auto_select_low_pause_collector() { if (UseAutoGCSelectPolicy && --- 1393,1413 ---- return false; } return true; } ! uintx Arguments::max_heap_for_compressed_oops() { // Avoid sign flip. assert(OopEncodingHeapMax > (uint64_t)os::vm_page_size(), "Unusual page size"); ! // we need to fit both the NULL page and the heap into the memory budget, while ! // keeping alignment constraints of the heap. To guarantee the latter, as the ! // NULL page is located before the heap, we pad the NULL page to the conservative ! // maximum alignment that the GC may ever impose upon the heap. ! size_t displacement_due_to_null_page = align_size_up_(os::vm_page_size(), ! Arguments::conservative_max_heap_alignment()); ! ! LP64_ONLY(return OopEncodingHeapMax - displacement_due_to_null_page); NOT_LP64(ShouldNotReachHere(); return 0); } bool Arguments::should_auto_select_low_pause_collector() { if (UseAutoGCSelectPolicy &&
*** 1473,1482 **** --- 1484,1510 ---- } #endif // _LP64 #endif // !ZERO } + void Arguments::set_conservative_max_heap_alignment() { + // The conservative maximum required alignment for the heap is the maximum of + // the alignments imposed by several sources: any requirements from the heap + // itself, the collector policy and the maximum page size we may run the VM + // with. + size_t heap_alignment = GenCollectedHeap::max_heap_alignment(); + #if INCLUDE_ALL_GCS + if (UseParallelGC) { + heap_alignment = ParallelScavengeHeap::conservative_max_heap_alignment(); + } else if (UseG1GC) { + heap_alignment = G1CollectedHeap::conservative_max_heap_alignment(); + } + #endif // INCLUDE_ALL_GCS + _conservative_max_heap_alignment = MAX3(heap_alignment, os::max_page_size(), + CollectorPolicy::compute_max_alignment()); + } + void Arguments::set_ergonomics_flags() { if (os::is_server_class_machine()) { // If no other collector is requested explicitly, // let the VM select the collector based on
*** 1501,1510 **** --- 1529,1540 ---- (FLAG_IS_DEFAULT(UseSharedSpaces) || !UseSharedSpaces)) { no_shared_spaces(); } } + set_conservative_max_heap_alignment(); + #ifndef ZERO #ifdef _LP64 set_use_compressed_oops(); // set_use_compressed_klass_ptrs() must be called after calling
*** 3515,3524 **** --- 3545,3556 ---- FLAG_SET_DEFAULT(PrintSharedSpaces, false); } no_shared_spaces(); #endif // INCLUDE_CDS + os::init_ergo(); + // Set flags based on ergonomics. set_ergonomics_flags(); set_shared_spaces_flags();