Mercurial > hg > graal-jvmci-8
changeset 11483:ff41fd80d562
Merge.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Fri, 30 Aug 2013 17:06:25 +0200 |
parents | cb364a90ef62 (diff) 60937d54db2e (current diff) |
children | 2aac62d79af4 |
files | |
diffstat | 7 files changed, 60 insertions(+), 29 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/SpecializationGroupingTest.java Fri Aug 30 15:05:54 2013 +0200 +++ b/graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/SpecializationGroupingTest.java Fri Aug 30 17:06:25 2013 +0200 @@ -27,6 +27,7 @@ import com.oracle.truffle.api.*; import com.oracle.truffle.api.dsl.*; import com.oracle.truffle.api.dsl.test.SpecializationGroupingTestFactory.TestElseConnectionBug1Factory; +import com.oracle.truffle.api.dsl.test.SpecializationGroupingTestFactory.TestElseConnectionBug2Factory; import com.oracle.truffle.api.dsl.test.SpecializationGroupingTestFactory.TestGroupingFactory; import com.oracle.truffle.api.dsl.test.TypeSystemTest.SimpleTypes; import com.oracle.truffle.api.dsl.test.TypeSystemTest.TestRootNode; @@ -200,6 +201,39 @@ } + @Test + public void testElseConnectionBug2() { + TestHelper.assertRuns(TestElseConnectionBug2Factory.getInstance(), 42, TestHelper.array(42)); + } + + @SuppressWarnings("unused") + @NodeChild + public abstract static class TestElseConnectionBug2 extends ValueNode { + + @Specialization(order = 2, guards = "guard0") + public int doGuard0(int value) { + throw new AssertionError(); + } + + @Specialization(order = 3, guards = "guard1") + public int doGuard1(int value) { + throw new AssertionError(); + } + + @Specialization(order = 4, guards = "!guard0") + public int doUninitialized(int value) { + return value; + } + + boolean guard0(int value) { + return false; + } + + boolean guard1(int value) { + return false; + } + } + private static class MockAssumption implements Assumption { int checked;
--- a/graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/TypeSystemErrorsTest.java Fri Aug 30 15:05:54 2013 +0200 +++ b/graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/TypeSystemErrorsTest.java Fri Aug 30 17:06:25 2013 +0200 @@ -23,6 +23,7 @@ package com.oracle.truffle.api.dsl.test; import com.oracle.truffle.api.dsl.*; +import com.oracle.truffle.api.dsl.test.TypeSystemTest.*; public class TypeSystemErrorsTest { @@ -59,4 +60,11 @@ } + @TypeSystemReference(Types0.class) + @NodeChild + @ExpectError("The @TypeSystem of the node and the @TypeSystem of the @NodeChild does not match. Types0 != SimpleTypes. ") + abstract static class ErrorNode1 extends ValueNode { + + } + }
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/TruffleProcessor.java Fri Aug 30 15:05:54 2013 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/TruffleProcessor.java Fri Aug 30 17:06:25 2013 +0200 @@ -96,7 +96,7 @@ private static void handleThrowable(AnnotationProcessor generator, Throwable t, Element e) { String message = "Uncaught error in " + generator.getClass().getSimpleName() + " while processing " + e; - generator.getContext().getLog().message(Kind.ERROR, e, null, null, message + ": " + Utils.printException(t)); + generator.getContext().getEnvironment().getMessager().printMessage(Kind.ERROR, message + ": " + Utils.printException(t), e); } @SuppressWarnings("unchecked")
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeParser.java Fri Aug 30 15:05:54 2013 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeParser.java Fri Aug 30 17:06:25 2013 +0200 @@ -334,7 +334,7 @@ nodeData.setFields(parseFields(typeHierarchy, elements)); parsedNodes.put(Utils.getQualifiedName(templateType), nodeData); // parseChildren invokes cyclic parsing. - nodeData.setChildren(parseChildren(elements, typeHierarchy)); + nodeData.setChildren(parseChildren(nodeData, elements, typeHierarchy)); nodeData.setExecutableTypes(groupExecutableTypes(new ExecutableTypeMethodParser(context, nodeData).parse(elements))); return nodeData; @@ -384,7 +384,7 @@ return fields; } - private List<NodeChildData> parseChildren(List<? extends Element> elements, final List<TypeElement> typeHierarchy) { + private List<NodeChildData> parseChildren(NodeData node, List<? extends Element> elements, final List<TypeElement> typeHierarchy) { Set<String> shortCircuits = new HashSet<>(); for (ExecutableElement method : ElementFilter.methodsIn(elements)) { AnnotationMirror mirror = Utils.findAnnotationMirror(processingEnv, method, ShortCircuit.class); @@ -462,8 +462,10 @@ nodeChild.setNode(fieldNodeData); if (fieldNodeData == null) { nodeChild.addError("Node type '%s' is invalid or not a valid Node.", Utils.getQualifiedName(childType)); + } else if (!Utils.typeEquals(fieldNodeData.getTypeSystem().getTemplateType().asType(), (node.getTypeSystem().getTemplateType().asType()))) { + nodeChild.addError("The @%s of the node and the @%s of the @%s does not match. %s != %s. ", TypeSystem.class.getSimpleName(), TypeSystem.class.getSimpleName(), + NodeChild.class.getSimpleName(), Utils.getSimpleName(node.getTypeSystem().getTemplateType()), Utils.getSimpleName(fieldNodeData.getTypeSystem().getTemplateType())); } - index++; } } @@ -1010,9 +1012,6 @@ for (TemplateMethod method : nodeData.getAllTemplateMethods()) { unusedElements.remove(method.getMethod()); } - if (nodeData.getExtensionElements() != null) { - unusedElements.removeAll(nodeData.getExtensionElements()); - } for (NodeFieldData field : nodeData.getFields()) { if (field.getGetter() != null) {
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/SpecializationGroup.java Fri Aug 30 15:05:54 2013 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/SpecializationGroup.java Fri Aug 30 17:06:25 2013 +0200 @@ -110,17 +110,18 @@ } private GuardData findNegatedGuardInPrevious(GuardData guard) { - SpecializationGroup previous = this; - while ((previous = previous.getPreviousGroup()) != null) { - List<GuardData> elseConnectedGuards = previous.getElseConnectableGuards(); + SpecializationGroup previous = this.getPreviousGroup(); + if (previous == null) { + return null; + } + List<GuardData> elseConnectedGuards = previous.getElseConnectableGuards(); - if (previous == null || previous.getGuards().size() != elseConnectedGuards.size() + 1) { - return null; - } - GuardData previousGuard = previous.getGuards().get(elseConnectedGuards.size()); - if (guard.getMethod().equals(previousGuard.getMethod()) && guard.isNegated() != previousGuard.isNegated()) { - return guard; - } + if (previous == null || previous.getGuards().size() != elseConnectedGuards.size() + 1) { + return null; + } + GuardData previousGuard = previous.getGuards().get(elseConnectedGuards.size()); + if (guard.getMethod().equals(previousGuard.getMethod()) && guard.isNegated() != previousGuard.isNegated()) { + return guard; } return null; }
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/template/Template.java Fri Aug 30 15:05:54 2013 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/template/Template.java Fri Aug 30 17:06:25 2013 +0200 @@ -27,7 +27,6 @@ import javax.lang.model.element.*; import com.oracle.truffle.dsl.processor.*; -import com.oracle.truffle.dsl.processor.api.element.*; import com.oracle.truffle.dsl.processor.typesystem.*; public abstract class Template extends MessageContainer { @@ -36,8 +35,6 @@ private final String templateMethodName; private final AnnotationMirror annotation; - private List<? extends WritableElement> extensionElements; - public Template(TypeElement templateType, String templateMethodName, AnnotationMirror annotation) { this.templateType = templateType; this.templateMethodName = templateMethodName; @@ -68,14 +65,6 @@ return annotation; } - public List<? extends WritableElement> getExtensionElements() { - return extensionElements; - } - - public void setExtensionElements(List<? extends WritableElement> extensionMethods) { - this.extensionElements = extensionMethods; - } - @Override public String toString() { return getClass().getSimpleName() + "[" + Utils.getSimpleName(getTemplateType()) + "]";
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/typesystem/GuardData.java Fri Aug 30 15:05:54 2013 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/typesystem/GuardData.java Fri Aug 30 17:06:25 2013 +0200 @@ -60,7 +60,7 @@ @Override public String toString() { - return getMethodName() + getParameters().toString(); + return (negated ? "!" : "") + getMethodName() + getParameters().toString(); } }