Mercurial > hg > truffle
changeset 12637:9b23caa3ad31
Truffle-DSL: fixed generated generic node adopted the polymorphic chain when transiting from polymorphic to generic.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Tue, 29 Oct 2013 16:36:07 +0100 |
parents | 748b8381b171 |
children | 02f844c76626 |
files | graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeCodeGenerator.java |
diffstat | 1 files changed, 5 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- 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)));