Mercurial > hg > graal-jvmci-8
diff graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeData.java @ 10596:f43eb2f1bbbc
Truffle-DSL: code-generation of polymorphic caching
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Mon, 01 Jul 2013 20:32:20 +0200 |
parents | 3cc5fb59916e |
children |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeData.java Mon Jul 01 20:31:30 2013 +0200 +++ b/graal/com.oracle.truffle.codegen.processor/src/com/oracle/truffle/codegen/processor/node/NodeData.java Mon Jul 01 20:32:20 2013 +0200 @@ -46,12 +46,14 @@ private ParameterSpec instanceParameterSpec; private List<SpecializationData> specializations; + private List<SpecializationData> polymorphicSpecializations; private List<SpecializationListenerData> specializationListeners; private Map<Integer, List<ExecutableTypeData>> executableTypes; private List<ShortCircuitData> shortCircuits; private List<String> assumptions; private List<CreateCastData> casts; + private int polymorphicDepth = -1; private String shortName; public NodeData(TypeElement type, String id) { @@ -75,6 +77,14 @@ this.assumptions = splitSource.assumptions; } + public int getPolymorphicDepth() { + return polymorphicDepth; + } + + void setPolymorphicDepth(int polymorphicDepth) { + this.polymorphicDepth = polymorphicDepth; + } + public List<CreateCastData> getCasts() { return casts; } @@ -272,6 +282,10 @@ return type; } } + + for (ExecutableTypeData type : types) { + return type; + } return null; } @@ -358,6 +372,15 @@ return null; } + public SpecializationData getUninitializedSpecialization() { + for (SpecializationData specialization : specializations) { + if (specialization.isUninitialized()) { + return specialization; + } + } + return null; + } + @Override public TypeSystemData getTypeSystem() { return typeSystem; @@ -381,6 +404,8 @@ dumpProperty(builder, indent, "fields", getChildren()); dumpProperty(builder, indent, "executableTypes", getExecutableTypes()); dumpProperty(builder, indent, "specializations", getSpecializations()); + dumpProperty(builder, indent, "polymorphicDepth", getPolymorphicDepth()); + dumpProperty(builder, indent, "polymorphic", getPolymorphicSpecializations()); dumpProperty(builder, indent, "assumptions", getAssumptions()); dumpProperty(builder, indent, "casts", getCasts()); dumpProperty(builder, indent, "messages", collectMessages()); @@ -488,6 +513,14 @@ } } + void setPolymorphicSpecializations(List<SpecializationData> polymorphicSpecializations) { + this.polymorphicSpecializations = polymorphicSpecializations; + } + + public List<SpecializationData> getPolymorphicSpecializations() { + return polymorphicSpecializations; + } + void setSpecializationListeners(List<SpecializationListenerData> specializationListeners) { this.specializationListeners = specializationListeners; }