# HG changeset patch # User Christian Humer # Date 1374594497 -7200 # Node ID 1b11e3c8529c95806c2a218b3045eb10a2a77555 # Parent 7a0ba9b20fec98183718c813f30079e3246cf6d0# Parent f2008a93ad5407fa4dc633e4ff0701e781c9d1e2 Merge. diff -r f2008a93ad54 -r 1b11e3c8529c 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 Jul 23 11:19:47 2013 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeCodeGenerator.java Tue Jul 23 17:48:17 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); }