Mercurial > hg > graal-jvmci-8
changeset 20998:8e5f9310f3aa
Truffle-DSL: fixed wrong order for implicit casts.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Thu, 16 Apr 2015 21:29:56 +0200 |
parents | 370dbf93f0ca |
children | ef2825da2e43 |
files | graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/ElementUtils.java graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/NodeData.java graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TypeSystemData.java graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java |
diffstat | 4 files changed, 13 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/ElementUtils.java Thu Apr 16 20:08:18 2015 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/ElementUtils.java Thu Apr 16 21:29:56 2015 +0200 @@ -1172,10 +1172,14 @@ } } - public static List<TypeMirror> sortTypes(List<TypeMirror> list) { + public static List<TypeMirror> sortTypes(List<TypeMirror> list, final boolean reverse) { Collections.sort(list, new Comparator<TypeMirror>() { public int compare(TypeMirror o1, TypeMirror o2) { - return compareType(o1, o2); + if (reverse) { + return compareType(o2, o1); + } else { + return compareType(o1, o2); + } } }); return list; @@ -1205,7 +1209,7 @@ return ElementUtils.getSimpleName(signature1).compareTo(ElementUtils.getSimpleName(signature2)); } - public static List<TypeMirror> uniqueSortedTypes(Collection<TypeMirror> types) { + public static List<TypeMirror> uniqueSortedTypes(Collection<TypeMirror> types, boolean reverse) { if (types.isEmpty()) { return new ArrayList<>(0); } else if (types.size() <= 1) { @@ -1219,7 +1223,7 @@ for (TypeMirror type : types) { sourceTypes.put(ElementUtils.getTypeId(type), type); } - return sortTypes(new ArrayList<>(sourceTypes.values())); + return sortTypes(new ArrayList<>(sourceTypes.values()), reverse); } public static int compareMethod(ExecutableElement method1, ExecutableElement method2) {
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/NodeData.java Thu Apr 16 20:08:18 2015 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/NodeData.java Thu Apr 16 21:29:56 2015 +0200 @@ -593,7 +593,7 @@ } } - return ElementUtils.uniqueSortedTypes(types); + return ElementUtils.uniqueSortedTypes(types, false); } }
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TypeSystemData.java Thu Apr 16 20:08:18 2015 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/TypeSystemData.java Thu Apr 16 21:29:56 2015 +0200 @@ -158,7 +158,7 @@ for (ImplicitCastData cast : getImplicitCasts()) { sourceTypes.add(cast.getTargetType()); } - return ElementUtils.uniqueSortedTypes(sourceTypes); + return ElementUtils.uniqueSortedTypes(sourceTypes, true); } public List<TypeMirror> lookupSourceTypes(TypeMirror targetType) { @@ -169,7 +169,7 @@ sourceTypes.add(cast.getSourceType()); } } - return sourceTypes; + return ElementUtils.uniqueSortedTypes(sourceTypes, true); } public boolean isImplicitSubtypeOf(TypeMirror source, TypeMirror target) {
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java Thu Apr 16 20:08:18 2015 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/parser/NodeParser.java Thu Apr 16 21:29:56 2015 +0200 @@ -1334,7 +1334,7 @@ } if (!frameTypes.isEmpty()) { - frameTypes = ElementUtils.uniqueSortedTypes(frameTypes); + frameTypes = ElementUtils.uniqueSortedTypes(frameTypes, false); TypeMirror frameType; if (frameTypes.size() == 1) { frameType = frameTypes.iterator().next(); @@ -1369,7 +1369,7 @@ } usedTypes.add(parameter.getType()); } - usedTypes = ElementUtils.uniqueSortedTypes(usedTypes); + usedTypes = ElementUtils.uniqueSortedTypes(usedTypes, false); if (usedTypes.size() == 1) { polymorphicType = usedTypes.iterator().next();