diff src/share/vm/graal/graalCompilerToVM.cpp @ 13295:903fd774dd61

simplified implementation of HotSpotResolvedObjectType.getClassInitializer()
author Doug Simon <doug.simon@oracle.com>
date Wed, 11 Dec 2013 20:46:25 +0100
parents b23cbfb4366a
children a63d65b682a8
line wrap: on
line diff
--- a/src/share/vm/graal/graalCompilerToVM.cpp	Wed Dec 11 15:59:40 2013 +0100
+++ b/src/share/vm/graal/graalCompilerToVM.cpp	Wed Dec 11 20:46:25 2013 +0100
@@ -469,25 +469,10 @@
   return JNIHandles::make_local(THREAD, field_array());
 C2V_END
 
-C2V_VMENTRY(jobject, getMethods, (JNIEnv *, jobject, jobject klass))
-  ResourceMark rm;
-
+C2V_VMENTRY(jlong, getClassInitializer, (JNIEnv *, jobject, jobject klass))
   instanceKlassHandle k(THREAD, java_lang_Class::as_Klass(HotSpotResolvedObjectType::javaClass(klass)));
-  Array<Method*>* methods = k->methods();
-  int methods_length = methods->length();
-
-  // Allocate result
-  objArrayOop r = oopFactory::new_objArray(SystemDictionary::HotSpotResolvedJavaMethod_klass(), methods_length, CHECK_NULL);
-  objArrayHandle result (THREAD, r);
-
-  for (int i = 0; i < methods_length; i++) {
-    methodHandle method(THREAD, methods->at(i));
-    Handle holder = JNIHandles::resolve(klass);
-    oop m = VMToCompiler::createResolvedJavaMethod(holder, method(), THREAD);
-    result->obj_at_put(i, m);
-  }
-
-  return JNIHandles::make_local(THREAD, result());
+  Method* clinit = k->class_initializer();
+  return (jlong) (address) clinit;
 C2V_END
 
 C2V_VMENTRY(jlong, getMaxCallTargetOffset, (JNIEnv *env, jobject, jlong addr))
@@ -966,7 +951,7 @@
   {CC"lookupFieldInPool",             CC"("METASPACE_CONSTANT_POOL"IB)"FIELD,                           FN_PTR(lookupFieldInPool)},
   {CC"resolveMethod",                 CC"("HS_RESOLVED_TYPE STRING STRING")"METHOD,                     FN_PTR(resolveMethod)},
   {CC"getInstanceFields",             CC"("HS_RESOLVED_TYPE")["HS_RESOLVED_FIELD,                       FN_PTR(getInstanceFields)},
-  {CC"getMethods",                    CC"("HS_RESOLVED_TYPE")["HS_RESOLVED_METHOD,                      FN_PTR(getMethods)},
+  {CC"getClassInitializer",           CC"("HS_RESOLVED_TYPE")"METASPACE_METHOD,                         FN_PTR(getClassInitializer)},
   {CC"hasFinalizableSubclass",        CC"("HS_RESOLVED_TYPE")Z",                                        FN_PTR(hasFinalizableSubclass)},
   {CC"getMaxCallTargetOffset",        CC"(J)J",                                                         FN_PTR(getMaxCallTargetOffset)},
   {CC"getMetaspaceMethod",            CC"("CLASS"I)"METASPACE_METHOD,                                   FN_PTR(getMetaspaceMethod)},