Mercurial > hg > truffle
comparison src/share/vm/graal/graalCompilerToVM.cpp @ 4484:14a00ee82980
Implement eager type resolving.
author | Andreas Woess <andreas.woess@jku.at> |
---|---|
date | Tue, 07 Feb 2012 21:15:58 +0100 |
parents | f400f9554f09 |
children | 3a309467fc8e 818757f088d3 |
comparison
equal
deleted
inserted
replaced
4479:95802b2cec42 | 4484:14a00ee82980 |
---|---|
238 TRACE_graal_3("CompilerToVM::RiMethod_hasCompiledCode"); | 238 TRACE_graal_3("CompilerToVM::RiMethod_hasCompiledCode"); |
239 return getMethodFromHotSpotMethod(hotspot_method)->has_compiled_code(); | 239 return getMethodFromHotSpotMethod(hotspot_method)->has_compiled_code(); |
240 } | 240 } |
241 | 241 |
242 // public RiType RiSignature_lookupType(String returnType, HotSpotTypeResolved accessingClass); | 242 // public RiType RiSignature_lookupType(String returnType, HotSpotTypeResolved accessingClass); |
243 JNIEXPORT jobject JNICALL Java_com_oracle_max_graal_hotspot_bridge_CompilerToVMImpl_RiSignature_1lookupType(JNIEnv *env, jobject, jstring jname, jobject accessingClass) { | 243 JNIEXPORT jobject JNICALL Java_com_oracle_max_graal_hotspot_bridge_CompilerToVMImpl_RiSignature_1lookupType(JNIEnv *env, jobject, jstring jname, jobject accessingClass, jboolean eagerResolve) { |
244 TRACE_graal_3("CompilerToVM::RiSignature_lookupType"); | 244 TRACE_graal_3("CompilerToVM::RiSignature_lookupType"); |
245 VM_ENTRY_MARK; | 245 VM_ENTRY_MARK; |
246 ResourceMark rm; | 246 ResourceMark rm; |
247 | 247 |
248 Symbol* nameSymbol = VmIds::toSymbol(jname); | 248 Symbol* nameSymbol = VmIds::toSymbol(jname); |
273 Handle protectionDomain; | 273 Handle protectionDomain; |
274 if (JNIHandles::resolve(accessingClass) != NULL) { | 274 if (JNIHandles::resolve(accessingClass) != NULL) { |
275 classloader = java_lang_Class::as_klassOop(HotSpotTypeResolved::javaMirror(accessingClass))->klass_part()->class_loader(); | 275 classloader = java_lang_Class::as_klassOop(HotSpotTypeResolved::javaMirror(accessingClass))->klass_part()->class_loader(); |
276 protectionDomain = java_lang_Class::as_klassOop(HotSpotTypeResolved::javaMirror(accessingClass))->klass_part()->protection_domain(); | 276 protectionDomain = java_lang_Class::as_klassOop(HotSpotTypeResolved::javaMirror(accessingClass))->klass_part()->protection_domain(); |
277 } | 277 } |
278 resolved_type = SystemDictionary::resolve_or_null(nameSymbol, classloader, protectionDomain, THREAD); | 278 if (eagerResolve) { |
279 resolved_type = SystemDictionary::resolve_or_null(nameSymbol, classloader, protectionDomain, THREAD); | |
280 } else { | |
281 resolved_type = SystemDictionary::find(nameSymbol, classloader, protectionDomain, THREAD); | |
282 } | |
279 if (HAS_PENDING_EXCEPTION) { | 283 if (HAS_PENDING_EXCEPTION) { |
280 CLEAR_PENDING_EXCEPTION; | 284 CLEAR_PENDING_EXCEPTION; |
281 resolved_type = NULL; | 285 resolved_type = NULL; |
282 } | 286 } |
283 } | 287 } |
933 {CC"getRiMethod", CC"("REFLECT_METHOD")"METHOD, FN_PTR(getRiMethod)}, | 937 {CC"getRiMethod", CC"("REFLECT_METHOD")"METHOD, FN_PTR(getRiMethod)}, |
934 {CC"RiMethod_methodData", CC"("RESOLVED_METHOD")"METHOD_DATA, FN_PTR(RiMethod_1methodData)}, | 938 {CC"RiMethod_methodData", CC"("RESOLVED_METHOD")"METHOD_DATA, FN_PTR(RiMethod_1methodData)}, |
935 {CC"HotSpotMethodData_isMature", CC"("METHOD_DATA")Z", FN_PTR(HotSpotMethodData_1isMature)}, | 939 {CC"HotSpotMethodData_isMature", CC"("METHOD_DATA")Z", FN_PTR(HotSpotMethodData_1isMature)}, |
936 {CC"RiMethod_invocationCount", CC"("RESOLVED_METHOD")I", FN_PTR(RiMethod_1invocationCount)}, | 940 {CC"RiMethod_invocationCount", CC"("RESOLVED_METHOD")I", FN_PTR(RiMethod_1invocationCount)}, |
937 {CC"RiMethod_hasCompiledCode", CC"("RESOLVED_METHOD")Z", FN_PTR(RiMethod_1hasCompiledCode)}, | 941 {CC"RiMethod_hasCompiledCode", CC"("RESOLVED_METHOD")Z", FN_PTR(RiMethod_1hasCompiledCode)}, |
938 {CC"RiSignature_lookupType", CC"("STRING RESOLVED_TYPE")"TYPE, FN_PTR(RiSignature_1lookupType)}, | 942 {CC"RiSignature_lookupType", CC"("STRING RESOLVED_TYPE"Z)"TYPE, FN_PTR(RiSignature_1lookupType)}, |
939 {CC"RiConstantPool_lookupConstant", CC"("RESOLVED_TYPE"I)"OBJECT, FN_PTR(RiConstantPool_1lookupConstant)}, | 943 {CC"RiConstantPool_lookupConstant", CC"("RESOLVED_TYPE"I)"OBJECT, FN_PTR(RiConstantPool_1lookupConstant)}, |
940 {CC"RiConstantPool_lookupMethod", CC"("RESOLVED_TYPE"IB)"METHOD, FN_PTR(RiConstantPool_1lookupMethod)}, | 944 {CC"RiConstantPool_lookupMethod", CC"("RESOLVED_TYPE"IB)"METHOD, FN_PTR(RiConstantPool_1lookupMethod)}, |
941 {CC"RiConstantPool_lookupType", CC"("RESOLVED_TYPE"I)"TYPE, FN_PTR(RiConstantPool_1lookupType)}, | 945 {CC"RiConstantPool_lookupType", CC"("RESOLVED_TYPE"I)"TYPE, FN_PTR(RiConstantPool_1lookupType)}, |
942 {CC"RiConstantPool_loadReferencedType", CC"("RESOLVED_TYPE"IB)V", FN_PTR(RiConstantPool_1loadReferencedType)}, | 946 {CC"RiConstantPool_loadReferencedType", CC"("RESOLVED_TYPE"IB)V", FN_PTR(RiConstantPool_1loadReferencedType)}, |
943 {CC"RiConstantPool_lookupField", CC"("RESOLVED_TYPE"IB)"FIELD, FN_PTR(RiConstantPool_1lookupField)}, | 947 {CC"RiConstantPool_lookupField", CC"("RESOLVED_TYPE"IB)"FIELD, FN_PTR(RiConstantPool_1lookupField)}, |