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)));