Mercurial > hg > graal-jvmci-8
diff graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeCodeGenerator.java @ 14628:a08b8694f556
Truffle: Node API changes
deprecate adoptChild, no longer needed in constructor
add Node#insert for inserting new nodes into the tree (previously adoptChild)
add Node#adoptChildren() helper method that adopts all (direct and indirect) children of a node, automatically called in TruffleRuntime#createCallTarget
author | Andreas Woess <andreas.woess@jku.at> |
---|---|
date | Wed, 19 Mar 2014 23:11:46 +0100 |
parents | fdabadc7980d |
children | f0bb82ebe30c |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeCodeGenerator.java Thu Mar 20 00:16:39 2014 +0100 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/NodeCodeGenerator.java Wed Mar 19 23:11:46 2014 +0100 @@ -931,7 +931,7 @@ CodeExecutableElement setter = new CodeExecutableElement(modifiers(PROTECTED), context.getType(void.class), "setNext0"); setter.getParameters().add(new CodeVariableElement(clazz.asType(), "next0")); CodeTreeBuilder builder = setter.createBuilder(); - builder.statement("this.next0 = adoptChild(next0)"); + builder.statement("this.next0 = insert(next0)"); clazz.add(setter); CodeExecutableElement genericCachedExecute = createCachedExecute(node, node.getPolymorphicSpecialization()); @@ -1210,7 +1210,6 @@ String fieldName = var.getSimpleName().toString(); CodeTree init = createStaticCast(builder, child, fieldName); - init = createAdoptChild(builder, var.asType(), init); builder.string("this.").string(fieldName).string(" = ").tree(init); builder.end(); @@ -1229,18 +1228,6 @@ return CodeTreeBuilder.singleString(fieldName); } - private CodeTree createAdoptChild(CodeTreeBuilder parent, TypeMirror type, CodeTree value) { - CodeTreeBuilder builder = new CodeTreeBuilder(parent); - if (Utils.isAssignable(getContext(), type, getContext().getTruffleTypes().getNode())) { - builder.string("adoptChild(").tree(value).string(")"); - } else if (Utils.isAssignable(getContext(), type, getContext().getTruffleTypes().getNodeArray())) { - builder.string("adoptChildren(").tree(value).string(")"); - } else { - builder.tree(value); - } - return builder.getRoot(); - } - private CodeExecutableElement createCopyConstructor(CodeTypeElement type, ExecutableElement superConstructor, ExecutableElement sourceSectionConstructor) { CodeExecutableElement method = new CodeExecutableElement(null, type.getSimpleName().toString()); CodeTreeBuilder builder = method.createBuilder(); @@ -1261,7 +1248,7 @@ if (Utils.isAssignable(getContext(), varType, getContext().getTruffleTypes().getNodeArray())) { copyAccess += ".clone()"; } - CodeTree init = createAdoptChild(builder, varType, CodeTreeBuilder.singleString(copyAccess)); + CodeTree init = CodeTreeBuilder.singleString(copyAccess); builder.startStatement().string("this.").string(varName).string(" = ").tree(init).end(); } @@ -2644,7 +2631,7 @@ if (node.isPolymorphic()) { if (specialization.isSpecialized() || specialization.isPolymorphic()) { - builder.statement("this.next0 = adoptChild(copy.next0)"); + builder.statement("this.next0 = copy.next0"); } } if (superConstructor != null) {