# HG changeset patch # User Christian Humer # Date 1429032212 -7200 # Node ID a2e295c6cf7c732872920982a7c782eb704dd047 # Parent 4f45e4d3361ce52612dc3aa7433e82629c2ea714 Truffle-DSL: fixed frame might be added twice for polymorphic signatures. diff -r 4f45e4d3361c -r a2e295c6cf7c graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java --- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java Tue Apr 14 15:16:14 2015 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java Tue Apr 14 19:23:32 2015 +0200 @@ -1345,13 +1345,16 @@ } else { frameType = context.getType(Frame.class); } - types.add(new CodeVariableElement(frameType, "frameValue")); + types.add(new CodeVariableElement(frameType, TemplateMethod.FRAME_NAME)); } TypeMirror returnType = null; int index = 0; for (Parameter genericParameter : generic.getReturnTypeAndParameters()) { TypeMirror polymorphicType; + if (genericParameter.getLocalName().equals(TemplateMethod.FRAME_NAME)) { + continue; + } if (!genericParameter.getSpecification().isSignature()) { polymorphicType = genericParameter.getType(); } else { @@ -1377,7 +1380,11 @@ polymorphicType = context.getType(Object.class); } } else { - polymorphicType = context.getType(Object.class); + if (generic.getFrame() == genericParameter) { + polymorphicType = context.getType(Frame.class); + } else { + polymorphicType = context.getType(Object.class); + } } } if (genericParameter == generic.getReturnType()) {