45 #include "logging/logStream.hpp" 46 #include "memory/allocation.inline.hpp" 47 #include "memory/metaspaceShared.hpp" 48 #include "memory/oopFactory.hpp" 49 #include "memory/resourceArea.hpp" 50 #include "memory/universe.hpp" 51 #include "oops/access.inline.hpp" 52 #include "oops/instanceKlass.hpp" 53 #include "oops/objArrayOop.hpp" 54 #include "oops/oop.inline.hpp" 55 #include "oops/symbol.hpp" 56 #include "oops/typeArrayOop.inline.hpp" 57 #include "oops/verifyOopClosure.hpp" 58 #include "prims/jvm_misc.hpp" 59 #include "prims/jvmtiExport.hpp" 60 #include "prims/jvmtiThreadState.hpp" 61 #include "prims/privilegedStack.hpp" 62 #include "runtime/arguments.hpp" 63 #include "runtime/atomic.hpp" 64 #include "runtime/biasedLocking.hpp" 65 #include "runtime/commandLineFlagConstraintList.hpp" 66 #include "runtime/commandLineFlagWriteableList.hpp" 67 #include "runtime/commandLineFlagRangeList.hpp" 68 #include "runtime/deoptimization.hpp" 69 #include "runtime/frame.inline.hpp" 70 #include "runtime/globals.hpp" 71 #include "runtime/handshake.hpp" 72 #include "runtime/init.hpp" 73 #include "runtime/interfaceSupport.inline.hpp" 74 #include "runtime/java.hpp" 75 #include "runtime/javaCalls.hpp" 76 #include "runtime/jniHandles.inline.hpp" 77 #include "runtime/jniPeriodicChecker.hpp" 78 #include "runtime/memprofiler.hpp" 79 #include "runtime/mutexLocker.hpp" 80 #include "runtime/objectMonitor.hpp" 81 #include "runtime/orderAccess.inline.hpp" 82 #include "runtime/osThread.hpp" 83 #include "runtime/prefetch.inline.hpp" 84 #include "runtime/safepoint.hpp" 85 #include "runtime/safepointMechanism.inline.hpp" 86 #include "runtime/sharedRuntime.hpp" 87 #include "runtime/statSampler.hpp" 88 #include "runtime/stubRoutines.hpp" 89 #include "runtime/sweeper.hpp" 90 #include "runtime/task.hpp" 3621 // So that JDK version can be used as a discriminator when parsing arguments 3622 JDK_Version_init(); 3623 3624 // Update/Initialize System properties after JDK version number is known 3625 Arguments::init_version_specific_system_properties(); 3626 3627 // Make sure to initialize log configuration *before* parsing arguments 3628 LogConfiguration::initialize(create_vm_timer.begin_time()); 3629 3630 // Parse arguments 3631 // Note: this internally calls os::init_container_support() 3632 jint parse_result = Arguments::parse(args); 3633 if (parse_result != JNI_OK) return parse_result; 3634 3635 os::init_before_ergo(); 3636 3637 jint ergo_result = Arguments::apply_ergo(); 3638 if (ergo_result != JNI_OK) return ergo_result; 3639 3640 // Final check of all ranges after ergonomics which may change values. 3641 if (!CommandLineFlagRangeList::check_ranges()) { 3642 return JNI_EINVAL; 3643 } 3644 3645 // Final check of all 'AfterErgo' constraints after ergonomics which may change values. 3646 bool constraint_result = CommandLineFlagConstraintList::check_constraints(CommandLineFlagConstraint::AfterErgo); 3647 if (!constraint_result) { 3648 return JNI_EINVAL; 3649 } 3650 3651 CommandLineFlagWriteableList::mark_startup(); 3652 3653 if (PauseAtStartup) { 3654 os::pause(); 3655 } 3656 3657 HOTSPOT_VM_INIT_BEGIN(); 3658 3659 // Timing (must come after argument parsing) 3660 TraceTime timer("Create VM", TRACETIME_LOG(Info, startuptime)); 3661 3662 // Initialize the os module after parsing the args 3663 jint os_init_2_result = os::init_2(); 3664 if (os_init_2_result != JNI_OK) return os_init_2_result; 3665 3666 SafepointMechanism::initialize(); 3667 3668 jint adjust_after_os_result = Arguments::adjust_after_os(); 3669 if (adjust_after_os_result != JNI_OK) return adjust_after_os_result; 3670 3671 // Initialize output stream logging | 45 #include "logging/logStream.hpp" 46 #include "memory/allocation.inline.hpp" 47 #include "memory/metaspaceShared.hpp" 48 #include "memory/oopFactory.hpp" 49 #include "memory/resourceArea.hpp" 50 #include "memory/universe.hpp" 51 #include "oops/access.inline.hpp" 52 #include "oops/instanceKlass.hpp" 53 #include "oops/objArrayOop.hpp" 54 #include "oops/oop.inline.hpp" 55 #include "oops/symbol.hpp" 56 #include "oops/typeArrayOop.inline.hpp" 57 #include "oops/verifyOopClosure.hpp" 58 #include "prims/jvm_misc.hpp" 59 #include "prims/jvmtiExport.hpp" 60 #include "prims/jvmtiThreadState.hpp" 61 #include "prims/privilegedStack.hpp" 62 #include "runtime/arguments.hpp" 63 #include "runtime/atomic.hpp" 64 #include "runtime/biasedLocking.hpp" 65 #include "runtime/jvmFlagConstraintList.hpp" 66 #include "runtime/jvmFlagWriteableList.hpp" 67 #include "runtime/jvmFlagRangeList.hpp" 68 #include "runtime/deoptimization.hpp" 69 #include "runtime/frame.inline.hpp" 70 #include "runtime/handshake.hpp" 71 #include "runtime/init.hpp" 72 #include "runtime/interfaceSupport.inline.hpp" 73 #include "runtime/java.hpp" 74 #include "runtime/javaCalls.hpp" 75 #include "runtime/jniHandles.inline.hpp" 76 #include "runtime/jniPeriodicChecker.hpp" 77 #include "runtime/memprofiler.hpp" 78 #include "runtime/mutexLocker.hpp" 79 #include "runtime/objectMonitor.hpp" 80 #include "runtime/orderAccess.inline.hpp" 81 #include "runtime/osThread.hpp" 82 #include "runtime/prefetch.inline.hpp" 83 #include "runtime/safepoint.hpp" 84 #include "runtime/safepointMechanism.inline.hpp" 85 #include "runtime/sharedRuntime.hpp" 86 #include "runtime/statSampler.hpp" 87 #include "runtime/stubRoutines.hpp" 88 #include "runtime/sweeper.hpp" 89 #include "runtime/task.hpp" 3620 // So that JDK version can be used as a discriminator when parsing arguments 3621 JDK_Version_init(); 3622 3623 // Update/Initialize System properties after JDK version number is known 3624 Arguments::init_version_specific_system_properties(); 3625 3626 // Make sure to initialize log configuration *before* parsing arguments 3627 LogConfiguration::initialize(create_vm_timer.begin_time()); 3628 3629 // Parse arguments 3630 // Note: this internally calls os::init_container_support() 3631 jint parse_result = Arguments::parse(args); 3632 if (parse_result != JNI_OK) return parse_result; 3633 3634 os::init_before_ergo(); 3635 3636 jint ergo_result = Arguments::apply_ergo(); 3637 if (ergo_result != JNI_OK) return ergo_result; 3638 3639 // Final check of all ranges after ergonomics which may change values. 3640 if (!JVMFlagRangeList::check_ranges()) { 3641 return JNI_EINVAL; 3642 } 3643 3644 // Final check of all 'AfterErgo' constraints after ergonomics which may change values. 3645 bool constraint_result = JVMFlagConstraintList::check_constraints(JVMFlagConstraint::AfterErgo); 3646 if (!constraint_result) { 3647 return JNI_EINVAL; 3648 } 3649 3650 JVMFlagWriteableList::mark_startup(); 3651 3652 if (PauseAtStartup) { 3653 os::pause(); 3654 } 3655 3656 HOTSPOT_VM_INIT_BEGIN(); 3657 3658 // Timing (must come after argument parsing) 3659 TraceTime timer("Create VM", TRACETIME_LOG(Info, startuptime)); 3660 3661 // Initialize the os module after parsing the args 3662 jint os_init_2_result = os::init_2(); 3663 if (os_init_2_result != JNI_OK) return os_init_2_result; 3664 3665 SafepointMechanism::initialize(); 3666 3667 jint adjust_after_os_result = Arguments::adjust_after_os(); 3668 if (adjust_after_os_result != JNI_OK) return adjust_after_os_result; 3669 3670 // Initialize output stream logging |