Mercurial > hg > truffle
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); }