diff graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/model/CodeElementScanner.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 a665483c3881
line wrap: on
line diff
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/model/CodeElementScanner.java	Sat Aug 23 19:31:13 2014 +0200
+++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/model/CodeElementScanner.java	Sat Aug 23 19:31:18 2014 +0200
@@ -22,6 +22,8 @@
  */
 package com.oracle.truffle.dsl.processor.java.model;
 
+import java.util.*;
+
 import javax.lang.model.element.*;
 import javax.lang.model.util.*;
 
@@ -35,12 +37,23 @@
     public R visitExecutable(CodeExecutableElement e, P p) {
         R ret = super.visitExecutable(e, p);
         if (e.getBodyTree() != null) {
-            visitTree(e.getBodyTree(), p);
+            visitTree(e.getBodyTree(), p, e);
         }
         return ret;
     }
 
     @Override
+    public R visitVariable(VariableElement e, P p) {
+        if (e instanceof CodeVariableElement) {
+            CodeTree init = ((CodeVariableElement) e).getInit();
+            if (init != null) {
+                visitTree(init, p, e);
+            }
+        }
+        return super.visitVariable(e, p);
+    }
+
+    @Override
     public R visitPackage(PackageElement e, P p) {
         return super.visitPackage(e, p);
     }
@@ -63,9 +76,12 @@
         return clazz.cast(element);
     }
 
-    public void visitTree(CodeTree e, P p) {
-        for (CodeTree tree : e.getEnclosedElements()) {
-            tree.acceptCodeElementScanner(this, p);
+    public void visitTree(CodeTree e, P p, Element parent) {
+        List<CodeTree> elements = e.getEnclosedElements();
+        if (elements != null) {
+            for (CodeTree tree : e.getEnclosedElements()) {
+                visitTree(tree, p, parent);
+            }
         }
     }