Mercurial > hg > truffle
changeset 20951:a77b760a0307
Truffle-DSL: fixed on-demand generation of getNext.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Tue, 14 Apr 2015 19:23:33 +0200 |
parents | a778fbcb8d8e |
children | 833e088ee7d3 |
files | graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeGenFactory.java |
diffstat | 1 files changed, 6 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- 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();