Mercurial > hg > truffle
diff graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/model/CodeTree.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/CodeTree.java Sat Aug 23 19:31:13 2014 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/model/CodeTree.java Sat Aug 23 19:31:18 2014 +0200 @@ -22,27 +22,53 @@ */ package com.oracle.truffle.dsl.processor.java.model; -import javax.lang.model.element.*; +import java.util.*; + import javax.lang.model.type.*; -public class CodeTree extends CodeElement<CodeTree> { +public class CodeTree { private final CodeTreeKind kind; + private CodeTree parent; + private TypeMirror type; private final String string; - CodeTree(CodeTreeKind kind, TypeMirror type, String string) { + private List<CodeTree> children; + + CodeTree(CodeTree parent, CodeTreeKind kind, TypeMirror type, String string) { + this.parent = parent; this.kind = kind; this.type = type; this.string = string; } + public void setParent(CodeTree parent) { + this.parent = parent; + } + + public CodeTree getParent() { + return parent; + } + public TypeMirror getType() { return type; } - public CodeTreeKind getCodeKind() { + public void add(CodeTree element) { + if (children == null) { + children = new ArrayList<>(); + } + element.setParent(this); + children.add(element); + } + + public final List<CodeTree> getEnclosedElements() { + return children; + } + + public final CodeTreeKind getCodeKind() { return kind; } @@ -50,36 +76,8 @@ return string; } - public <P> void acceptCodeElementScanner(CodeElementScanner<?, P> s, P p) { - s.visitTree(this, p); - } - public void setType(TypeMirror type) { this.type = type; } - @Override - public TypeMirror asType() { - return type; - } - - @Override - public ElementKind getKind() { - return ElementKind.OTHER; - } - - @Override - public Name getSimpleName() { - return CodeNames.of(getString()); - } - - @Override - public <R, P> R accept(ElementVisitor<R, P> v, P p) { - if (v instanceof CodeElementScanner<?, ?>) { - acceptCodeElementScanner((CodeElementScanner<?, P>) v, p); - return null; - } else { - throw new UnsupportedOperationException(); - } - } }