Mercurial > hg > truffle
diff graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/SpecializationData.java @ 20938:18c0f02fa4d2
Truffle-DSL: make type systems optional.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Tue, 14 Apr 2015 15:12:48 +0200 |
parents | 21b9b9941775 |
children | 476374f3fe9a |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/SpecializationData.java Tue Apr 14 22:12:03 2015 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/SpecializationData.java Tue Apr 14 15:12:48 2015 +0200 @@ -25,6 +25,7 @@ import java.util.*; import javax.lang.model.element.*; +import javax.lang.model.type.*; import com.oracle.truffle.dsl.processor.*; import com.oracle.truffle.dsl.processor.expression.*; @@ -201,17 +202,18 @@ for (Parameter parameter : getSignatureParameters()) { NodeChildData child = parameter.getSpecification().getExecution().getChild(); - ExecutableTypeData type = child.findExecutableType(parameter.getTypeSystemType()); - if (type == null) { - type = child.findAnyGenericExecutableType(context); + if (child != null) { + ExecutableTypeData type = child.findExecutableType(parameter.getType()); + if (type == null) { + type = child.findAnyGenericExecutableType(context); + } + if (type.hasUnexpectedValue(context)) { + return true; + } + if (ElementUtils.needsCastTo(type.getReturnType(), parameter.getType())) { + return true; + } } - if (type.hasUnexpectedValue(context)) { - return true; - } - if (type.getReturnType().getTypeSystemType().needsCastTo(parameter.getTypeSystemType())) { - return true; - } - } return false; } @@ -356,11 +358,12 @@ Iterator<Parameter> currentSignature = getSignatureParameters().iterator(); Iterator<Parameter> prevSignature = prev.getSignatureParameters().iterator(); + TypeSystemData typeSystem = prev.getNode().getTypeSystem(); while (currentSignature.hasNext() && prevSignature.hasNext()) { - TypeData currentType = currentSignature.next().getTypeSystemType(); - TypeData prevType = prevSignature.next().getTypeSystemType(); + TypeMirror currentType = currentSignature.next().getType(); + TypeMirror prevType = prevSignature.next().getType(); - if (!currentType.isImplicitSubtypeOf(prevType)) { + if (!typeSystem.isImplicitSubtypeOf(currentType, prevType)) { return true; } }