Mercurial > hg > graal-jvmci-8
diff graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/ast/CodeTreeBuilder.java @ 10596:f43eb2f1bbbc
Truffle-DSL: code-generation of polymorphic caching
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Mon, 01 Jul 2013 20:32:20 +0200 |
parents | 00b70a864d3b |
children |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/ast/CodeTreeBuilder.java Mon Jul 01 20:31:30 2013 +0200 +++ b/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/ast/CodeTreeBuilder.java Mon Jul 01 20:32:20 2013 +0200 @@ -75,6 +75,10 @@ return new CodeTreeBuilder(null).string(s).getTree(); } + public static CodeTree singleType(TypeMirror s) { + return new CodeTreeBuilder(null).type(s).getTree(); + } + private CodeTreeBuilder push(CodeTreeKind kind) { return push(new BuilderCodeTree(kind, null, null)); } @@ -472,6 +476,10 @@ return this; } + public CodeTreeBuilder declaration(TypeMirror type, String name, String init) { + return declaration(type, name, singleString(init)); + } + public CodeTreeBuilder declaration(TypeMirror type, String name, CodeTree init) { if (Utils.isVoid(type)) { startStatement(); @@ -537,6 +545,11 @@ return root; } + public CodeTreeBuilder cast(String baseClassName) { + string("(").string(baseClassName).string(") "); + return this; + } + public CodeTreeBuilder cast(TypeMirror type, CodeTree content) { if (Utils.isVoid(type)) { tree(content); @@ -577,15 +590,21 @@ return startReturn().string("true").end(); } + public CodeTreeBuilder instanceOf(CodeTree var, CodeTree type) { + tree(var).string(" instanceof ").tree(type); + return this; + } + + public CodeTreeBuilder instanceOf(String var, String type) { + return instanceOf(singleString(var), singleString(type)); + } + public CodeTreeBuilder instanceOf(String var, TypeMirror type) { - string(var); TypeElement element = Utils.fromTypeMirror(type); if (element == null) { throw new IllegalArgumentException("Cannot call instanceof for a non supported type: " + type.getKind()); } - - string(" instanceof ").type(type); - return this; + return instanceOf(singleString(var), singleType(type)); } public CodeTreeBuilder defaultValue(TypeMirror mirror) {