< prev index next >

src/share/vm/services/gcNotifier.cpp

Print this page

        

@@ -77,12 +77,11 @@
   return first_request != NULL;
 }
 
 static Handle getGcInfoBuilder(GCMemoryManager *gcManager,TRAPS) {
 
-  Klass* k = Management::com_sun_management_internal_GarbageCollectorExtImpl_klass(CHECK_NH);
-  instanceKlassHandle gcMBeanKlass (THREAD, k);
+  Klass* gcMBeanKlass = Management::com_sun_management_internal_GarbageCollectorExtImpl_klass(CHECK_NH);
 
   instanceOop i = gcManager->get_memory_manager_instance(THREAD);
   instanceHandle ih(THREAD, i);
 
   JavaValue result(T_OBJECT);

@@ -100,20 +99,19 @@
 static Handle createGcInfo(GCMemoryManager *gcManager, GCStatInfo *gcStatInfo,TRAPS) {
 
   // Fill the arrays of MemoryUsage objects with before and after GC
   // per pool memory usage
 
-  Klass* mu_klass = Management::java_lang_management_MemoryUsage_klass(CHECK_NH);
-  instanceKlassHandle mu_kh(THREAD, mu_klass);
+  InstanceKlass* mu_klass = Management::java_lang_management_MemoryUsage_klass(CHECK_NH);
 
   // The array allocations below should use a handle containing mu_klass
   // as the first allocation could trigger a GC, causing the actual
   // klass oop to move, and leaving mu_klass pointing to the old
   // location.
-  objArrayOop bu = oopFactory::new_objArray(mu_kh(), MemoryService::num_memory_pools(), CHECK_NH);
+  objArrayOop bu = oopFactory::new_objArray(mu_klass, MemoryService::num_memory_pools(), CHECK_NH);
   objArrayHandle usage_before_gc_ah(THREAD, bu);
-  objArrayOop au = oopFactory::new_objArray(mu_kh(), MemoryService::num_memory_pools(), CHECK_NH);
+  objArrayOop au = oopFactory::new_objArray(mu_klass, MemoryService::num_memory_pools(), CHECK_NH);
   objArrayHandle usage_after_gc_ah(THREAD, au);
 
   for (int i = 0; i < MemoryService::num_memory_pools(); i++) {
     Handle before_usage = MemoryService::create_MemoryUsage_obj(gcStatInfo->before_gc_usage_for_pool(i), CHECK_NH);
     Handle after_usage;

@@ -133,12 +131,11 @@
 
   // Current implementation only has 1 attribute (number of GC threads)
   // The type is 'I'
   objArrayOop extra_args_array = oopFactory::new_objArray(SystemDictionary::Integer_klass(), 1, CHECK_NH);
   objArrayHandle extra_array (THREAD, extra_args_array);
-  Klass* itKlass = SystemDictionary::Integer_klass();
-  instanceKlassHandle intK(THREAD, itKlass);
+  InstanceKlass* intK = SystemDictionary::Integer_klass();
 
   instanceHandle extra_arg_val = intK->allocate_instance_handle(CHECK_NH);
 
   {
     JavaValue res(T_VOID);

@@ -153,14 +150,13 @@
                             &argsInt,
                             CHECK_NH);
   }
   extra_array->obj_at_put(0,extra_arg_val());
 
-  Klass* gcInfoklass = Management::com_sun_management_GcInfo_klass(CHECK_NH);
-  instanceKlassHandle ik(THREAD, gcInfoklass);
+  InstanceKlass* gcInfoklass = Management::com_sun_management_GcInfo_klass(CHECK_NH);
 
-  Handle gcInfo_instance = ik->allocate_instance_handle(CHECK_NH);
+  Handle gcInfo_instance = gcInfoklass->allocate_instance_handle(CHECK_NH);
 
   JavaValue constructor_result(T_VOID);
   JavaCallArguments constructor_args(16);
   constructor_args.push_oop(gcInfo_instance);
   constructor_args.push_oop(getGcInfoBuilder(gcManager,THREAD));

@@ -170,11 +166,11 @@
   constructor_args.push_oop(usage_before_gc_ah);
   constructor_args.push_oop(usage_after_gc_ah);
   constructor_args.push_oop(extra_array);
 
   JavaCalls::call_special(&constructor_result,
-                          ik,
+                          gcInfoklass,
                           vmSymbols::object_initializer_name(),
                           vmSymbols::com_sun_management_GcInfo_constructor_signature(),
                           &constructor_args,
                           CHECK_NH);
 

@@ -214,17 +210,15 @@
     Handle objGcInfo = createGcInfo(request->gcManager, request->gcStatInfo, CHECK);
 
     Handle objName = java_lang_String::create_from_str(request->gcManager->name(), CHECK);
     Handle objAction = java_lang_String::create_from_str(request->gcAction, CHECK);
     Handle objCause = java_lang_String::create_from_str(request->gcCause, CHECK);
-    Klass* k = Management::com_sun_management_internal_GarbageCollectorExtImpl_klass(CHECK);
-
-    instanceKlassHandle gc_mbean_klass(THREAD, k);
+    InstanceKlass* gc_mbean_klass = Management::com_sun_management_internal_GarbageCollectorExtImpl_klass(CHECK);
 
     instanceOop gc_mbean = request->gcManager->get_memory_manager_instance(THREAD);
     instanceHandle gc_mbean_h(THREAD, gc_mbean);
-    if (!gc_mbean_h->is_a(k)) {
+    if (!gc_mbean_h->is_a(gc_mbean_klass)) {
       THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
                 "This GCMemoryManager doesn't have a GarbageCollectorMXBean");
     }
 
     JavaValue result(T_VOID);
< prev index next >