comparison 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
comparison
equal deleted inserted replaced
13294:29907e69ae8d 13295:903fd774dd61
467 field_array->obj_at_put(i, fields.at(i)()); 467 field_array->obj_at_put(i, fields.at(i)());
468 } 468 }
469 return JNIHandles::make_local(THREAD, field_array()); 469 return JNIHandles::make_local(THREAD, field_array());
470 C2V_END 470 C2V_END
471 471
472 C2V_VMENTRY(jobject, getMethods, (JNIEnv *, jobject, jobject klass)) 472 C2V_VMENTRY(jlong, getClassInitializer, (JNIEnv *, jobject, jobject klass))
473 ResourceMark rm;
474
475 instanceKlassHandle k(THREAD, java_lang_Class::as_Klass(HotSpotResolvedObjectType::javaClass(klass))); 473 instanceKlassHandle k(THREAD, java_lang_Class::as_Klass(HotSpotResolvedObjectType::javaClass(klass)));
476 Array<Method*>* methods = k->methods(); 474 Method* clinit = k->class_initializer();
477 int methods_length = methods->length(); 475 return (jlong) (address) clinit;
478
479 // Allocate result
480 objArrayOop r = oopFactory::new_objArray(SystemDictionary::HotSpotResolvedJavaMethod_klass(), methods_length, CHECK_NULL);
481 objArrayHandle result (THREAD, r);
482
483 for (int i = 0; i < methods_length; i++) {
484 methodHandle method(THREAD, methods->at(i));
485 Handle holder = JNIHandles::resolve(klass);
486 oop m = VMToCompiler::createResolvedJavaMethod(holder, method(), THREAD);
487 result->obj_at_put(i, m);
488 }
489
490 return JNIHandles::make_local(THREAD, result());
491 C2V_END 476 C2V_END
492 477
493 C2V_VMENTRY(jlong, getMaxCallTargetOffset, (JNIEnv *env, jobject, jlong addr)) 478 C2V_VMENTRY(jlong, getMaxCallTargetOffset, (JNIEnv *env, jobject, jlong addr))
494 address target_addr = (address) addr; 479 address target_addr = (address) addr;
495 if (target_addr != 0x0) { 480 if (target_addr != 0x0) {
964 {CC"lookupTypeInPool", CC"("METASPACE_CONSTANT_POOL"I)"TYPE, FN_PTR(lookupTypeInPool)}, 949 {CC"lookupTypeInPool", CC"("METASPACE_CONSTANT_POOL"I)"TYPE, FN_PTR(lookupTypeInPool)},
965 {CC"lookupReferencedTypeInPool", CC"("METASPACE_CONSTANT_POOL"IB)V", FN_PTR(lookupReferencedTypeInPool)}, 950 {CC"lookupReferencedTypeInPool", CC"("METASPACE_CONSTANT_POOL"IB)V", FN_PTR(lookupReferencedTypeInPool)},
966 {CC"lookupFieldInPool", CC"("METASPACE_CONSTANT_POOL"IB)"FIELD, FN_PTR(lookupFieldInPool)}, 951 {CC"lookupFieldInPool", CC"("METASPACE_CONSTANT_POOL"IB)"FIELD, FN_PTR(lookupFieldInPool)},
967 {CC"resolveMethod", CC"("HS_RESOLVED_TYPE STRING STRING")"METHOD, FN_PTR(resolveMethod)}, 952 {CC"resolveMethod", CC"("HS_RESOLVED_TYPE STRING STRING")"METHOD, FN_PTR(resolveMethod)},
968 {CC"getInstanceFields", CC"("HS_RESOLVED_TYPE")["HS_RESOLVED_FIELD, FN_PTR(getInstanceFields)}, 953 {CC"getInstanceFields", CC"("HS_RESOLVED_TYPE")["HS_RESOLVED_FIELD, FN_PTR(getInstanceFields)},
969 {CC"getMethods", CC"("HS_RESOLVED_TYPE")["HS_RESOLVED_METHOD, FN_PTR(getMethods)}, 954 {CC"getClassInitializer", CC"("HS_RESOLVED_TYPE")"METASPACE_METHOD, FN_PTR(getClassInitializer)},
970 {CC"hasFinalizableSubclass", CC"("HS_RESOLVED_TYPE")Z", FN_PTR(hasFinalizableSubclass)}, 955 {CC"hasFinalizableSubclass", CC"("HS_RESOLVED_TYPE")Z", FN_PTR(hasFinalizableSubclass)},
971 {CC"getMaxCallTargetOffset", CC"(J)J", FN_PTR(getMaxCallTargetOffset)}, 956 {CC"getMaxCallTargetOffset", CC"(J)J", FN_PTR(getMaxCallTargetOffset)},
972 {CC"getMetaspaceMethod", CC"("CLASS"I)"METASPACE_METHOD, FN_PTR(getMetaspaceMethod)}, 957 {CC"getMetaspaceMethod", CC"("CLASS"I)"METASPACE_METHOD, FN_PTR(getMetaspaceMethod)},
973 {CC"initializeConfiguration", CC"("HS_CONFIG")V", FN_PTR(initializeConfiguration)}, 958 {CC"initializeConfiguration", CC"("HS_CONFIG")V", FN_PTR(initializeConfiguration)},
974 {CC"installCode0", CC"("HS_COMPILED_CODE HS_INSTALLED_CODE"[Z)I", FN_PTR(installCode0)}, 959 {CC"installCode0", CC"("HS_COMPILED_CODE HS_INSTALLED_CODE"[Z)I", FN_PTR(installCode0)},