Mercurial > hg > graal-compiler
changeset 6277:dddcdb7ae209
removed klass::is_leaf_class() and replaced it's usage in Graal (the only usage) with an explicit test to ignore interface classes
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Wed, 22 Aug 2012 11:00:31 +0200 |
parents | 03c4c25ae726 |
children | 4f9574b2893e |
files | graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaType.java src/share/vm/graal/graalCompilerToVM.cpp src/share/vm/oops/instanceKlass.hpp src/share/vm/oops/klass.hpp src/share/vm/oops/klassKlass.hpp |
diffstat | 5 files changed, 4 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- 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; } }
--- 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;
--- 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;
--- 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.
--- 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;