28 #include "classfile/systemDictionary.hpp" |
28 #include "classfile/systemDictionary.hpp" |
29 #include "code/codeCache.hpp" |
29 #include "code/codeCache.hpp" |
30 #include "compiler/compileBroker.hpp" |
30 #include "compiler/compileBroker.hpp" |
31 #include "compiler/compilerOracle.hpp" |
31 #include "compiler/compilerOracle.hpp" |
32 #include "interpreter/bytecodeHistogram.hpp" |
32 #include "interpreter/bytecodeHistogram.hpp" |
|
33 #include "jfr/jfrEvents.hpp" |
|
34 #include "jfr/support/jfrThreadId.hpp" |
33 #include "memory/genCollectedHeap.hpp" |
35 #include "memory/genCollectedHeap.hpp" |
34 #include "memory/oopFactory.hpp" |
36 #include "memory/oopFactory.hpp" |
35 #include "memory/universe.hpp" |
37 #include "memory/universe.hpp" |
36 #include "oops/constantPool.hpp" |
38 #include "oops/constantPool.hpp" |
37 #include "oops/generateOopMap.hpp" |
39 #include "oops/generateOopMap.hpp" |
57 #include "runtime/task.hpp" |
59 #include "runtime/task.hpp" |
58 #include "runtime/thread.inline.hpp" |
60 #include "runtime/thread.inline.hpp" |
59 #include "runtime/timer.hpp" |
61 #include "runtime/timer.hpp" |
60 #include "runtime/vm_operations.hpp" |
62 #include "runtime/vm_operations.hpp" |
61 #include "services/memTracker.hpp" |
63 #include "services/memTracker.hpp" |
62 #include "trace/tracing.hpp" |
|
63 #include "utilities/dtrace.hpp" |
64 #include "utilities/dtrace.hpp" |
64 #include "utilities/globalDefinitions.hpp" |
65 #include "utilities/globalDefinitions.hpp" |
65 #include "utilities/histogram.hpp" |
66 #include "utilities/histogram.hpp" |
66 #include "utilities/macros.hpp" |
67 #include "utilities/macros.hpp" |
67 #include "utilities/vmError.hpp" |
68 #include "utilities/vmError.hpp" |
93 #include "code/compiledIC.hpp" |
94 #include "code/compiledIC.hpp" |
94 #include "compiler/methodLiveness.hpp" |
95 #include "compiler/methodLiveness.hpp" |
95 #include "opto/compile.hpp" |
96 #include "opto/compile.hpp" |
96 #include "opto/indexSet.hpp" |
97 #include "opto/indexSet.hpp" |
97 #include "opto/runtime.hpp" |
98 #include "opto/runtime.hpp" |
|
99 #endif |
|
100 #if INCLUDE_JFR |
|
101 #include "jfr/jfr.hpp" |
98 #endif |
102 #endif |
99 |
103 |
100 #ifndef USDT2 |
104 #ifndef USDT2 |
101 HS_DTRACE_PROBE_DECL(hotspot, vm__shutdown); |
105 HS_DTRACE_PROBE_DECL(hotspot, vm__shutdown); |
102 #endif /* !USDT2 */ |
106 #endif /* !USDT2 */ |
522 } |
526 } |
523 |
527 |
524 |
528 |
525 EventThreadEnd event; |
529 EventThreadEnd event; |
526 if (event.should_commit()) { |
530 if (event.should_commit()) { |
527 event.set_javalangthread(java_lang_Thread::thread_id(thread->threadObj())); |
531 event.set_thread(JFR_THREAD_ID(thread)); |
528 event.commit(); |
532 event.commit(); |
529 } |
533 } |
|
534 |
|
535 JFR_ONLY(Jfr::on_vm_shutdown();) |
530 |
536 |
531 // Always call even when there are not JVMTI environments yet, since environments |
537 // Always call even when there are not JVMTI environments yet, since environments |
532 // may be attached late and JVMTI must track phases of VM execution |
538 // may be attached late and JVMTI must track phases of VM execution |
533 JvmtiExport::post_vm_death(); |
539 JvmtiExport::post_vm_death(); |
534 Threads::shutdown_vm_agents(); |
540 Threads::shutdown_vm_agents(); |