153 stubRoutines_init2(); // note: StubRoutines need 2-phase init
154 MethodHandles::generate_adapters();
155
156 // All the flags that get adjusted by VM_Version_init and os::init_2
157 // have been set so dump the flags now.
158 if (PrintFlagsFinal || PrintFlagsRanges) {
159 JVMFlag::printFlags(tty, false, PrintFlagsRanges);
160 }
161
162 return JNI_OK;
163 }
164
165
166 void exit_globals() {
167 static bool destructorsCalled = false;
168 if (!destructorsCalled) {
169 destructorsCalled = true;
170 if (log_is_enabled(Info, monitorinflation)) {
171 // The ObjectMonitor subsystem uses perf counters so
172 // do this before perfMemory_exit().
173 // These other two audit_and_print_stats() calls are done at the
174 // Debug level at a safepoint:
175 // - for safepoint based deflation auditing:
176 // ObjectSynchronizer::finish_deflate_idle_monitors()
177 // - for async deflation auditing:
178 // ObjectSynchronizer::do_safepoint_work()
179 ObjectSynchronizer::audit_and_print_stats(true /* on_exit */);
180 }
181 perfMemory_exit();
182 SafepointTracing::statistics_exit_log();
183 if (PrintStringTableStatistics) {
184 SymbolTable::dump(tty);
185 StringTable::dump(tty);
186 }
187 ostream_exit();
188 }
189 }
190
191 static volatile bool _init_completed = false;
192
193 bool is_init_completed() {
194 return Atomic::load_acquire(&_init_completed);
195 }
196
|
153 stubRoutines_init2(); // note: StubRoutines need 2-phase init
154 MethodHandles::generate_adapters();
155
156 // All the flags that get adjusted by VM_Version_init and os::init_2
157 // have been set so dump the flags now.
158 if (PrintFlagsFinal || PrintFlagsRanges) {
159 JVMFlag::printFlags(tty, false, PrintFlagsRanges);
160 }
161
162 return JNI_OK;
163 }
164
165
166 void exit_globals() {
167 static bool destructorsCalled = false;
168 if (!destructorsCalled) {
169 destructorsCalled = true;
170 if (log_is_enabled(Info, monitorinflation)) {
171 // The ObjectMonitor subsystem uses perf counters so
172 // do this before perfMemory_exit().
173 // This other audit_and_print_stats() call is done at the
174 // Debug level at a safepoint:
175 // - for async deflation auditing:
176 // ObjectSynchronizer::do_safepoint_work()
177 ObjectSynchronizer::audit_and_print_stats(true /* on_exit */);
178 }
179 perfMemory_exit();
180 SafepointTracing::statistics_exit_log();
181 if (PrintStringTableStatistics) {
182 SymbolTable::dump(tty);
183 StringTable::dump(tty);
184 }
185 ostream_exit();
186 }
187 }
188
189 static volatile bool _init_completed = false;
190
191 bool is_init_completed() {
192 return Atomic::load_acquire(&_init_completed);
193 }
194
|