diff src/share/vm/graal/graalCodeInstaller.cpp @ 9012:2979aaac95af

assumptions: enable NoFinalizableSubclass assumption
author Bernhard Urban <bernhard.urban@jku.at>
date Thu, 11 Apr 2013 22:38:53 +0200
parents 9f3a77848ea2
children 700f6a63763a
line wrap: on
line diff
--- a/src/share/vm/graal/graalCodeInstaller.cpp	Thu Apr 11 21:43:14 2013 +0200
+++ b/src/share/vm/graal/graalCodeInstaller.cpp	Thu Apr 11 22:38:53 2013 +0200
@@ -294,6 +294,8 @@
       if (!assumption.is_null()) {
         if (assumption->klass() == Assumptions_MethodContents::klass()) {
           assumption_MethodContents(assumption);
+        } else if (assumption->klass() == Assumptions_NoFinalizableSubclass::klass()) {
+          assumption_NoFinalizableSubclass(assumption);
         } else if (assumption->klass() == Assumptions_ConcreteSubtype::klass()) {
           assumption_ConcreteSubtype(assumption);
         } else if (assumption->klass() == Assumptions_ConcreteMethod::klass()) {
@@ -447,6 +449,12 @@
   _dependencies->assert_evol_method(method());
 }
 
+void CodeInstaller::assumption_NoFinalizableSubclass(Handle assumption) {
+  Handle receiverType_handle = Assumptions_NoFinalizableSubclass::receiverType(assumption());
+  Klass* receiverType = asKlass(HotSpotResolvedObjectType::metaspaceKlass(receiverType_handle));
+  _dependencies->assert_has_no_finalizable_subclasses(receiverType);
+}
+
 void CodeInstaller::assumption_ConcreteSubtype(Handle assumption) {
   Handle context_handle = Assumptions_ConcreteSubtype::context(assumption());
   Handle subtype_handle = Assumptions_ConcreteSubtype::subtype(assumption());