changeset 22480:f9a6a2f0b414

Invert logic for recording the assumptions of an AssumptionResult to Assumptions; this allows using assumption-free AssumptionResults when compiling without speculative optimizations
author Christian Wimmer <christian.wimmer@oracle.com>
date Fri, 28 Aug 2015 11:23:51 -0700
parents a6adaf9c330d
children 48c212309281 118f9560e0ea
files jvmci/jdk.internal.jvmci.meta/src/jdk/internal/jvmci/meta/Assumptions.java
diffstat 1 files changed, 18 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/jvmci/jdk.internal.jvmci.meta/src/jdk/internal/jvmci/meta/Assumptions.java	Tue Aug 25 15:27:13 2015 -0700
+++ b/jvmci/jdk.internal.jvmci.meta/src/jdk/internal/jvmci/meta/Assumptions.java	Fri Aug 28 11:23:51 2015 -0700
@@ -72,6 +72,24 @@
             System.arraycopy(other.assumptions, 0, newAssumptions, this.assumptions.length, other.assumptions.length);
             this.assumptions = newAssumptions;
         }
+
+        public boolean canRecordTo(Assumptions target) {
+            /*
+             * We can use the result if it is either assumption free, or if we have a valid
+             * Assumptions object where we can record assumptions.
+             */
+            return assumptions.length == 0 || target != null;
+        }
+
+        public void recordTo(Assumptions target) {
+            assert canRecordTo(target);
+
+            if (assumptions.length > 0) {
+                for (Assumption assumption : assumptions) {
+                    target.record(assumption);
+                }
+            }
+        }
     }
 
     /**
@@ -348,12 +366,6 @@
         record(new ConcreteMethod(method, context, impl));
     }
 
-    public void record(AssumptionResult<?> result) {
-        for (Assumption assumption : result.assumptions) {
-            record(assumption);
-        }
-    }
-
     public void record(Assumption assumption) {
         assumptions.add(assumption);
     }