4079 // note: perfMemory_exit_helper atexit function may be removed in
4080 // the future if the appropriate cleanup code can be added to the
4081 // VM_Exit VMOperation's doit method.
4082 if (atexit(perfMemory_exit_helper) != 0) {
4083 warning("os::init_2 atexit(perfMemory_exit_helper) failed");
4084 }
4085 }
4086
4087 #ifndef _WIN64
4088 // Print something if NX is enabled (win32 on AMD64)
4089 NOT_PRODUCT(if (PrintMiscellaneous && Verbose) nx_check_protection());
4090 #endif
4091
4092 // initialize thread priority policy
4093 prio_init();
4094
4095 if (UseNUMA && !ForceNUMA) {
4096 UseNUMA = false; // We don't fully support this yet
4097 }
4098
4099 if (UseNUMAInterleaving) {
4100 // first check whether this Windows OS supports VirtualAllocExNuma, if not ignore this flag
4101 bool success = numa_interleaving_init();
4102 if (!success) UseNUMAInterleaving = false;
4103 }
4104
4105 if (initSock() != JNI_OK) {
4106 return JNI_ERR;
4107 }
4108
4109 SymbolEngine::recalc_search_path();
4110
4111 // Initialize data for jdk.internal.misc.Signal
4112 if (!ReduceSignalUsage) {
4113 jdk_misc_signal_init();
4114 }
4115
4116 return JNI_OK;
4117 }
4118
4119 // combine the high and low DWORD into a ULONGLONG
4120 static ULONGLONG make_double_word(DWORD high_word, DWORD low_word) {
4121 ULONGLONG value = high_word;
4122 value <<= sizeof(high_word) * 8;
|
4079 // note: perfMemory_exit_helper atexit function may be removed in
4080 // the future if the appropriate cleanup code can be added to the
4081 // VM_Exit VMOperation's doit method.
4082 if (atexit(perfMemory_exit_helper) != 0) {
4083 warning("os::init_2 atexit(perfMemory_exit_helper) failed");
4084 }
4085 }
4086
4087 #ifndef _WIN64
4088 // Print something if NX is enabled (win32 on AMD64)
4089 NOT_PRODUCT(if (PrintMiscellaneous && Verbose) nx_check_protection());
4090 #endif
4091
4092 // initialize thread priority policy
4093 prio_init();
4094
4095 if (UseNUMA && !ForceNUMA) {
4096 UseNUMA = false; // We don't fully support this yet
4097 }
4098
4099 // If UseNUMA then UseNUMAInterleaving is later (Arguments) defaulted to
4100 // true, but that's too late to call numa_interleaving_init.
4101 if (UseNUMAInterleaving || (UseNUMA && FLAG_IS_DEFAULT(UseNUMAInterleaving))) {
4102 // Check whether this Windows OS provides the needed support.
4103 if (!numa_interleaving_init()) {
4104 // Not supported, so disable flag and prevent later defaulted change.
4105 FLAG_SET_ERGO(UseNUMAInterleaving, false);
4106 } else if (!UseNUMAInterleaving) {
4107 // Supported, so change flag now, rather than waiting for Arguments.
4108 FLAG_SET_ERGO(UseNUMAInterleaving, true);
4109 }
4110 }
4111
4112 if (initSock() != JNI_OK) {
4113 return JNI_ERR;
4114 }
4115
4116 SymbolEngine::recalc_search_path();
4117
4118 // Initialize data for jdk.internal.misc.Signal
4119 if (!ReduceSignalUsage) {
4120 jdk_misc_signal_init();
4121 }
4122
4123 return JNI_OK;
4124 }
4125
4126 // combine the high and low DWORD into a ULONGLONG
4127 static ULONGLONG make_double_word(DWORD high_word, DWORD low_word) {
4128 ULONGLONG value = high_word;
4129 value <<= sizeof(high_word) * 8;
|