Mercurial > hg > graal-jvmci-8
diff graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/ast/CodeTreeBuilder.java @ 7502:6343a09b2ec1
Codegen operation generation is inferred from the node type hierarchy.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Fri, 18 Jan 2013 13:28:12 +0100 |
parents | a748e4d44694 |
children | 5e3d1a68664e |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/ast/CodeTreeBuilder.java Thu Jan 17 17:21:16 2013 +0100 +++ b/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/ast/CodeTreeBuilder.java Fri Jan 18 13:28:12 2013 +0100 @@ -99,12 +99,10 @@ public CodeTreeBuilder startStatement() { startGroup(); registerCallBack(new EndCallback() { - @Override public void beforeEnd() { string(";").newLine(); } - @Override public void afterEnd() { } @@ -137,7 +135,7 @@ } public CodeTreeBuilder startStaticCall(ExecutableElement method) { - return startStaticCall(Utils.findEnclosingType(method).asType(), method.getSimpleName().toString()); + return startStaticCall(Utils.findNearestEnclosingType(method).asType(), method.getSimpleName().toString()); } public CodeTreeBuilder staticReference(TypeMirror type, String fieldName) { @@ -317,7 +315,17 @@ public CodeTreeBuilder startReturn() { ExecutableElement method = findMethod(); if (method != null && Utils.isVoid(method.getReturnType())) { - startStatement(); + startGroup(); + registerCallBack(new EndCallback() { + @Override + public void beforeEnd() { + string(";").newLine(); // complete statement to execute + } + @Override + public void afterEnd() { + string("return").string(";").newLine(); // emit a return; + } + }); return this; } else { return startStatement().string("return "); @@ -471,7 +479,7 @@ return statement("return"); } - private ExecutableElement findMethod() { + public ExecutableElement findMethod() { Element element = currentElement; while (element != null && (element.getKind() != ElementKind.METHOD)) { element = element.getEnclosingElement();