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" |
56 #include "runtime/task.hpp" |
58 #include "runtime/task.hpp" |
57 #include "runtime/thread.inline.hpp" |
59 #include "runtime/thread.inline.hpp" |
58 #include "runtime/timer.hpp" |
60 #include "runtime/timer.hpp" |
59 #include "runtime/vm_operations.hpp" |
61 #include "runtime/vm_operations.hpp" |
60 #include "services/memTracker.hpp" |
62 #include "services/memTracker.hpp" |
61 #include "trace/tracing.hpp" |
|
62 #include "utilities/dtrace.hpp" |
63 #include "utilities/dtrace.hpp" |
63 #include "utilities/globalDefinitions.hpp" |
64 #include "utilities/globalDefinitions.hpp" |
64 #include "utilities/histogram.hpp" |
65 #include "utilities/histogram.hpp" |
65 #include "utilities/macros.hpp" |
66 #include "utilities/macros.hpp" |
66 #include "utilities/vmError.hpp" |
67 #include "utilities/vmError.hpp" |
92 #include "code/compiledIC.hpp" |
93 #include "code/compiledIC.hpp" |
93 #include "compiler/methodLiveness.hpp" |
94 #include "compiler/methodLiveness.hpp" |
94 #include "opto/compile.hpp" |
95 #include "opto/compile.hpp" |
95 #include "opto/indexSet.hpp" |
96 #include "opto/indexSet.hpp" |
96 #include "opto/runtime.hpp" |
97 #include "opto/runtime.hpp" |
|
98 #endif |
|
99 #if INCLUDE_JFR |
|
100 #include "jfr/jfr.hpp" |
97 #endif |
101 #endif |
98 |
102 |
99 #ifndef USDT2 |
103 #ifndef USDT2 |
100 HS_DTRACE_PROBE_DECL(hotspot, vm__shutdown); |
104 HS_DTRACE_PROBE_DECL(hotspot, vm__shutdown); |
101 #endif /* !USDT2 */ |
105 #endif /* !USDT2 */ |
521 } |
525 } |
522 |
526 |
523 |
527 |
524 EventThreadEnd event; |
528 EventThreadEnd event; |
525 if (event.should_commit()) { |
529 if (event.should_commit()) { |
526 event.set_javalangthread(java_lang_Thread::thread_id(thread->threadObj())); |
530 event.set_thread(JFR_THREAD_ID(thread)); |
527 event.commit(); |
531 event.commit(); |
528 } |
532 } |
|
533 |
|
534 JFR_ONLY(Jfr::on_vm_shutdown();) |
529 |
535 |
530 // Always call even when there are not JVMTI environments yet, since environments |
536 // Always call even when there are not JVMTI environments yet, since environments |
531 // may be attached late and JVMTI must track phases of VM execution |
537 // may be attached late and JVMTI must track phases of VM execution |
532 JvmtiExport::post_vm_death(); |
538 JvmtiExport::post_vm_death(); |
533 Threads::shutdown_vm_agents(); |
539 Threads::shutdown_vm_agents(); |