Mercurial > hg > truffle
diff graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/transform/AbstractCodeWriter.java @ 16909:62cfffca9be2
Truffle-DSL: some more performance optimizations.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Sat, 23 Aug 2014 19:31:18 +0200 |
parents | 23415229349b |
children | c88ab4f1f04a |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/transform/AbstractCodeWriter.java Sat Aug 23 19:31:13 2014 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/transform/AbstractCodeWriter.java Sat Aug 23 19:31:18 2014 +0200 @@ -262,7 +262,7 @@ write(f.getSimpleName()); if (init != null) { write("("); - init.acceptCodeElementScanner(this, p); + visitTree(init, p, f); write(")"); } } else { @@ -292,7 +292,7 @@ write(f.getSimpleName()); if (init != null) { write(" = "); - init.acceptCodeElementScanner(this, p); + visitTree(init, p, f); } } return null; @@ -459,11 +459,14 @@ @Override public void visitImport(CodeImport e, Void p) { + write("import "); if (e.isStaticImport()) { - write("import static ").write(e.getImportString()).write(";"); - } else { - write("import ").write(e.getImportString()).write(";"); + write("static "); } + write(e.getPackageName()); + write("."); + write(e.getSymbolName()); + write(";"); } @Override @@ -507,7 +510,7 @@ } else if (e.getBodyTree() != null) { writeLn(" {"); indent(1); - e.getBodyTree().acceptCodeElementScanner(this, p); + visitTree(e.getBodyTree(), p, e); dedent(1); writeLn("}"); } else if (e.getBody() != null) { @@ -522,29 +525,27 @@ } @Override - public void visitTree(CodeTree e, Void p) { + public void visitTree(CodeTree e, Void p, Element enclosingElement) { CodeTreeKind kind = e.getCodeKind(); switch (kind) { case COMMA_GROUP: List<CodeTree> children = e.getEnclosedElements(); - for (int i = 0; i < children.size(); i++) { - children.get(i).acceptCodeElementScanner(this, p); - if (i < e.getEnclosedElements().size() - 1) { - write(", "); + if (children != null) { + for (int i = 0; i < children.size(); i++) { + visitTree(children.get(i), p, enclosingElement); + if (i < e.getEnclosedElements().size() - 1) { + write(", "); + } } } break; case GROUP: - for (CodeTree tree : e.getEnclosedElements()) { - tree.acceptCodeElementScanner(this, p); - } + super.visitTree(e, p, enclosingElement); break; case INDENT: indent(1); - for (CodeTree tree : e.getEnclosedElements()) { - tree.acceptCodeElementScanner(this, p); - } + super.visitTree(e, p, enclosingElement); dedent(1); break; case NEW_LINE: @@ -559,20 +560,20 @@ break; case STATIC_FIELD_REFERENCE: if (e.getString() != null) { - write(imports.createStaticFieldReference(e, e.getType(), e.getString())); + write(imports.createStaticFieldReference(enclosingElement, e.getType(), e.getString())); } else { write("null"); } break; case STATIC_METHOD_REFERENCE: if (e.getString() != null) { - write(imports.createStaticMethodReference(e, e.getType(), e.getString())); + write(imports.createStaticMethodReference(enclosingElement, e.getType(), e.getString())); } else { write("null"); } break; case TYPE: - write(useImport(e, e.getType())); + write(useImport(enclosingElement, e.getType())); break; default: assert false; @@ -676,8 +677,9 @@ // TODO(CH): fails in normal usage - output ok though // assert lineLength + (end - i) + 2 < MAX_LINE_LENGTH; - - write("\"" + string.substring(i, end) + "\""); + write("\""); + write(string.substring(i, end)); + write("\""); size = nextSize; }