# HG changeset patch # User Christian Humer # Date 1429032213 -7200 # Node ID a77b760a0307490f76a134683264e93b7394794c # Parent a778fbcb8d8e1677d6ac75036a98ed6ace25f2f5 Truffle-DSL: fixed on-demand generation of getNext. diff -r a778fbcb8d8e -r a77b760a0307 graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeGenFactory.java --- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeGenFactory.java Tue Apr 14 19:23:33 2015 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeGenFactory.java Tue Apr 14 19:23:33 2015 +0200 @@ -375,11 +375,10 @@ generated.put(specialization, clazz.add(createSpecialization(specialization, baseSpecializationType))); } - if (nextUsed) { - baseSpecialization.addOptional(createCreateNext(generated)); - } + baseSpecialization.addOptional(createCreateNext(generated)); baseSpecialization.addOptional(createCreateFallback(generated)); baseSpecialization.addOptional(createCreatePolymorphic(generated)); + baseSpecialization.addOptional(createGetNext(baseSpecialization)); return node.getUninitializedSpecialization(); } @@ -413,7 +412,6 @@ clazz.addOptional(createUnsupported()); clazz.add(createGetSuppliedChildrenMethod()); - clazz.add(createGetNext(clazz)); clazz.add(createAcceptAndExecute()); for (ExecutableTypeData type : usedTypes) { @@ -1249,7 +1247,10 @@ return false; } - private static Element createGetNext(CodeTypeElement type) { + private Element createGetNext(CodeTypeElement type) { + if (!nextUsed) { + return null; + } CodeExecutableElement method = new CodeExecutableElement(modifiers(PROTECTED, FINAL), type.asType(), "getNext"); CodeTreeBuilder builder = method.createBuilder(); builder.startReturn().cast(type.asType(), CodeTreeBuilder.singleString("this.next")).end();