changeset 9212:216dce75d5ac

Merge.
author Christian Humer <christian.humer@gmail.com>
date Mon, 08 Apr 2013 17:02:55 +0200
parents 77c17c97f713 (diff) 2c0c708a0ad6 (current diff)
children c3ec5230967a
files make/bsd/build.sh make/linux/build.sh make/solaris/build.sh make/test/Queens.java make/windows/projectfiles/kernel/Makefile make/windows/projectfiles/kernel/vm.def make/windows/projectfiles/kernel/vm.dsw test/runtime/8007736/TestStaticIF.java
diffstat 5 files changed, 26 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.truffle.api.codegen.test/src/com/oracle/truffle/api/codegen/test/BinaryNodeTest.java	Mon Apr 08 09:26:06 2013 +0200
+++ b/graal/com.oracle.truffle.api.codegen.test/src/com/oracle/truffle/api/codegen/test/BinaryNodeTest.java	Mon Apr 08 17:02:55 2013 +0200
@@ -55,8 +55,8 @@
         @Child protected ValueNode rightNode;
 
         public BinaryNode(ValueNode left, ValueNode right) {
-            this.leftNode = left;
-            this.rightNode = right;
+            this.leftNode = adoptChild(left);
+            this.rightNode = adoptChild(right);
         }
 
         public BinaryNode(BinaryNode prev) {
--- a/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/AbstractParser.java	Mon Apr 08 09:26:06 2013 +0200
+++ b/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/AbstractParser.java	Mon Apr 08 17:02:55 2013 +0200
@@ -27,6 +27,7 @@
 
 import javax.annotation.processing.*;
 import javax.lang.model.element.*;
+import javax.tools.Diagnostic.Kind;
 
 import com.oracle.truffle.codegen.processor.template.*;
 
@@ -49,6 +50,7 @@
 
     public final M parse(RoundEnvironment env, Element element) {
         this.roundEnv = env;
+        M model = null;
         try {
             AnnotationMirror mirror = null;
             if (getAnnotationType() != null) {
@@ -58,13 +60,16 @@
             if (!context.getTruffleTypes().verify(context, element, mirror)) {
                 return null;
             }
-            M model = parse(element, mirror);
+            model = parse(element, mirror);
             if (model == null) {
                 return null;
             }
 
             model.emitMessages((TypeElement) element, log);
             return filterErrorElements(model);
+        } catch (CompileErrorException e) {
+            log.message(Kind.WARNING, element, null, null, "The truffle processor could not parse class due to error: %s", e.getMessage());
+            return null;
         } finally {
             this.roundEnv = null;
         }
--- a/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/Utils.java	Mon Apr 08 09:26:06 2013 +0200
+++ b/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/Utils.java	Mon Apr 08 17:02:55 2013 +0200
@@ -210,6 +210,8 @@
                 return b.toString();
             case TYPEVAR:
                 return "Any";
+            case ERROR:
+                throw new CompileErrorException("Type error " + mirror);
             default:
                 throw new RuntimeException("Unknown type specified " + mirror.getKind() + " mirror: " + mirror);
         }
@@ -247,6 +249,8 @@
                 return getWildcardName((WildcardType) mirror);
             case TYPEVAR:
                 return "?";
+            case ERROR:
+                throw new CompileErrorException("Type error " + mirror);
             default:
                 throw new RuntimeException("Unknown type specified " + mirror.getKind() + " mirror: " + mirror);
         }
@@ -313,6 +317,8 @@
                 return "void";
             case TYPEVAR:
                 return getSimpleName(mirror);
+            case ERROR:
+                throw new CompileErrorException("Type error " + mirror);
             default:
                 throw new RuntimeException("Unknown type specified " + mirror + " mirror: " + mirror);
         }
--- a/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeParser.java	Mon Apr 08 09:26:06 2013 +0200
+++ b/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeParser.java	Mon Apr 08 17:02:55 2013 +0200
@@ -365,9 +365,13 @@
                 needsId.add(specialization);
             }
         }
-        List<String> ids = calculateSpecializationIds(needsId);
-        for (int i = 0; i < ids.size(); i++) {
-            needsId.get(i).setId(ids.get(i));
+
+        // verify specialization parameter length
+        if (verifySpecializationParameters(node)) {
+            List<String> ids = calculateSpecializationIds(needsId);
+            for (int i = 0; i < ids.size(); i++) {
+                needsId.get(i).setId(ids.get(i));
+            }
         }
     }
 
@@ -509,9 +513,6 @@
     }
 
     private void verifyNode(NodeData nodeData) {
-        // verify specialization parameter length
-        verifySpecializationParameters(nodeData);
-
         // verify order is not ambiguous
         verifySpecializationOrder(nodeData);
 
@@ -521,14 +522,6 @@
 
         verifyConstructors(nodeData);
 
-// if (!verifyNamingConvention(specializations, "do")) {
-// return null;
-// }
-//
-// if (!verifyNamesUnique(specializations)) {
-// return null;
-// }
-
         verifyNamingConvention(nodeData.getShortCircuits(), "needs");
 
         verifySpecializationThrows(nodeData);
@@ -565,7 +558,7 @@
         return nodeData;
     }
 
-    private static void verifySpecializationParameters(NodeData nodeData) {
+    private static boolean verifySpecializationParameters(NodeData nodeData) {
         boolean valid = true;
         int args = -1;
         for (SpecializationData specializationData : nodeData.getSpecializations()) {
@@ -586,6 +579,7 @@
                 specialization.addError("All specializations must have the same number of arguments.");
             }
         }
+        return valid;
     }
 
     private void verifyMissingAbstractMethods(NodeData nodeData) {
--- a/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/template/TemplateMethod.java	Mon Apr 08 09:26:06 2013 +0200
+++ b/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/template/TemplateMethod.java	Mon Apr 08 17:02:55 2013 +0200
@@ -144,7 +144,9 @@
 
     public List<ActualParameter> getReturnTypeAndParameters() {
         List<ActualParameter> allParameters = new ArrayList<>(getParameters().size() + 1);
-        allParameters.add(getReturnType());
+        if (getReturnType() != null) {
+            allParameters.add(getReturnType());
+        }
         allParameters.addAll(getParameters());
         return Collections.unmodifiableList(allParameters);
     }