changeset 22303:1362f35d1f5e

Merge with 26e79a4358fef856ee2ee33f65d0cc99f988b417
author Michael Van De Vanter <michael.van.de.vanter@oracle.com>
date Mon, 12 Oct 2015 12:56:20 -0400
parents 0bd25f39d655 (current diff) 26e79a4358fe (diff)
children 7e2abecabcac
files
diffstat 5 files changed, 83 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/mx.truffle/suite.py	Mon Oct 12 12:51:38 2015 -0400
+++ b/mx.truffle/suite.py	Mon Oct 12 12:56:20 2015 -0400
@@ -1,5 +1,5 @@
 suite = {
-  "mxversion" : "5.2.2",
+  "mxversion" : "5.5.7",
   "name" : "truffle",
   "url" : "http://openjdk.java.net/projects/graal",
   "developer" : {
@@ -20,7 +20,6 @@
     # ------------- Libraries -------------
 
     "JLINE" : {
-      "path" : "lib/jline-2.11.jar",
       "urls" : [
         "https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/jline-2.11.jar",
         "https://search.maven.org/remotecontent?filepath=jline/jline/2.11/jline-2.11.jar",
@@ -258,9 +257,7 @@
     # ------------- Distributions -------------
 
     "TRUFFLE_API" : {
-      "path" : "build/truffle-api.jar",
       "subDir" : "truffle",
-      "sourcesPath" : "build/truffle-api.src.zip",
       "javaCompliance" : "1.7",
       "dependencies" : [
         "com.oracle.truffle.api.interop.java",
@@ -275,9 +272,7 @@
     },
 
     "TRUFFLE_TCK" : {
-      "path" : "build/truffle-tck.jar",
       "subDir" : "truffle",
-      "sourcesPath" : "build/truffle-tck.src.zip",
       "javaCompliance" : "1.7",
       "dependencies" : [
         "com.oracle.truffle.tck"
@@ -289,9 +284,7 @@
     },
 
     "TRUFFLE_DSL_PROCESSOR" : {
-      "path" : "build/truffle-dsl-processor.jar",
       "subDir" : "truffle",
-      "sourcesPath" : "build/truffle-dsl-processor.src.zip",
       "javaCompliance" : "1.7",
       "dependencies" : ["com.oracle.truffle.dsl.processor"],
       "distDependencies" : ["TRUFFLE_API"],
@@ -299,9 +292,7 @@
     },
 
     "TRUFFLE_SL" : {
-      "path" : "build/truffle-sl.jar",
       "subDir" : "truffle",
-      "sourcesPath" : "build/truffle-sl.src.zip",
       "javaCompliance" : "1.7",
       "dependencies" : [
         "com.oracle.truffle.sl",
@@ -317,9 +308,7 @@
     },
 
      "TRUFFLE_DEBUG" : {
-      "path" : "build/truffle-debug.jar",
       "subDir" : "truffle",
-      "sourcesPath" : "build/truffle-debug.src.zip",
       "javaCompliance" : "1.7",
       "dependencies" : [
         "com.oracle.truffle.tools.debug.shell",
--- a/truffle/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/AssumptionsTest.java	Mon Oct 12 12:51:38 2015 -0400
+++ b/truffle/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/AssumptionsTest.java	Mon Oct 12 12:56:20 2015 -0400
@@ -44,6 +44,8 @@
 import com.oracle.truffle.api.dsl.test.AssumptionsTestFactory.CacheAssumptionTestFactory;
 import com.oracle.truffle.api.dsl.test.AssumptionsTestFactory.FieldTestFactory;
 import com.oracle.truffle.api.dsl.test.AssumptionsTestFactory.MethodTestFactory;
+import com.oracle.truffle.api.dsl.test.AssumptionsTestFactory.MultipleAssumptionArraysTestFactory;
+import com.oracle.truffle.api.dsl.test.AssumptionsTestFactory.MultipleAssumptionsTestFactory;
 import com.oracle.truffle.api.dsl.test.AssumptionsTestFactory.NodeFieldTest2Factory;
 import com.oracle.truffle.api.dsl.test.AssumptionsTestFactory.StaticFieldTestFactory;
 import com.oracle.truffle.api.dsl.test.TypeSystemTest.ValueNode;
@@ -206,6 +208,46 @@
     }
 
     @Test
+    public void testMultipleAssumptions() {
+        CallTarget root = createCallTarget(MultipleAssumptionsTestFactory.getInstance());
+        MultipleAssumptionsTest node = getNode(root);
+        node.assumption1 = Truffle.getRuntime().createAssumption();
+        node.assumption2 = Truffle.getRuntime().createAssumption();
+
+        assertEquals("do1", root.call(42));
+        node.assumption1.invalidate();
+        assertEquals("do2", root.call(42));
+
+        CallTarget root2 = createCallTarget(MultipleAssumptionsTestFactory.getInstance());
+        MultipleAssumptionsTest node2 = getNode(root2);
+        node2.assumption1 = Truffle.getRuntime().createAssumption();
+        node2.assumption2 = Truffle.getRuntime().createAssumption();
+
+        assertEquals("do1", root2.call(42));
+        node2.assumption2.invalidate();
+        assertEquals("do2", root2.call(42));
+    }
+
+    @NodeChild
+    @SuppressWarnings("unused")
+    static class MultipleAssumptionsTest extends ValueNode {
+
+        Assumption assumption1;
+        Assumption assumption2;
+
+        @Specialization(assumptions = {"assumption1", "assumption2"})
+        static String do1(int value) {
+            return "do1";
+        }
+
+        @Specialization
+        static String do2(int value) {
+            return "do2";
+        }
+
+    }
+
+    @Test
     public void testAssumptionArrays() {
         CallTarget root = createCallTarget(AssumptionArrayTestFactory.getInstance());
         AssumptionArrayTest node = getNode(root);
@@ -240,6 +282,43 @@
 
     }
 
+    @Test
+    public void testMultipleAssumptionArrays() {
+        CallTarget root = createCallTarget(MultipleAssumptionArraysTestFactory.getInstance());
+        MultipleAssumptionArraysTest node = getNode(root);
+
+        Assumption a1 = Truffle.getRuntime().createAssumption();
+        Assumption a2 = Truffle.getRuntime().createAssumption();
+
+        node.assumptions1 = new Assumption[]{a1};
+        node.assumptions2 = new Assumption[]{a2};
+
+        assertEquals("do1", root.call(42));
+
+        a2.invalidate();
+
+        assertEquals("do2", root.call(42));
+    }
+
+    @NodeChild
+    @SuppressWarnings("unused")
+    static class MultipleAssumptionArraysTest extends ValueNode {
+
+        Assumption[] assumptions1;
+        Assumption[] assumptions2;
+
+        @Specialization(assumptions = {"assumptions1", "assumptions2"})
+        static String do1(int value) {
+            return "do1";
+        }
+
+        @Specialization
+        static String do2(int value) {
+            return "do2";
+        }
+
+    }
+
     @NodeChild
     static class ErrorIncompatibleReturnType extends ValueNode {
         @ExpectError("Incompatible return type int. Assumptions must be assignable to Assumption or Assumption[].")
--- a/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/FrameDescriptor.java	Mon Oct 12 12:51:38 2015 -0400
+++ b/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/frame/FrameDescriptor.java	Mon Oct 12 12:56:20 2015 -0400
@@ -85,6 +85,7 @@
     }
 
     public FrameSlot findFrameSlot(Object identifier) {
+        CompilerAsserts.neverPartOfCompilation("interpreter-only.  includes hashmap operations.");
         return identifierToSlotMap.get(identifier);
     }
 
--- a/truffle/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/TruffleProcessor.java	Mon Oct 12 12:51:38 2015 -0400
+++ b/truffle/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/TruffleProcessor.java	Mon Oct 12 12:56:20 2015 -0400
@@ -64,7 +64,7 @@
 
     private void processImpl(RoundEnvironment env) {
         // TODO run verifications that other annotations are not processed out of scope of the
-        // operation or typelattice.
+        // operation or type lattice.
         try {
             ProcessorContext.setThreadLocalInstance(new ProcessorContext(processingEnv, this));
             for (AnnotationProcessor<?> generator : getGenerators()) {
--- a/truffle/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java	Mon Oct 12 12:51:38 2015 -0400
+++ b/truffle/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java	Mon Oct 12 12:56:20 2015 -0400
@@ -1159,6 +1159,7 @@
                 assumptionExpression.addError("Error parsing expression '%s': %s", assumption, e.getMessage());
             }
             assumptionExpressions.add(assumptionExpression);
+            assumptionId++;
         }
         specialization.setAssumptionExpressions(assumptionExpressions);
     }