Mercurial > hg > graal-jvmci-8
comparison src/share/vm/graal/graalCompilerToVM.cpp @ 13478:fe03864a2c72
replaced CompilerToVM.getUniqueImplementor with getKlassImplementor and moved the logic into Java
author | twisti |
---|---|
date | Wed, 25 Dec 2013 12:14:29 -0800 |
parents | 52eb34dd84d7 |
children | 606959535fd4 |
comparison
equal
deleted
inserted
replaced
13477:37f0c86f58d4 | 13478:fe03864a2c72 |
---|---|
179 MutexLocker locker(Compile_lock); | 179 MutexLocker locker(Compile_lock); |
180 Method* ucm = Dependencies::find_unique_concrete_method(holder(), method()); | 180 Method* ucm = Dependencies::find_unique_concrete_method(holder(), method()); |
181 return (jlong) (address) ucm; | 181 return (jlong) (address) ucm; |
182 C2V_END | 182 C2V_END |
183 | 183 |
184 C2V_VMENTRY(jobject, getUniqueImplementor, (JNIEnv *, jobject, jobject interface_type)) | 184 C2V_VMENTRY(jlong, getKlassImplementor, (JNIEnv *, jobject, jlong metaspace_klass)) |
185 InstanceKlass* klass = (InstanceKlass*) java_lang_Class::as_Klass(HotSpotResolvedObjectType::javaClass(interface_type)); | 185 InstanceKlass* klass = (InstanceKlass*) asKlass(metaspace_klass); |
186 assert(klass->is_interface(), "must be"); | 186 return (jlong) (address) klass->implementor(); |
187 if (klass->nof_implementors() == 1) { | |
188 InstanceKlass* implementor = (InstanceKlass*) klass->implementor(); | |
189 if (!implementor->is_abstract() && !implementor->is_interface() && implementor->is_leaf_class()) { | |
190 Handle type = GraalCompiler::createHotSpotResolvedObjectType(implementor, CHECK_NULL); | |
191 return JNIHandles::make_local(THREAD, type()); | |
192 } | |
193 } | |
194 return NULL; | |
195 C2V_END | 187 C2V_END |
196 | 188 |
197 C2V_VMENTRY(void, initializeMethod,(JNIEnv *, jobject, jlong metaspace_method, jobject hotspot_method)) | 189 C2V_VMENTRY(void, initializeMethod,(JNIEnv *, jobject, jlong metaspace_method, jobject hotspot_method)) |
198 methodHandle method = asMethod(metaspace_method); | 190 methodHandle method = asMethod(metaspace_method); |
199 InstanceKlass::cast(HotSpotResolvedJavaMethod::klass())->initialize(CHECK); | 191 InstanceKlass::cast(HotSpotResolvedJavaMethod::klass())->initialize(CHECK); |
837 C2V_END | 829 C2V_END |
838 | 830 |
839 #define CC (char*) /*cast a literal from (const char*)*/ | 831 #define CC (char*) /*cast a literal from (const char*)*/ |
840 #define FN_PTR(f) CAST_FROM_FN_PTR(void*, &(c2v_ ## f)) | 832 #define FN_PTR(f) CAST_FROM_FN_PTR(void*, &(c2v_ ## f)) |
841 | 833 |
842 #define RESOLVED_TYPE "Lcom/oracle/graal/api/meta/ResolvedJavaType;" | |
843 #define TYPE "Lcom/oracle/graal/api/meta/JavaType;" | 834 #define TYPE "Lcom/oracle/graal/api/meta/JavaType;" |
844 #define METHOD "Lcom/oracle/graal/api/meta/JavaMethod;" | 835 #define METHOD "Lcom/oracle/graal/api/meta/JavaMethod;" |
845 #define FIELD "Lcom/oracle/graal/api/meta/JavaField;" | 836 #define FIELD "Lcom/oracle/graal/api/meta/JavaField;" |
846 #define SIGNATURE "Lcom/oracle/graal/api/meta/Signature;" | |
847 #define CONSTANT_POOL "Lcom/oracle/graal/api/meta/ConstantPool;" | |
848 #define CONSTANT "Lcom/oracle/graal/api/meta/Constant;" | |
849 #define KIND "Lcom/oracle/graal/api/meta/Kind;" | |
850 #define RUNTIME_CALL "Lcom/oracle/graal/api/code/RuntimeCall;" | |
851 #define REFLECT_METHOD "Ljava/lang/reflect/Method;" | |
852 #define REFLECT_CONSTRUCTOR "Ljava/lang/reflect/Constructor;" | |
853 #define STRING "Ljava/lang/String;" | 837 #define STRING "Ljava/lang/String;" |
854 #define OBJECT "Ljava/lang/Object;" | 838 #define OBJECT "Ljava/lang/Object;" |
855 #define CLASS "Ljava/lang/Class;" | 839 #define CLASS "Ljava/lang/Class;" |
856 #define STACK_TRACE_ELEMENT "Ljava/lang/StackTraceElement;" | 840 #define STACK_TRACE_ELEMENT "Ljava/lang/StackTraceElement;" |
857 #define HS_RESOLVED_TYPE "Lcom/oracle/graal/hotspot/meta/HotSpotResolvedObjectType;" | 841 #define HS_RESOLVED_TYPE "Lcom/oracle/graal/hotspot/meta/HotSpotResolvedObjectType;" |
858 #define HS_RESOLVED_METHOD "Lcom/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethod;" | 842 #define HS_RESOLVED_METHOD "Lcom/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethod;" |
859 #define HS_RESOLVED_FIELD "Lcom/oracle/graal/hotspot/meta/HotSpotResolvedJavaField;" | 843 #define HS_RESOLVED_FIELD "Lcom/oracle/graal/hotspot/meta/HotSpotResolvedJavaField;" |
860 #define HS_COMPILED_CODE "Lcom/oracle/graal/hotspot/HotSpotCompiledCode;" | 844 #define HS_COMPILED_CODE "Lcom/oracle/graal/hotspot/HotSpotCompiledCode;" |
861 #define HS_CONFIG "Lcom/oracle/graal/hotspot/HotSpotVMConfig;" | 845 #define HS_CONFIG "Lcom/oracle/graal/hotspot/HotSpotVMConfig;" |
862 #define HS_METHOD "Lcom/oracle/graal/hotspot/meta/HotSpotMethod;" | |
863 #define HS_INSTALLED_CODE "Lcom/oracle/graal/hotspot/meta/HotSpotInstalledCode;" | 846 #define HS_INSTALLED_CODE "Lcom/oracle/graal/hotspot/meta/HotSpotInstalledCode;" |
847 #define METASPACE_KLASS "J" | |
864 #define METASPACE_METHOD "J" | 848 #define METASPACE_METHOD "J" |
865 #define METASPACE_CONSTANT_POOL "J" | 849 #define METASPACE_CONSTANT_POOL "J" |
866 | 850 |
867 JNINativeMethod CompilerToVM_methods[] = { | 851 JNINativeMethod CompilerToVM_methods[] = { |
868 {CC"initializeBytecode", CC"("METASPACE_METHOD"[B)[B", FN_PTR(initializeBytecode)}, | 852 {CC"initializeBytecode", CC"("METASPACE_METHOD"[B)[B", FN_PTR(initializeBytecode)}, |
869 {CC"exceptionTableStart", CC"("METASPACE_METHOD")J", FN_PTR(exceptionTableStart)}, | 853 {CC"exceptionTableStart", CC"("METASPACE_METHOD")J", FN_PTR(exceptionTableStart)}, |
870 {CC"hasBalancedMonitors", CC"("METASPACE_METHOD")Z", FN_PTR(hasBalancedMonitors)}, | 854 {CC"hasBalancedMonitors", CC"("METASPACE_METHOD")Z", FN_PTR(hasBalancedMonitors)}, |
871 {CC"findUniqueConcreteMethod", CC"("METASPACE_METHOD")"METASPACE_METHOD, FN_PTR(findUniqueConcreteMethod)}, | 855 {CC"findUniqueConcreteMethod", CC"("METASPACE_METHOD")"METASPACE_METHOD, FN_PTR(findUniqueConcreteMethod)}, |
872 {CC"getUniqueImplementor", CC"("HS_RESOLVED_TYPE")"RESOLVED_TYPE, FN_PTR(getUniqueImplementor)}, | 856 {CC"getKlassImplementor", CC"("METASPACE_KLASS")"METASPACE_KLASS, FN_PTR(getKlassImplementor)}, |
873 {CC"getStackTraceElement", CC"("METASPACE_METHOD"I)"STACK_TRACE_ELEMENT, FN_PTR(getStackTraceElement)}, | 857 {CC"getStackTraceElement", CC"("METASPACE_METHOD"I)"STACK_TRACE_ELEMENT, FN_PTR(getStackTraceElement)}, |
874 {CC"initializeMethod", CC"("METASPACE_METHOD HS_RESOLVED_METHOD")V", FN_PTR(initializeMethod)}, | 858 {CC"initializeMethod", CC"("METASPACE_METHOD HS_RESOLVED_METHOD")V", FN_PTR(initializeMethod)}, |
875 {CC"doNotInlineOrCompile", CC"("METASPACE_METHOD")V", FN_PTR(doNotInlineOrCompile)}, | 859 {CC"doNotInlineOrCompile", CC"("METASPACE_METHOD")V", FN_PTR(doNotInlineOrCompile)}, |
876 {CC"isMethodCompilable", CC"("METASPACE_METHOD")Z", FN_PTR(isMethodCompilable)}, | 860 {CC"isMethodCompilable", CC"("METASPACE_METHOD")Z", FN_PTR(isMethodCompilable)}, |
877 {CC"getCompiledCodeSize", CC"("METASPACE_METHOD")I", FN_PTR(getCompiledCodeSize)}, | 861 {CC"getCompiledCodeSize", CC"("METASPACE_METHOD")I", FN_PTR(getCompiledCodeSize)}, |