Mercurial > hg > truffle
diff graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/SpecializationData.java @ 13528:5a0c694ef735
Truffle-DSL: Removed API classes NodeId, NodeContainer and SpecializationListener.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Tue, 07 Jan 2014 18:52:32 +0100 |
parents | 25ecb47a6d0e |
children | 85b485b1e8e1 |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/SpecializationData.java Tue Jan 07 12:22:47 2014 +0100 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/node/SpecializationData.java Tue Jan 07 18:52:32 2014 +0100 @@ -33,24 +33,25 @@ public class SpecializationData extends TemplateMethod { + public enum SpecializationKind { + UNINITIALIZED, SPECIALIZED, POLYMORPHIC, GENERIC + } + + private final NodeData node; private final int order; - private final boolean generic; - private final boolean polymorphic; - private final boolean uninitialized; + private final SpecializationKind kind; private final List<SpecializationThrowsData> exceptions; private List<String> guardDefinitions = Collections.emptyList(); private List<GuardData> guards = Collections.emptyList(); private List<ShortCircuitData> shortCircuits; private List<String> assumptions = Collections.emptyList(); - private NodeData node; private boolean reachable; - public SpecializationData(TemplateMethod template, int order, List<SpecializationThrowsData> exceptions) { + public SpecializationData(NodeData node, TemplateMethod template, SpecializationKind kind, int order, List<SpecializationThrowsData> exceptions) { super(template); + this.node = node; this.order = order; - this.generic = false; - this.uninitialized = false; - this.polymorphic = false; + this.kind = kind; this.exceptions = exceptions; for (SpecializationThrowsData exception : exceptions) { @@ -58,13 +59,8 @@ } } - public SpecializationData(TemplateMethod template, boolean generic, boolean uninitialized, boolean polymorphic) { - super(template); - this.order = Specialization.DEFAULT_ORDER; - this.generic = generic; - this.uninitialized = uninitialized; - this.polymorphic = polymorphic; - this.exceptions = Collections.emptyList(); + public SpecializationData(NodeData node, TemplateMethod template, SpecializationKind kind) { + this(node, template, kind, Specialization.DEFAULT_ORDER, new ArrayList<SpecializationThrowsData>()); } public void setReachable(boolean reachable) { @@ -76,7 +72,7 @@ } public boolean isPolymorphic() { - return polymorphic; + return kind == SpecializationKind.POLYMORPHIC; } @Override @@ -141,12 +137,12 @@ SpecializationData m2 = (SpecializationData) other; + int kindOrder = kind.compareTo(m2.kind); + if (kindOrder != 0) { + return kindOrder; + } if (getOrder() != Specialization.DEFAULT_ORDER && m2.getOrder() != Specialization.DEFAULT_ORDER) { return getOrder() - m2.getOrder(); - } else if (isUninitialized() ^ m2.isUninitialized()) { - return isUninitialized() ? -1 : 1; - } else if (isGeneric() ^ m2.isGeneric()) { - return isGeneric() ? 1 : -1; } if (getTemplate() != m2.getTemplate()) { @@ -160,10 +156,6 @@ return node; } - public void setNode(NodeData node) { - this.node = node; - } - public void setGuards(List<GuardData> guards) { this.guards = guards; } @@ -177,15 +169,15 @@ } public boolean isSpecialized() { - return !isGeneric() && !isUninitialized() && !isPolymorphic(); + return kind == SpecializationKind.SPECIALIZED; } public boolean isGeneric() { - return generic; + return kind == SpecializationKind.GENERIC; } public boolean isUninitialized() { - return uninitialized; + return kind == SpecializationKind.UNINITIALIZED; } public List<SpecializationThrowsData> getExceptions() {