# HG changeset patch # User Doug Simon # Date 1345626031 -7200 # Node ID dddcdb7ae209715e42dffc42d19bc1acba084a2a # Parent 03c4c25ae726e91961869de8d3747e7d40755032 removed klass::is_leaf_class() and replaced it's usage in Graal (the only usage) with an explicit test to ignore interface classes diff -r 03c4c25ae726 -r dddcdb7ae209 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaType.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaType.java Tue Aug 21 11:53:04 2012 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaType.java Wed Aug 22 11:00:31 2012 +0200 @@ -88,7 +88,9 @@ if (isArrayClass()) { return Modifier.isFinal(componentType().accessFlags()) ? this : null; } else { - return (ResolvedJavaType) HotSpotGraalRuntime.getInstance().getCompilerToVM().JavaType_uniqueConcreteSubtype(this); + ResolvedJavaType subtype = (ResolvedJavaType) HotSpotGraalRuntime.getInstance().getCompilerToVM().JavaType_uniqueConcreteSubtype(this); + assert subtype == null || !subtype.isInterface(); + return subtype; } } diff -r 03c4c25ae726 -r dddcdb7ae209 src/share/vm/graal/graalCompilerToVM.cpp --- a/src/share/vm/graal/graalCompilerToVM.cpp Tue Aug 21 11:53:04 2012 +0200 +++ b/src/share/vm/graal/graalCompilerToVM.cpp Wed Aug 22 11:00:31 2012 +0200 @@ -640,7 +640,7 @@ VM_ENTRY_MARK; KlassHandle klass_handle(java_lang_Class::as_klassOop(HotSpotResolvedJavaType::javaMirror(klass))); Klass *up_cast = klass_handle->up_cast_abstract(); - if (up_cast->is_leaf_class()) { + if (!up_cast->is_interface() && up_cast->subklass() == NULL) { return JNIHandles::make_local(GraalCompiler::get_JavaType(up_cast, THREAD)()); } return NULL; diff -r 03c4c25ae726 -r dddcdb7ae209 src/share/vm/oops/instanceKlass.hpp --- a/src/share/vm/oops/instanceKlass.hpp Tue Aug 21 11:53:04 2012 +0200 +++ b/src/share/vm/oops/instanceKlass.hpp Wed Aug 22 11:00:31 2012 +0200 @@ -739,7 +739,6 @@ void process_interfaces(Thread *thread); // virtual operations from Klass - bool is_leaf_class() const { return _subklass == NULL; } objArrayOop compute_secondary_supers(int num_extra_slots, TRAPS); bool compute_is_subtype_of(klassOop k); bool can_be_primary_super_slow() const; diff -r 03c4c25ae726 -r dddcdb7ae209 src/share/vm/oops/klass.hpp --- a/src/share/vm/oops/klass.hpp Tue Aug 21 11:53:04 2012 +0200 +++ b/src/share/vm/oops/klass.hpp Wed Aug 22 11:00:31 2012 +0200 @@ -554,9 +554,6 @@ // computes the subtype relationship virtual bool compute_is_subtype_of(klassOop k); public: - // subclass accessor (here for convenience; undefined for non-klass objects) - virtual bool is_leaf_class() const { fatal("not a class"); return false; } - public: // ALL FUNCTIONS BELOW THIS POINT ARE DISPATCHED FROM AN OOP // These functions describe behavior for the oop not the KLASS. diff -r 03c4c25ae726 -r dddcdb7ae209 src/share/vm/oops/klassKlass.hpp --- a/src/share/vm/oops/klassKlass.hpp Tue Aug 21 11:53:04 2012 +0200 +++ b/src/share/vm/oops/klassKlass.hpp Wed Aug 22 11:00:31 2012 +0200 @@ -39,7 +39,6 @@ public: // Testing bool oop_is_klass() const { return true; } - bool is_leaf_class() const { return true; } // Sizing int oop_size(oop obj) const;