diff graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder.java @ 18761:a665483c3881

Truffle-DSL: new node layout implementation.
author Christian Humer <christian.humer@gmail.com>
date Mon, 29 Dec 2014 23:38:54 +0100
parents 3912400fc33a
children ae81dd154fb6
line wrap: on
line diff
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder.java	Mon Dec 29 23:38:50 2014 +0100
+++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/model/CodeTreeBuilder.java	Mon Dec 29 23:38:54 2014 +0100
@@ -174,7 +174,11 @@
     }
 
     public CodeTreeBuilder startCall(String receiver, String callSite) {
-        return startCall(singleString(receiver), callSite);
+        if (receiver != null) {
+            return startCall(singleString(receiver), callSite);
+        } else {
+            return startCall(callSite);
+        }
     }
 
     public CodeTreeBuilder startCall(CodeTree receiver, String callSite) {
@@ -614,7 +618,7 @@
         return root;
     }
 
-    public CodeTree getRoot() {
+    public CodeTree build() {
         return root;
     }
 
@@ -623,6 +627,11 @@
         return this;
     }
 
+    public CodeTreeBuilder cast(TypeMirror type) {
+        string("(").type(type).string(") ");
+        return this;
+    }
+
     public CodeTreeBuilder cast(TypeMirror type, CodeTree content) {
         if (ElementUtils.isVoid(type)) {
             tree(content);
@@ -738,6 +747,21 @@
         return startBlock();
     }
 
+    public CodeTreeBuilder startCatchBlock(TypeMirror[] exceptionTypes, String localVarName) {
+        clearLast(CodeTreeKind.NEW_LINE);
+        string(" catch (");
+
+        for (int i = 0; i < exceptionTypes.length; i++) {
+            if (i != 0) {
+                string(" | ");
+            }
+            type(exceptionTypes[i]);
+        }
+
+        string(" ").string(localVarName).string(") ");
+        return startBlock();
+    }
+
     public CodeTreeBuilder startFinallyBlock() {
         clearLast(CodeTreeKind.NEW_LINE);
         string(" finally ");