comparison graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeCodeGenerator.java @ 10859:7a0ba9b20fec

Truffle-DSL: fixed bug in rewriting of child arrays.
author Christian Humer <christian.humer@gmail.com>
date Tue, 23 Jul 2013 17:47:56 +0200
parents 00a9dbcbe431
children a9cb98ff8fd9
comparison
equal deleted inserted replaced
10838:02a5f5abd842 10859:7a0ba9b20fec
1372 String varName = var.getSimpleName().toString(); 1372 String varName = var.getSimpleName().toString();
1373 builder.string("this.").string(varName); 1373 builder.string("this.").string(varName);
1374 if (Utils.isAssignable(getContext(), var.asType(), getContext().getTruffleTypes().getNode())) { 1374 if (Utils.isAssignable(getContext(), var.asType(), getContext().getTruffleTypes().getNode())) {
1375 builder.string(" = adoptChild(copy.").string(varName).string(")"); 1375 builder.string(" = adoptChild(copy.").string(varName).string(")");
1376 } else if (Utils.isAssignable(getContext(), var.asType(), getContext().getTruffleTypes().getNodeArray())) { 1376 } else if (Utils.isAssignable(getContext(), var.asType(), getContext().getTruffleTypes().getNodeArray())) {
1377 builder.string(" = adoptChildren(copy.").string(varName).string(")"); 1377 NodeData node = getModel().getNode();
1378 NodeChildData child = node.findChild(varName);
1379 if (child != null) {
1380 builder.string(" = adoptChildren(");
1381 builder.string("new ").type((child.getNodeType())).string(" {");
1382 builder.startCommaGroup();
1383 for (ActualParameter parameter : getModel().getParameters()) {
1384 NodeChildData foundChild = node.findChild(parameter.getSpecification().getName());
1385 if (foundChild == child) {
1386 builder.startGroup();
1387 builder.string("copy.").string(varName).string("[").string(String.valueOf(parameter.getIndex())).string("]");
1388 builder.end();
1389 }
1390 }
1391
1392 builder.end().string("})");
1393 } else {
1394 builder.string(" = adoptChildren(copy.").string(varName).string(")");
1395 }
1378 } else { 1396 } else {
1379 builder.string(" = copy.").string(varName); 1397 builder.string(" = copy.").string(varName);
1380 } 1398 }
1381 builder.end(); 1399 builder.end();
1382 } 1400 }