diff src/share/vm/graal/graalCodeInstaller.cpp @ 19801:deab43a789ad

Split LeafType off from ConcreteSubtype
author Tom Rodriguez <tom.rodriguez@oracle.com>
date Wed, 11 Mar 2015 17:45:21 -0700
parents 6a3832494e24
children c1f116cd4b67
line wrap: on
line diff
--- a/src/share/vm/graal/graalCodeInstaller.cpp	Wed Mar 11 17:32:04 2015 -0700
+++ b/src/share/vm/graal/graalCodeInstaller.cpp	Wed Mar 11 17:45:21 2015 -0700
@@ -400,6 +400,8 @@
           assumption_NoFinalizableSubclass(assumption);
         } else if (assumption->klass() == Assumptions_ConcreteSubtype::klass()) {
           assumption_ConcreteSubtype(assumption);
+        } else if (assumption->klass() == Assumptions_LeafType::klass()) {
+          assumption_LeafType(assumption);
         } else if (assumption->klass() == Assumptions_ConcreteMethod::klass()) {
           assumption_ConcreteMethod(assumption);
         } else if (assumption->klass() == Assumptions_CallSiteTargetValue::klass()) {
@@ -658,11 +660,15 @@
   Klass* context = java_lang_Class::as_Klass(HotSpotResolvedObjectTypeImpl::javaClass(context_handle));
   Klass* subtype = java_lang_Class::as_Klass(HotSpotResolvedObjectTypeImpl::javaClass(subtype_handle));
 
-  if (context != subtype) {
-    assert(context->is_abstract(), "");
-    _dependencies->assert_abstract_with_unique_concrete_subtype(context, subtype);
-  }
-  _dependencies->assert_leaf_type(subtype);
+  assert(context->is_abstract(), "");
+  _dependencies->assert_abstract_with_unique_concrete_subtype(context, subtype);
+}
+
+void CodeInstaller::assumption_LeafType(Handle assumption) {
+  Handle context_handle = Assumptions_LeafType::context(assumption());
+  Klass* context = java_lang_Class::as_Klass(HotSpotResolvedObjectTypeImpl::javaClass(context_handle));
+
+  _dependencies->assert_leaf_type(context);
 }
 
 void CodeInstaller::assumption_ConcreteMethod(Handle assumption) {