120 HandleMark hm(THREAD); |
120 HandleMark hm(THREAD); |
121 |
121 |
122 // Load and initialize the sun.management.Agent class |
122 // Load and initialize the sun.management.Agent class |
123 // invoke startAgent method to start the management server |
123 // invoke startAgent method to start the management server |
124 Handle loader = Handle(THREAD, SystemDictionary::java_system_loader()); |
124 Handle loader = Handle(THREAD, SystemDictionary::java_system_loader()); |
125 klassOop k = SystemDictionary::resolve_or_fail(vmSymbolHandles::sun_management_Agent(), |
125 klassOop k = SystemDictionary::resolve_or_fail(vmSymbols::sun_management_Agent(), |
126 loader, |
126 loader, |
127 Handle(), |
127 Handle(), |
128 true, |
128 true, |
129 CHECK); |
129 CHECK); |
130 instanceKlassHandle ik (THREAD, k); |
130 instanceKlassHandle ik (THREAD, k); |
131 |
131 |
132 JavaValue result(T_VOID); |
132 JavaValue result(T_VOID); |
133 JavaCalls::call_static(&result, |
133 JavaCalls::call_static(&result, |
134 ik, |
134 ik, |
135 vmSymbolHandles::startAgent_name(), |
135 vmSymbols::startAgent_name(), |
136 vmSymbolHandles::void_method_signature(), |
136 vmSymbols::void_method_signature(), |
137 CHECK); |
137 CHECK); |
138 } |
138 } |
139 } |
139 } |
140 |
140 |
141 void Management::get_optional_support(jmmOptionalSupport* support) { |
141 void Management::get_optional_support(jmmOptionalSupport* support) { |
142 memcpy(support, &_optional_support, sizeof(jmmOptionalSupport)); |
142 memcpy(support, &_optional_support, sizeof(jmmOptionalSupport)); |
143 } |
143 } |
144 |
144 |
145 klassOop Management::load_and_initialize_klass(symbolHandle sh, TRAPS) { |
145 klassOop Management::load_and_initialize_klass(Symbol* sh, TRAPS) { |
146 klassOop k = SystemDictionary::resolve_or_fail(sh, true, CHECK_NULL); |
146 klassOop k = SystemDictionary::resolve_or_fail(sh, true, CHECK_NULL); |
147 instanceKlassHandle ik (THREAD, k); |
147 instanceKlassHandle ik (THREAD, k); |
148 if (ik->should_be_initialized()) { |
148 if (ik->should_be_initialized()) { |
149 ik->initialize(CHECK_NULL); |
149 ik->initialize(CHECK_NULL); |
150 } |
150 } |
180 f->do_oop((oop*) &_managementFactory_klass); |
180 f->do_oop((oop*) &_managementFactory_klass); |
181 } |
181 } |
182 |
182 |
183 klassOop Management::java_lang_management_ThreadInfo_klass(TRAPS) { |
183 klassOop Management::java_lang_management_ThreadInfo_klass(TRAPS) { |
184 if (_threadInfo_klass == NULL) { |
184 if (_threadInfo_klass == NULL) { |
185 _threadInfo_klass = load_and_initialize_klass(vmSymbolHandles::java_lang_management_ThreadInfo(), CHECK_NULL); |
185 _threadInfo_klass = load_and_initialize_klass(vmSymbols::java_lang_management_ThreadInfo(), CHECK_NULL); |
186 } |
186 } |
187 return _threadInfo_klass; |
187 return _threadInfo_klass; |
188 } |
188 } |
189 |
189 |
190 klassOop Management::java_lang_management_MemoryUsage_klass(TRAPS) { |
190 klassOop Management::java_lang_management_MemoryUsage_klass(TRAPS) { |
191 if (_memoryUsage_klass == NULL) { |
191 if (_memoryUsage_klass == NULL) { |
192 _memoryUsage_klass = load_and_initialize_klass(vmSymbolHandles::java_lang_management_MemoryUsage(), CHECK_NULL); |
192 _memoryUsage_klass = load_and_initialize_klass(vmSymbols::java_lang_management_MemoryUsage(), CHECK_NULL); |
193 } |
193 } |
194 return _memoryUsage_klass; |
194 return _memoryUsage_klass; |
195 } |
195 } |
196 |
196 |
197 klassOop Management::java_lang_management_MemoryPoolMXBean_klass(TRAPS) { |
197 klassOop Management::java_lang_management_MemoryPoolMXBean_klass(TRAPS) { |
198 if (_memoryPoolMXBean_klass == NULL) { |
198 if (_memoryPoolMXBean_klass == NULL) { |
199 _memoryPoolMXBean_klass = load_and_initialize_klass(vmSymbolHandles::java_lang_management_MemoryPoolMXBean(), CHECK_NULL); |
199 _memoryPoolMXBean_klass = load_and_initialize_klass(vmSymbols::java_lang_management_MemoryPoolMXBean(), CHECK_NULL); |
200 } |
200 } |
201 return _memoryPoolMXBean_klass; |
201 return _memoryPoolMXBean_klass; |
202 } |
202 } |
203 |
203 |
204 klassOop Management::java_lang_management_MemoryManagerMXBean_klass(TRAPS) { |
204 klassOop Management::java_lang_management_MemoryManagerMXBean_klass(TRAPS) { |
205 if (_memoryManagerMXBean_klass == NULL) { |
205 if (_memoryManagerMXBean_klass == NULL) { |
206 _memoryManagerMXBean_klass = load_and_initialize_klass(vmSymbolHandles::java_lang_management_MemoryManagerMXBean(), CHECK_NULL); |
206 _memoryManagerMXBean_klass = load_and_initialize_klass(vmSymbols::java_lang_management_MemoryManagerMXBean(), CHECK_NULL); |
207 } |
207 } |
208 return _memoryManagerMXBean_klass; |
208 return _memoryManagerMXBean_klass; |
209 } |
209 } |
210 |
210 |
211 klassOop Management::java_lang_management_GarbageCollectorMXBean_klass(TRAPS) { |
211 klassOop Management::java_lang_management_GarbageCollectorMXBean_klass(TRAPS) { |
212 if (_garbageCollectorMXBean_klass == NULL) { |
212 if (_garbageCollectorMXBean_klass == NULL) { |
213 _garbageCollectorMXBean_klass = load_and_initialize_klass(vmSymbolHandles::java_lang_management_GarbageCollectorMXBean(), CHECK_NULL); |
213 _garbageCollectorMXBean_klass = load_and_initialize_klass(vmSymbols::java_lang_management_GarbageCollectorMXBean(), CHECK_NULL); |
214 } |
214 } |
215 return _garbageCollectorMXBean_klass; |
215 return _garbageCollectorMXBean_klass; |
216 } |
216 } |
217 |
217 |
218 klassOop Management::sun_management_Sensor_klass(TRAPS) { |
218 klassOop Management::sun_management_Sensor_klass(TRAPS) { |
219 if (_sensor_klass == NULL) { |
219 if (_sensor_klass == NULL) { |
220 _sensor_klass = load_and_initialize_klass(vmSymbolHandles::sun_management_Sensor(), CHECK_NULL); |
220 _sensor_klass = load_and_initialize_klass(vmSymbols::sun_management_Sensor(), CHECK_NULL); |
221 } |
221 } |
222 return _sensor_klass; |
222 return _sensor_klass; |
223 } |
223 } |
224 |
224 |
225 klassOop Management::sun_management_ManagementFactory_klass(TRAPS) { |
225 klassOop Management::sun_management_ManagementFactory_klass(TRAPS) { |
226 if (_managementFactory_klass == NULL) { |
226 if (_managementFactory_klass == NULL) { |
227 _managementFactory_klass = load_and_initialize_klass(vmSymbolHandles::sun_management_ManagementFactory(), CHECK_NULL); |
227 _managementFactory_klass = load_and_initialize_klass(vmSymbols::sun_management_ManagementFactory(), CHECK_NULL); |
228 } |
228 } |
229 return _managementFactory_klass; |
229 return _managementFactory_klass; |
230 } |
230 } |
231 |
231 |
232 static void initialize_ThreadInfo_constructor_arguments(JavaCallArguments* args, ThreadSnapshot* snapshot, TRAPS) { |
232 static void initialize_ThreadInfo_constructor_arguments(JavaCallArguments* args, ThreadSnapshot* snapshot, TRAPS) { |
288 initialize_ThreadInfo_constructor_arguments(&args, snapshot, CHECK_NULL); |
288 initialize_ThreadInfo_constructor_arguments(&args, snapshot, CHECK_NULL); |
289 |
289 |
290 // Call ThreadInfo constructor with no locked monitors and synchronizers |
290 // Call ThreadInfo constructor with no locked monitors and synchronizers |
291 JavaCalls::call_special(&result, |
291 JavaCalls::call_special(&result, |
292 ik, |
292 ik, |
293 vmSymbolHandles::object_initializer_name(), |
293 vmSymbols::object_initializer_name(), |
294 vmSymbolHandles::java_lang_management_ThreadInfo_constructor_signature(), |
294 vmSymbols::java_lang_management_ThreadInfo_constructor_signature(), |
295 &args, |
295 &args, |
296 CHECK_NULL); |
296 CHECK_NULL); |
297 |
297 |
298 return (instanceOop) element(); |
298 return (instanceOop) element(); |
299 } |
299 } |