Mercurial > hg > truffle
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); + } } }