# HG changeset patch # User Christian Humer # Date 1383060967 -3600 # Node ID 9b23caa3ad317ccd6298a472bb595f4d2bbc3a36 # Parent 748b8381b1713031611bad4f6c118023a82c4c2c Truffle-DSL: fixed generated generic node adopted the polymorphic chain when transiting from polymorphic to generic. diff -r 748b8381b171 -r 9b23caa3ad31 graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeCodeGenerator.java --- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeCodeGenerator.java Tue Oct 29 16:23:59 2013 +0100 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeCodeGenerator.java Tue Oct 29 16:36:07 2013 +0100 @@ -1280,9 +1280,6 @@ CodeTree init = createAdoptChild(builder, varType, CodeTreeBuilder.singleString(copyAccess)); builder.startStatement().string("this.").string(varName).string(" = ").tree(init).end(); } - if (getModel().getNode().isPolymorphic()) { - builder.statement("this.next0 = adoptChild(copy.next0)"); - } return method; } @@ -2702,11 +2699,12 @@ CodeTreeBuilder builder = superConstructor.createBuilder(); builder.tree(body); + if (node.isPolymorphic()) { + if (specialization.isSpecialized() || specialization.isPolymorphic()) { + builder.statement("this.next0 = adoptChild(copy.next0)"); + } + } if (superConstructor != null) { - if (getModel().isGeneric() && node.isPolymorphic()) { - builder.statement("this.next0 = null"); - } - for (ActualParameter param : getImplicitTypeParamters(getModel())) { clazz.add(new CodeVariableElement(modifiers(PRIVATE, FINAL), getContext().getType(Class.class), implicitTypeName(param))); superConstructor.getParameters().add(new CodeVariableElement(getContext().getType(Class.class), implicitTypeName(param)));