< prev index next >

src/hotspot/share/services/management.cpp

Print this page

@@ -335,64 +335,46 @@
 }
 
 // Helper function to construct a ThreadInfo object
 instanceOop Management::create_thread_info_instance(ThreadSnapshot* snapshot, TRAPS) {
   InstanceKlass* ik = Management::java_lang_management_ThreadInfo_klass(CHECK_NULL);
-
-  JavaValue result(T_VOID);
   JavaCallArguments args(14);
 
-  // First allocate a ThreadObj object and
-  // push the receiver as the first argument
-  Handle element = ik->allocate_instance_handle(CHECK_NULL);
-  args.push_oop(element);
-
   // initialize the arguments for the ThreadInfo constructor
   initialize_ThreadInfo_constructor_arguments(&args, snapshot, CHECK_NULL);
 
   // Call ThreadInfo constructor with no locked monitors and synchronizers
-  JavaCalls::call_special(&result,
+  Handle element = JavaCalls::construct_new_instance(
                           ik,
-                          vmSymbols::object_initializer_name(),
                           vmSymbols::java_lang_management_ThreadInfo_constructor_signature(),
                           &args,
                           CHECK_NULL);
-
   return (instanceOop) element();
 }
 
 instanceOop Management::create_thread_info_instance(ThreadSnapshot* snapshot,
                                                     objArrayHandle monitors_array,
                                                     typeArrayHandle depths_array,
                                                     objArrayHandle synchronizers_array,
                                                     TRAPS) {
   InstanceKlass* ik = Management::java_lang_management_ThreadInfo_klass(CHECK_NULL);
-
-  JavaValue result(T_VOID);
   JavaCallArguments args(17);
 
-  // First allocate a ThreadObj object and
-  // push the receiver as the first argument
-  Handle element = ik->allocate_instance_handle(CHECK_NULL);
-  args.push_oop(element);
-
   // initialize the arguments for the ThreadInfo constructor
   initialize_ThreadInfo_constructor_arguments(&args, snapshot, CHECK_NULL);
 
   // push the locked monitors and synchronizers in the arguments
   args.push_oop(monitors_array);
   args.push_oop(depths_array);
   args.push_oop(synchronizers_array);
 
   // Call ThreadInfo constructor with locked monitors and synchronizers
-  JavaCalls::call_special(&result,
+  Handle element = JavaCalls::construct_new_instance(
                           ik,
-                          vmSymbols::object_initializer_name(),
                           vmSymbols::java_lang_management_ThreadInfo_with_locks_constructor_signature(),
                           &args,
                           CHECK_NULL);
-
   return (instanceOop) element();
 }
 
 
 static GCMemoryManager* get_gc_memory_manager_from_jobject(jobject mgr, TRAPS) {
< prev index next >