Mercurial > hg > truffle
comparison src/share/vm/graal/graalVMEntries.cpp @ 3577:96c40b338c1a
Added new method that loads and initializes a class that is referenced by a cp entry.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Tue, 13 Sep 2011 19:59:10 +0200 |
parents | 076a2c9caf71 |
children | cda0630a8640 |
comparison
equal
deleted
inserted
replaced
3576:c94966c5fb41 | 3577:96c40b338c1a |
---|---|
565 | 565 |
566 ciInstanceKlass* loading_klass = (ciInstanceKlass *) CURRENT_ENV->get_object(cp->pool_holder()); | 566 ciInstanceKlass* loading_klass = (ciInstanceKlass *) CURRENT_ENV->get_object(cp->pool_holder()); |
567 bool is_accessible = false; | 567 bool is_accessible = false; |
568 ciKlass *klass = CURRENT_ENV->get_klass_by_index(cp, index, is_accessible, loading_klass); | 568 ciKlass *klass = CURRENT_ENV->get_klass_by_index(cp, index, is_accessible, loading_klass); |
569 return JNIHandles::make_local(THREAD, GraalCompiler::get_RiType(klass, cp->klass(), THREAD)); | 569 return JNIHandles::make_local(THREAD, GraalCompiler::get_RiType(klass, cp->klass(), THREAD)); |
570 } | |
571 | |
572 // public void RiConstantPool_loadReferencedType(long vmId, int cpi); | |
573 JNIEXPORT void JNICALL Java_com_oracle_graal_runtime_VMEntries_RiConstantPool_1loadReferencedType(JNIEnv *env, jobject, jlong vmId, jint index, jbyte op) { | |
574 TRACE_graal_3("VMEntries::RiConstantPool_lookupType"); | |
575 VM_ENTRY_MARK; | |
576 | |
577 constantPoolOop cp = VmIds::get<constantPoolOop>(vmId); | |
578 int byteCode = (op & 0xFF); | |
579 if (byteCode != Bytecodes::_checkcast && byteCode != Bytecodes::_instanceof && byteCode != Bytecodes::_new && byteCode != Bytecodes::_anewarray && byteCode != Bytecodes::_multianewarray) { | |
580 index = cp->remap_instruction_operand_from_cache(GraalCompiler::to_cp_index_u2(index)); | |
581 } | |
582 constantTag tag = cp->tag_at(index); | |
583 if (tag.is_field_or_method()) { | |
584 index = cp->uncached_klass_ref_index_at(index); | |
585 tag = cp->tag_at(index); | |
586 } | |
587 | |
588 if (tag.is_unresolved_klass()) { | |
589 klassOop klass = cp->klass_at(index, CHECK); | |
590 if (klass->klass_part()->oop_is_instance()) { | |
591 instanceKlass::cast(klass)->initialize(CHECK); | |
592 } | |
593 } | |
570 } | 594 } |
571 | 595 |
572 // public RiField RiConstantPool_lookupField(long vmId, int cpi); | 596 // public RiField RiConstantPool_lookupField(long vmId, int cpi); |
573 JNIEXPORT jobject JNICALL Java_com_oracle_graal_runtime_VMEntries_RiConstantPool_1lookupField(JNIEnv *env, jobject, jlong vmId, jint index, jbyte byteCode) { | 597 JNIEXPORT jobject JNICALL Java_com_oracle_graal_runtime_VMEntries_RiConstantPool_1lookupField(JNIEnv *env, jobject, jlong vmId, jint index, jbyte byteCode) { |
574 TRACE_graal_3("VMEntries::RiConstantPool_lookupField"); | 598 TRACE_graal_3("VMEntries::RiConstantPool_lookupField"); |
1012 #define STRING "Ljava/lang/String;" | 1036 #define STRING "Ljava/lang/String;" |
1013 #define OBJECT "Ljava/lang/Object;" | 1037 #define OBJECT "Ljava/lang/Object;" |
1014 #define CLASS "Ljava/lang/Class;" | 1038 #define CLASS "Ljava/lang/Class;" |
1015 | 1039 |
1016 JNINativeMethod VMEntries_methods[] = { | 1040 JNINativeMethod VMEntries_methods[] = { |
1017 {CC"RiMethod_code", CC"("RESOLVED_METHOD")[B", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_1code)}, | 1041 {CC"RiMethod_code", CC"("RESOLVED_METHOD")[B", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_1code)}, |
1018 {CC"RiMethod_signature", CC"("RESOLVED_METHOD")"STRING, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_1signature)}, | 1042 {CC"RiMethod_signature", CC"("RESOLVED_METHOD")"STRING, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_1signature)}, |
1019 {CC"RiMethod_exceptionHandlers", CC"("RESOLVED_METHOD")"EXCEPTION_HANDLERS, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_1exceptionHandlers)}, | 1043 {CC"RiMethod_exceptionHandlers", CC"("RESOLVED_METHOD")"EXCEPTION_HANDLERS, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_1exceptionHandlers)}, |
1020 {CC"RiMethod_hasBalancedMonitors", CC"("RESOLVED_METHOD")Z", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_1hasBalancedMonitors)}, | 1044 {CC"RiMethod_hasBalancedMonitors", CC"("RESOLVED_METHOD")Z", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_1hasBalancedMonitors)}, |
1021 {CC"RiMethod_uniqueConcreteMethod", CC"("RESOLVED_METHOD")"METHOD, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_1uniqueConcreteMethod)}, | 1045 {CC"RiMethod_uniqueConcreteMethod", CC"("RESOLVED_METHOD")"METHOD, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_1uniqueConcreteMethod)}, |
1022 {CC"getRiMethod", CC"("REFLECT_METHOD")"METHOD, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_getRiMethod)}, | 1046 {CC"getRiMethod", CC"("REFLECT_METHOD")"METHOD, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_getRiMethod)}, |
1023 {CC"RiMethod_typeProfile", CC"("RESOLVED_METHOD"I)"TYPE_PROFILE, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_2typeProfile)}, | 1047 {CC"RiMethod_typeProfile", CC"("RESOLVED_METHOD"I)"TYPE_PROFILE, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_2typeProfile)}, |
1024 {CC"RiMethod_branchProbability", CC"("RESOLVED_METHOD"I)D", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_2branchProbability)}, | 1048 {CC"RiMethod_branchProbability", CC"("RESOLVED_METHOD"I)D", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_2branchProbability)}, |
1025 {CC"RiMethod_switchProbability", CC"("RESOLVED_METHOD"I)[D", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_2switchProbability)}, | 1049 {CC"RiMethod_switchProbability", CC"("RESOLVED_METHOD"I)[D", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_2switchProbability)}, |
1026 {CC"RiMethod_invocationCount", CC"("RESOLVED_METHOD")I", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_1invocationCount)}, | 1050 {CC"RiMethod_invocationCount", CC"("RESOLVED_METHOD")I", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_1invocationCount)}, |
1027 {CC"RiMethod_exceptionProbability", CC"("RESOLVED_METHOD"I)I", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_2exceptionProbability)}, | 1051 {CC"RiMethod_exceptionProbability", CC"("RESOLVED_METHOD"I)I", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_2exceptionProbability)}, |
1028 {CC"RiMethod_hasCompiledCode", CC"("RESOLVED_METHOD")Z", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_1hasCompiledCode)}, | 1052 {CC"RiMethod_hasCompiledCode", CC"("RESOLVED_METHOD")Z", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_1hasCompiledCode)}, |
1029 {CC"RiMethod_compiledCodeSize", CC"("RESOLVED_METHOD")I", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_1compiledCodeSize)}, | 1053 {CC"RiMethod_compiledCodeSize", CC"("RESOLVED_METHOD")I", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiMethod_1compiledCodeSize)}, |
1030 {CC"RiSignature_lookupType", CC"("STRING RESOLVED_TYPE")"TYPE, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiSignature_1lookupType)}, | 1054 {CC"RiSignature_lookupType", CC"("STRING RESOLVED_TYPE")"TYPE, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiSignature_1lookupType)}, |
1031 {CC"RiConstantPool_lookupConstant", CC"("PROXY"I)"OBJECT, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiConstantPool_1lookupConstant)}, | 1055 {CC"RiConstantPool_lookupConstant", CC"("PROXY"I)"OBJECT, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiConstantPool_1lookupConstant)}, |
1032 {CC"RiConstantPool_lookupMethod", CC"("PROXY"IB)"METHOD, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiConstantPool_1lookupMethod)}, | 1056 {CC"RiConstantPool_lookupMethod", CC"("PROXY"IB)"METHOD, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiConstantPool_1lookupMethod)}, |
1033 {CC"RiConstantPool_lookupSignature", CC"("PROXY"I)"SIGNATURE, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiConstantPool_1lookupSignature)}, | 1057 {CC"RiConstantPool_lookupSignature", CC"("PROXY"I)"SIGNATURE, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiConstantPool_1lookupSignature)}, |
1034 {CC"RiConstantPool_lookupType", CC"("PROXY"I)"TYPE, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiConstantPool_1lookupType)}, | 1058 {CC"RiConstantPool_lookupType", CC"("PROXY"I)"TYPE, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiConstantPool_1lookupType)}, |
1035 {CC"RiConstantPool_lookupField", CC"("PROXY"IB)"FIELD, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiConstantPool_1lookupField)}, | 1059 {CC"RiConstantPool_loadReferencedType", CC"("PROXY"IB)V", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiConstantPool_1loadReferencedType)}, |
1036 {CC"RiType_constantPool", CC"("RESOLVED_TYPE")"CONSTANT_POOL, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiType_1constantPool)}, | 1060 {CC"RiConstantPool_lookupField", CC"("PROXY"IB)"FIELD, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiConstantPool_1lookupField)}, |
1037 {CC"RiType_resolveMethodImpl", CC"("RESOLVED_TYPE STRING STRING")"METHOD, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiType_3resolveMethodImpl)}, | 1061 {CC"RiType_constantPool", CC"("RESOLVED_TYPE")"CONSTANT_POOL, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiType_1constantPool)}, |
1038 {CC"RiType_isSubtypeOf", CC"("RESOLVED_TYPE TYPE")Z", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiType_2isSubtypeOf)}, | 1062 {CC"RiType_resolveMethodImpl", CC"("RESOLVED_TYPE STRING STRING")"METHOD, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiType_3resolveMethodImpl)}, |
1039 {CC"RiType_componentType", CC"("RESOLVED_TYPE")"TYPE, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiType_1componentType)}, | 1063 {CC"RiType_isSubtypeOf", CC"("RESOLVED_TYPE TYPE")Z", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiType_2isSubtypeOf)}, |
1040 {CC"RiType_uniqueConcreteSubtype", CC"("RESOLVED_TYPE")"TYPE, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiType_1uniqueConcreteSubtype)}, | 1064 {CC"RiType_componentType", CC"("RESOLVED_TYPE")"TYPE, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiType_1componentType)}, |
1041 {CC"RiType_superType", CC"("RESOLVED_TYPE")"TYPE, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiType_1superType)}, | 1065 {CC"RiType_uniqueConcreteSubtype", CC"("RESOLVED_TYPE")"TYPE, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiType_1uniqueConcreteSubtype)}, |
1042 {CC"RiType_arrayOf", CC"("RESOLVED_TYPE")"TYPE, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiType_1arrayOf)}, | 1066 {CC"RiType_superType", CC"("RESOLVED_TYPE")"TYPE, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiType_1superType)}, |
1043 {CC"RiType_fields", CC"("RESOLVED_TYPE")["FIELD, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiType_1fields)}, | 1067 {CC"RiType_arrayOf", CC"("RESOLVED_TYPE")"TYPE, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiType_1arrayOf)}, |
1044 {CC"RiType_isInitialized", CC"("RESOLVED_TYPE")Z", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiType_1isInitialized)}, | 1068 {CC"RiType_fields", CC"("RESOLVED_TYPE")["FIELD, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiType_1fields)}, |
1045 {CC"getPrimitiveArrayType", CC"("CI_KIND")"TYPE, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_getPrimitiveArrayType)}, | 1069 {CC"RiType_isInitialized", CC"("RESOLVED_TYPE")Z", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_RiType_1isInitialized)}, |
1046 {CC"getMaxCallTargetOffset", CC"("CI_RUNTIME_CALL")J", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_getMaxCallTargetOffset)}, | 1070 {CC"getPrimitiveArrayType", CC"("CI_KIND")"TYPE, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_getPrimitiveArrayType)}, |
1047 {CC"getType", CC"("CLASS")"TYPE, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_getType)}, | 1071 {CC"getMaxCallTargetOffset", CC"("CI_RUNTIME_CALL")J", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_getMaxCallTargetOffset)}, |
1048 {CC"getConfiguration", CC"()"CONFIG, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_getConfiguration)}, | 1072 {CC"getType", CC"("CLASS")"TYPE, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_getType)}, |
1049 {CC"installMethod", CC"("TARGET_METHOD")V", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_installMethod)}, | 1073 {CC"getConfiguration", CC"()"CONFIG, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_getConfiguration)}, |
1050 {CC"installStub", CC"("TARGET_METHOD")"PROXY, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_installStub)}, | 1074 {CC"installMethod", CC"("TARGET_METHOD")V", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_installMethod)}, |
1051 {CC"recordBailout", CC"("STRING")V", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_recordBailout)} | 1075 {CC"installStub", CC"("TARGET_METHOD")"PROXY, FN_PTR(Java_com_oracle_graal_runtime_VMEntries_installStub)}, |
1076 {CC"recordBailout", CC"("STRING")V", FN_PTR(Java_com_oracle_graal_runtime_VMEntries_recordBailout)} | |
1052 }; | 1077 }; |
1053 | 1078 |
1054 int VMEntries_methods_count() { | 1079 int VMEntries_methods_count() { |
1055 return sizeof(VMEntries_methods) / sizeof(JNINativeMethod); | 1080 return sizeof(VMEntries_methods) / sizeof(JNINativeMethod); |
1056 } | 1081 } |