Mercurial > hg > truffle
diff src/share/vm/graal/graalCompilerToVM.cpp @ 7037:dd81042f4eb1
added unit tests for ResolvedJavaType
replaced some CompilerToVM methods used by HotSpotResolvedJavaType with pure Java code
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Tue, 27 Nov 2012 11:21:48 +0100 |
parents | 58dbea9fb973 |
children | 34753b057324 |
line wrap: on
line diff
--- a/src/share/vm/graal/graalCompilerToVM.cpp Tue Nov 27 11:18:34 2012 +0100 +++ b/src/share/vm/graal/graalCompilerToVM.cpp Tue Nov 27 11:21:48 2012 +0100 @@ -504,31 +504,6 @@ return JNIHandles::make_local(THREAD, VMToCompiler::createResolvedJavaMethod(holder, method(), THREAD)); C2V_END -C2V_VMENTRY(jboolean, isSubtypeOf, (JNIEnv *, jobject, jobject klass, jobject jother)) - oop other = JNIHandles::resolve(jother); - assert(other->is_a(HotSpotResolvedJavaType::klass()), "resolved HotSpot type expected"); - assert(JNIHandles::resolve(klass) != NULL, ""); - Klass* thisKlass = java_lang_Class::as_Klass(HotSpotResolvedJavaType::javaMirror(klass)); - Klass* otherKlass = java_lang_Class::as_Klass(HotSpotResolvedJavaType::javaMirror(other)); - if (thisKlass->oop_is_instance()) { - return InstanceKlass::cast(thisKlass)->is_subtype_of(otherKlass); - } else if (thisKlass->oop_is_array()) { - return ArrayKlass::cast(thisKlass)->is_subtype_of(otherKlass); - } else { - fatal("unexpected class type"); - return false; - } -C2V_END - -C2V_VMENTRY(jobject, getLeastCommonAncestor, (JNIEnv *, jobject, jobject this_type, jobject other_type)) - - Klass* this_klass = java_lang_Class::as_Klass(HotSpotResolvedJavaType::javaMirror(this_type)); - Klass* other_klass = java_lang_Class::as_Klass(HotSpotResolvedJavaType::javaMirror(other_type)); - Klass* lca = this_klass->LCA(other_klass); - - return JNIHandles::make_local(GraalCompiler::get_JavaType(lca, THREAD)()); -C2V_END - C2V_VMENTRY(jlong, getPrototypeMarkWord, (JNIEnv *, jobject, jobject klass)) KlassHandle klass_handle(java_lang_Class::as_Klass(HotSpotResolvedJavaType::javaMirror(klass))); if (klass_handle->oop_is_array()) { @@ -538,15 +513,6 @@ } C2V_END -C2V_VMENTRY(jobject, getUniqueConcreteSubtype, (JNIEnv *, jobject, jobject klass)) - KlassHandle klass_handle(java_lang_Class::as_Klass(HotSpotResolvedJavaType::javaMirror(klass))); - Klass *up_cast = klass_handle->up_cast_abstract(); - if (!up_cast->is_interface() && up_cast->subklass() == NULL) { - return JNIHandles::make_local(GraalCompiler::get_JavaType(up_cast, THREAD)()); - } - return NULL; -C2V_END - C2V_VMENTRY(jboolean, isTypeInitialized,(JNIEnv *, jobject, jobject hotspot_klass)) Klass* klass = java_lang_Class::as_Klass(HotSpotResolvedJavaType::javaMirror(hotspot_klass)); assert(klass != NULL, "method must not be called for primitive types"); @@ -646,6 +612,8 @@ set_int(env, config, "superCheckOffsetOffset", in_bytes(Klass::super_check_offset_offset())); set_int(env, config, "secondarySuperCacheOffset", in_bytes(Klass::secondary_super_cache_offset())); set_int(env, config, "secondarySupersOffset", in_bytes(Klass::secondary_supers_offset())); + set_int(env, config, "subklassOffset", in_bytes(Klass::subklass_offset())); + set_int(env, config, "nextSiblingOffset", in_bytes(Klass::next_sibling_offset())); set_int(env, config, "arrayLengthOffset", arrayOopDesc::length_offset_in_bytes()); set_int(env, config, "klassStateOffset", in_bytes(InstanceKlass::init_state_offset())); set_int(env, config, "klassStateFullyInitialized", (int)InstanceKlass::fully_initialized); @@ -962,9 +930,6 @@ {CC"lookupReferencedTypeInPool", CC"("HS_RESOLVED_TYPE"IB)V", FN_PTR(lookupReferencedTypeInPool)}, {CC"lookupFieldInPool", CC"("HS_RESOLVED_TYPE"IB)"FIELD, FN_PTR(lookupFieldInPool)}, {CC"resolveMethod", CC"("HS_RESOLVED_TYPE STRING STRING")"METHOD, FN_PTR(resolveMethod)}, - {CC"isSubtypeOf", CC"("HS_RESOLVED_TYPE TYPE")Z", FN_PTR(isSubtypeOf)}, - {CC"getLeastCommonAncestor", CC"("HS_RESOLVED_TYPE HS_RESOLVED_TYPE")"TYPE, FN_PTR(getLeastCommonAncestor)}, - {CC"getUniqueConcreteSubtype", CC"("HS_RESOLVED_TYPE")"TYPE, FN_PTR(getUniqueConcreteSubtype)}, {CC"getPrototypeMarkWord", CC"("HS_RESOLVED_TYPE")J", FN_PTR(getPrototypeMarkWord)}, {CC"getInstanceFields", CC"("HS_RESOLVED_TYPE")["HS_RESOLVED_FIELD, FN_PTR(getInstanceFields)}, {CC"isTypeInitialized", CC"("HS_RESOLVED_TYPE")Z", FN_PTR(isTypeInitialized)},