49 #include "memory/allocation.inline.hpp" 50 #include "memory/iterator.hpp" 51 #include "memory/metaspaceShared.hpp" 52 #include "memory/oopFactory.hpp" 53 #include "memory/resourceArea.hpp" 54 #include "memory/universe.hpp" 55 #include "oops/access.inline.hpp" 56 #include "oops/instanceKlass.hpp" 57 #include "oops/objArrayOop.hpp" 58 #include "oops/oop.inline.hpp" 59 #include "oops/symbol.hpp" 60 #include "oops/typeArrayOop.inline.hpp" 61 #include "oops/verifyOopClosure.hpp" 62 #include "prims/jvm_misc.hpp" 63 #include "prims/jvmtiExport.hpp" 64 #include "prims/jvmtiThreadState.hpp" 65 #include "runtime/arguments.hpp" 66 #include "runtime/atomic.hpp" 67 #include "runtime/biasedLocking.hpp" 68 #include "runtime/fieldDescriptor.inline.hpp" 69 #include "runtime/flags/jvmFlagConstraintList.hpp" 70 #include "runtime/flags/jvmFlagRangeList.hpp" 71 #include "runtime/deoptimization.hpp" 72 #include "runtime/frame.inline.hpp" 73 #include "runtime/handles.inline.hpp" 74 #include "runtime/handshake.hpp" 75 #include "runtime/init.hpp" 76 #include "runtime/interfaceSupport.inline.hpp" 77 #include "runtime/java.hpp" 78 #include "runtime/javaCalls.hpp" 79 #include "runtime/jniHandles.inline.hpp" 80 #include "runtime/jniPeriodicChecker.hpp" 81 #include "runtime/memprofiler.hpp" 82 #include "runtime/mutexLocker.hpp" 83 #include "runtime/objectMonitor.hpp" 84 #include "runtime/orderAccess.hpp" 85 #include "runtime/osThread.hpp" 86 #include "runtime/prefetch.inline.hpp" 87 #include "runtime/safepoint.hpp" 88 #include "runtime/safepointMechanism.inline.hpp" 89 #include "runtime/safepointVerifiers.hpp" 90 #include "runtime/serviceThread.hpp" 3768 // So that JDK version can be used as a discriminator when parsing arguments 3769 JDK_Version_init(); 3770 3771 // Update/Initialize System properties after JDK version number is known 3772 Arguments::init_version_specific_system_properties(); 3773 3774 // Make sure to initialize log configuration *before* parsing arguments 3775 LogConfiguration::initialize(create_vm_timer.begin_time()); 3776 3777 // Parse arguments 3778 // Note: this internally calls os::init_container_support() 3779 jint parse_result = Arguments::parse(args); 3780 if (parse_result != JNI_OK) return parse_result; 3781 3782 os::init_before_ergo(); 3783 3784 jint ergo_result = Arguments::apply_ergo(); 3785 if (ergo_result != JNI_OK) return ergo_result; 3786 3787 // Final check of all ranges after ergonomics which may change values. 3788 if (!JVMFlagRangeList::check_ranges()) { 3789 return JNI_EINVAL; 3790 } 3791 3792 // Final check of all 'AfterErgo' constraints after ergonomics which may change values. 3793 bool constraint_result = JVMFlagConstraintList::check_constraints(JVMFlagConstraint::AfterErgo); 3794 if (!constraint_result) { 3795 return JNI_EINVAL; 3796 } 3797 3798 if (PauseAtStartup) { 3799 os::pause(); 3800 } 3801 3802 HOTSPOT_VM_INIT_BEGIN(); 3803 3804 // Timing (must come after argument parsing) 3805 TraceTime timer("Create VM", TRACETIME_LOG(Info, startuptime)); 3806 3807 // Initialize the os module after parsing the args 3808 jint os_init_2_result = os::init_2(); 3809 if (os_init_2_result != JNI_OK) return os_init_2_result; 3810 3811 #ifdef CAN_SHOW_REGISTERS_ON_ASSERT 3812 // Initialize assert poison page mechanism. 3813 if (ShowRegistersOnAssert) { | 49 #include "memory/allocation.inline.hpp" 50 #include "memory/iterator.hpp" 51 #include "memory/metaspaceShared.hpp" 52 #include "memory/oopFactory.hpp" 53 #include "memory/resourceArea.hpp" 54 #include "memory/universe.hpp" 55 #include "oops/access.inline.hpp" 56 #include "oops/instanceKlass.hpp" 57 #include "oops/objArrayOop.hpp" 58 #include "oops/oop.inline.hpp" 59 #include "oops/symbol.hpp" 60 #include "oops/typeArrayOop.inline.hpp" 61 #include "oops/verifyOopClosure.hpp" 62 #include "prims/jvm_misc.hpp" 63 #include "prims/jvmtiExport.hpp" 64 #include "prims/jvmtiThreadState.hpp" 65 #include "runtime/arguments.hpp" 66 #include "runtime/atomic.hpp" 67 #include "runtime/biasedLocking.hpp" 68 #include "runtime/fieldDescriptor.inline.hpp" 69 #include "runtime/deoptimization.hpp" 70 #include "runtime/frame.inline.hpp" 71 #include "runtime/handles.inline.hpp" 72 #include "runtime/handshake.hpp" 73 #include "runtime/init.hpp" 74 #include "runtime/interfaceSupport.inline.hpp" 75 #include "runtime/java.hpp" 76 #include "runtime/javaCalls.hpp" 77 #include "runtime/jniHandles.inline.hpp" 78 #include "runtime/jniPeriodicChecker.hpp" 79 #include "runtime/memprofiler.hpp" 80 #include "runtime/mutexLocker.hpp" 81 #include "runtime/objectMonitor.hpp" 82 #include "runtime/orderAccess.hpp" 83 #include "runtime/osThread.hpp" 84 #include "runtime/prefetch.inline.hpp" 85 #include "runtime/safepoint.hpp" 86 #include "runtime/safepointMechanism.inline.hpp" 87 #include "runtime/safepointVerifiers.hpp" 88 #include "runtime/serviceThread.hpp" 3766 // So that JDK version can be used as a discriminator when parsing arguments 3767 JDK_Version_init(); 3768 3769 // Update/Initialize System properties after JDK version number is known 3770 Arguments::init_version_specific_system_properties(); 3771 3772 // Make sure to initialize log configuration *before* parsing arguments 3773 LogConfiguration::initialize(create_vm_timer.begin_time()); 3774 3775 // Parse arguments 3776 // Note: this internally calls os::init_container_support() 3777 jint parse_result = Arguments::parse(args); 3778 if (parse_result != JNI_OK) return parse_result; 3779 3780 os::init_before_ergo(); 3781 3782 jint ergo_result = Arguments::apply_ergo(); 3783 if (ergo_result != JNI_OK) return ergo_result; 3784 3785 // Final check of all ranges after ergonomics which may change values. 3786 if (!JVMFlag::check_all_ranges()) { 3787 return JNI_EINVAL; 3788 } 3789 3790 // Final check of all 'AfterErgo' constraints after ergonomics which may change values. 3791 bool constraint_result = JVMFlag::check_all_constraints(JVMFlag::AfterErgo); 3792 if (!constraint_result) { 3793 return JNI_EINVAL; 3794 } 3795 3796 if (PauseAtStartup) { 3797 os::pause(); 3798 } 3799 3800 HOTSPOT_VM_INIT_BEGIN(); 3801 3802 // Timing (must come after argument parsing) 3803 TraceTime timer("Create VM", TRACETIME_LOG(Info, startuptime)); 3804 3805 // Initialize the os module after parsing the args 3806 jint os_init_2_result = os::init_2(); 3807 if (os_init_2_result != JNI_OK) return os_init_2_result; 3808 3809 #ifdef CAN_SHOW_REGISTERS_ON_ASSERT 3810 // Initialize assert poison page mechanism. 3811 if (ShowRegistersOnAssert) { |