changeset 21000:fdf55f1ffc59

Truffle-DSL: fixed name conflicts for synthetic polymorphic execute methods.
author Christian Humer <christian.humer@gmail.com>
date Thu, 16 Apr 2015 22:38:52 +0200
parents ef2825da2e43
children acc86d08e1cc
files graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/ExecutableTypeData.java graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java
diffstat 2 files changed, 8 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/ExecutableTypeData.java	Thu Apr 16 17:30:43 2015 +0200
+++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/ExecutableTypeData.java	Thu Apr 16 22:38:52 2015 +0200
@@ -89,7 +89,11 @@
             evaluatedParameters.add(parameter);
         }
         this.frameParameter = foundFrameParameter;
-        this.uniqueName = "execute" + (ElementUtils.isObject(getReturnType()) ? "" : ElementUtils.getTypeId(getReturnType()));
+        this.uniqueName = createName(this);
+    }
+
+    public static String createName(ExecutableTypeData type) {
+        return "execute" + (ElementUtils.isObject(type.getReturnType()) ? "" : ElementUtils.getTypeId(type.getReturnType()));
     }
 
     public void addDelegatedFrom(ExecutableTypeData child) {
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java	Thu Apr 16 17:30:43 2015 +0200
+++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java	Thu Apr 16 22:38:52 2015 +0200
@@ -195,6 +195,9 @@
             }
 
             ExecutableTypeData polymorphicType = new ExecutableTypeData(node, polymorphic.getReturnType().getType(), "execute", frame, dynamicTypes);
+            String genericName = ExecutableTypeData.createName(polymorphicType) + "_";
+            polymorphicType.setUniqueName(genericName);
+
             for (ExecutableTypeData type : node.getExecutableTypes()) {
                 if (polymorphicType.sameSignature(type)) {
                     polymorphicSignatureFound = true;