# HG changeset patch # User Christian Humer # Date 1423667445 -3600 # Node ID b31b2f289e7d04a0bb5dbae0d7a9aec7ac9a47cd # Parent 21b9b9941775547503abc962f86c18b5c121a284 Truffle-DSL: fix unnecessary frame cast warning. diff -r 21b9b9941775 -r b31b2f289e7d graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/TruffleTypes.java --- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/TruffleTypes.java Wed Feb 11 12:13:44 2015 +0100 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/TruffleTypes.java Wed Feb 11 16:10:45 2015 +0100 @@ -66,7 +66,6 @@ private final DeclaredType nodeFactory; private final DeclaredType nodeFactoryBase; private final DeclaredType dslMetadata; - private final DeclaredType implies; private final DeclaredType generateNodeFactory; private final TypeElement expectError; @@ -95,7 +94,6 @@ nodeFactory = getRequired(context, NodeFactory.class); nodeFactoryBase = getRequired(context, NodeFactoryBase.class); dslMetadata = getRequired(context, DSLMetadata.class); - implies = getRequired(context, Implies.class); expectError = (TypeElement) getRequired(context, ExpectError.class).asElement(); generateNodeFactory = getRequired(context, GenerateNodeFactory.class); } @@ -104,10 +102,6 @@ return generateNodeFactory; } - public DeclaredType getImplies() { - return implies; - } - public DeclaredType getDslMetadata() { return dslMetadata; } diff -r 21b9b9941775 -r b31b2f289e7d graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/expression/DSLExpression.java --- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/expression/DSLExpression.java Wed Feb 11 12:13:44 2015 +0100 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/expression/DSLExpression.java Wed Feb 11 16:10:45 2015 +0100 @@ -29,6 +29,8 @@ public abstract class DSLExpression { + private TypeMirror resolvedTargetType; + private DSLExpression() { } @@ -66,6 +68,14 @@ return variables; } + public void setResolvedTargetType(TypeMirror resolvedTargetType) { + this.resolvedTargetType = resolvedTargetType; + } + + public TypeMirror getResolvedTargetType() { + return resolvedTargetType; + } + public final boolean isVariableBound(VariableElement variableElement) { return findBoundVariableElements().contains(variableElement); } diff -r 21b9b9941775 -r b31b2f289e7d graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/expression/DSLExpressionResolver.java --- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/expression/DSLExpressionResolver.java Wed Feb 11 12:13:44 2015 +0100 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/expression/DSLExpressionResolver.java Wed Feb 11 16:10:45 2015 +0100 @@ -167,8 +167,10 @@ if (!ElementUtils.isAssignable(sourceType, targetType)) { continue outer; } + expression.setResolvedTargetType(targetType); parameterIndex++; } + call.setResolvedMethod(method); break; } diff -r 21b9b9941775 -r b31b2f289e7d graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeGenFactory.java --- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeGenFactory.java Wed Feb 11 12:13:44 2015 +0100 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeGenFactory.java Wed Feb 11 16:10:45 2015 +0100 @@ -2125,13 +2125,19 @@ return new CodeTree[]{expressionBuilder.build(), assertionBuilder.build()}; } - private static Map castBoundTypes(Map bindings) { + private Map castBoundTypes(Map bindings) { + Map resolvedBindings = new HashMap<>(); for (Variable variable : bindings.keySet()) { LocalVariable localVariable = bindings.get(variable); CodeTree resolved = localVariable.createReference(); - if (!ElementUtils.typeEquals(variable.getResolvedType(), localVariable.getTypeMirror())) { - resolved = CodeTreeBuilder.createBuilder().cast(variable.getResolvedType(), resolved).build(); + TypeMirror sourceType = localVariable.getTypeMirror(); + TypeMirror targetType = variable.getResolvedTargetType(); + if (targetType == null) { + targetType = variable.getResolvedType(); + } + if (!ElementUtils.isAssignable(sourceType, targetType)) { + resolved = CodeTreeBuilder.createBuilder().cast(targetType, resolved).build(); } resolvedBindings.put(variable, resolved); } @@ -2573,6 +2579,11 @@ return newType(type.getTypeSystem().getGenericTypeData()); } + @Override + public String toString() { + return "Local[type = " + getTypeMirror() + ", name = " + name + ", accessWith = " + accessorTree + "]"; + } + } private interface SpecializationExecution { diff -r 21b9b9941775 -r b31b2f289e7d graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/model/CodeVariableElement.java --- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/model/CodeVariableElement.java Wed Feb 11 12:13:44 2015 +0100 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/model/CodeVariableElement.java Wed Feb 11 16:10:45 2015 +0100 @@ -85,6 +85,11 @@ } @Override + public String toString() { + return super.toString() + "/* " + ElementUtils.getSimpleName(type) + "*/"; + } + + @Override public ElementKind getKind() { if (getEnclosingElement() instanceof ExecutableElement) { return ElementKind.PARAMETER; diff -r 21b9b9941775 -r b31b2f289e7d graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/Parameter.java --- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/Parameter.java Wed Feb 11 12:13:44 2015 +0100 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/model/Parameter.java Wed Feb 11 16:10:45 2015 +0100 @@ -119,6 +119,7 @@ @Override public String toString() { - return variableElement.getSimpleName().toString(); + return "Parameter [localName=" + localName + ", type=" + getType() + ", variableElement=" + variableElement + "]"; } + }