changeset 9211:77c17c97f713

Fixed verifying specialization argument length must be done before generating specialization ids.
author Christian Humer <christian.humer@gmail.com>
date Mon, 08 Apr 2013 17:00:31 +0200
parents 160f088e40db
children 216dce75d5ac
files graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeParser.java
diffstat 1 files changed, 9 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeParser.java	Mon Apr 08 16:50:51 2013 +0200
+++ b/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeParser.java	Mon Apr 08 17:00:31 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) {