# HG changeset patch # User Christian Humer # Date 1374594476 -7200 # Node ID 7a0ba9b20fec98183718c813f30079e3246cf6d0 # Parent 02a5f5abd8425fe68d6b99f1db79e438fa530af5 Truffle-DSL: fixed bug in rewriting of child arrays. diff -r 02a5f5abd842 -r 7a0ba9b20fec 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 Mon Jul 22 13:35:23 2013 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeCodeGenerator.java Tue Jul 23 17:47:56 2013 +0200 @@ -1374,7 +1374,25 @@ if (Utils.isAssignable(getContext(), var.asType(), getContext().getTruffleTypes().getNode())) { builder.string(" = adoptChild(copy.").string(varName).string(")"); } else if (Utils.isAssignable(getContext(), var.asType(), getContext().getTruffleTypes().getNodeArray())) { - builder.string(" = adoptChildren(copy.").string(varName).string(")"); + NodeData node = getModel().getNode(); + NodeChildData child = node.findChild(varName); + if (child != null) { + builder.string(" = adoptChildren("); + builder.string("new ").type((child.getNodeType())).string(" {"); + builder.startCommaGroup(); + for (ActualParameter parameter : getModel().getParameters()) { + NodeChildData foundChild = node.findChild(parameter.getSpecification().getName()); + if (foundChild == child) { + builder.startGroup(); + builder.string("copy.").string(varName).string("[").string(String.valueOf(parameter.getIndex())).string("]"); + builder.end(); + } + } + + builder.end().string("})"); + } else { + builder.string(" = adoptChildren(copy.").string(varName).string(")"); + } } else { builder.string(" = copy.").string(varName); }