1 /* |
1 /* |
2 * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
40 static PerfVariable* _vm_init_done_time; |
40 static PerfVariable* _vm_init_done_time; |
41 static jmmOptionalSupport _optional_support; |
41 static jmmOptionalSupport _optional_support; |
42 static TimeStamp _stamp; // Timestamp since vm init done time |
42 static TimeStamp _stamp; // Timestamp since vm init done time |
43 |
43 |
44 // Management klasses |
44 // Management klasses |
45 static Klass* _diagnosticCommandImpl_klass; |
45 static InstanceKlass* _diagnosticCommandImpl_klass; |
46 static Klass* _garbageCollectorExtImpl_klass; |
46 static InstanceKlass* _garbageCollectorExtImpl_klass; |
47 static Klass* _garbageCollectorMXBean_klass; |
47 static InstanceKlass* _garbageCollectorMXBean_klass; |
48 static Klass* _gcInfo_klass; |
48 static InstanceKlass* _gcInfo_klass; |
49 static Klass* _managementFactoryHelper_klass; |
49 static InstanceKlass* _managementFactoryHelper_klass; |
50 static Klass* _memoryManagerMXBean_klass; |
50 static InstanceKlass* _memoryManagerMXBean_klass; |
51 static Klass* _memoryPoolMXBean_klass; |
51 static InstanceKlass* _memoryPoolMXBean_klass; |
52 static Klass* _memoryUsage_klass; |
52 static InstanceKlass* _memoryUsage_klass; |
53 static Klass* _sensor_klass; |
53 static InstanceKlass* _sensor_klass; |
54 static Klass* _threadInfo_klass; |
54 static InstanceKlass* _threadInfo_klass; |
55 static Klass* load_and_initialize_klass(Symbol* sh, TRAPS); |
55 static InstanceKlass* load_and_initialize_klass(Symbol* sh, TRAPS); |
56 static Klass* load_and_initialize_klass_or_null(Symbol* sh, TRAPS); |
56 static InstanceKlass* load_and_initialize_klass_or_null(Symbol* sh, TRAPS); |
57 static Klass* initialize_klass(Klass* k, TRAPS); |
57 static InstanceKlass* initialize_klass(Klass* k, TRAPS); |
58 |
58 |
59 public: |
59 public: |
60 static void init(); |
60 static void init(); |
61 static void initialize(TRAPS); |
61 static void initialize(TRAPS); |
62 |
62 |
65 |
65 |
66 static void oops_do(OopClosure* f) NOT_MANAGEMENT_RETURN; |
66 static void oops_do(OopClosure* f) NOT_MANAGEMENT_RETURN; |
67 static void* get_jmm_interface(int version); |
67 static void* get_jmm_interface(int version); |
68 static void get_optional_support(jmmOptionalSupport* support); |
68 static void get_optional_support(jmmOptionalSupport* support); |
69 |
69 |
70 static void get_loaded_classes(JavaThread* cur_thread, GrowableArray<KlassHandle>* klass_handle_array); |
70 static void get_loaded_classes(JavaThread* cur_thread, GrowableArray<Klass*>* klass_array); |
71 |
71 |
72 static void record_vm_startup_time(jlong begin, jlong duration) |
72 static void record_vm_startup_time(jlong begin, jlong duration) |
73 NOT_MANAGEMENT_RETURN; |
73 NOT_MANAGEMENT_RETURN; |
74 static void record_vm_init_completed() { |
74 static void record_vm_init_completed() { |
75 // Initialize the timestamp to get the current time |
75 // Initialize the timestamp to get the current time |
85 static jlong vm_init_done_time() { |
85 static jlong vm_init_done_time() { |
86 return _vm_init_done_time->get_value(); |
86 return _vm_init_done_time->get_value(); |
87 } |
87 } |
88 |
88 |
89 // methods to return a Klass*. |
89 // methods to return a Klass*. |
90 static Klass* java_lang_management_ThreadInfo_klass(TRAPS); |
90 static InstanceKlass* java_lang_management_ThreadInfo_klass(TRAPS); |
91 static Klass* java_lang_management_MemoryUsage_klass(TRAPS) |
91 static InstanceKlass* java_lang_management_MemoryUsage_klass(TRAPS) |
92 NOT_MANAGEMENT_RETURN_(NULL); |
92 NOT_MANAGEMENT_RETURN_(NULL); |
93 static Klass* java_lang_management_MemoryPoolMXBean_klass(TRAPS); |
93 static InstanceKlass* java_lang_management_MemoryPoolMXBean_klass(TRAPS); |
94 static Klass* java_lang_management_MemoryManagerMXBean_klass(TRAPS); |
94 static InstanceKlass* java_lang_management_MemoryManagerMXBean_klass(TRAPS); |
95 static Klass* java_lang_management_GarbageCollectorMXBean_klass(TRAPS); |
95 static InstanceKlass* java_lang_management_GarbageCollectorMXBean_klass(TRAPS); |
96 static Klass* sun_management_ManagementFactoryHelper_klass(TRAPS) |
96 static InstanceKlass* sun_management_ManagementFactoryHelper_klass(TRAPS) |
97 NOT_MANAGEMENT_RETURN_(NULL); |
97 NOT_MANAGEMENT_RETURN_(NULL); |
98 static Klass* sun_management_Sensor_klass(TRAPS) |
98 static InstanceKlass* sun_management_Sensor_klass(TRAPS) |
99 NOT_MANAGEMENT_RETURN_(NULL); |
99 NOT_MANAGEMENT_RETURN_(NULL); |
100 static Klass* com_sun_management_internal_GarbageCollectorExtImpl_klass(TRAPS) |
100 static InstanceKlass* com_sun_management_internal_GarbageCollectorExtImpl_klass(TRAPS) |
101 NOT_MANAGEMENT_RETURN_(NULL); |
101 NOT_MANAGEMENT_RETURN_(NULL); |
102 static Klass* com_sun_management_GcInfo_klass(TRAPS) |
102 static InstanceKlass* com_sun_management_GcInfo_klass(TRAPS) |
103 NOT_MANAGEMENT_RETURN_(NULL); |
103 NOT_MANAGEMENT_RETURN_(NULL); |
104 static Klass* com_sun_management_internal_DiagnosticCommandImpl_klass(TRAPS) |
104 static InstanceKlass* com_sun_management_internal_DiagnosticCommandImpl_klass(TRAPS) |
105 NOT_MANAGEMENT_RETURN_(NULL); |
105 NOT_MANAGEMENT_RETURN_(NULL); |
106 |
106 |
107 static instanceOop create_thread_info_instance(ThreadSnapshot* snapshot, TRAPS); |
107 static instanceOop create_thread_info_instance(ThreadSnapshot* snapshot, TRAPS); |
108 static instanceOop create_thread_info_instance(ThreadSnapshot* snapshot, objArrayHandle monitors_array, typeArrayHandle depths_array, objArrayHandle synchronizers_array, TRAPS); |
108 static instanceOop create_thread_info_instance(ThreadSnapshot* snapshot, objArrayHandle monitors_array, typeArrayHandle depths_array, objArrayHandle synchronizers_array, TRAPS); |
109 }; |
109 }; |