# HG changeset patch # User Doug Simon # Date 1365180837 -7200 # Node ID d47b52b0ff68361921bb2d6ac82fcf8a25f2b2d2 # Parent bc7bb895e359ae341fb3a16b37fb8e161a6bbd9f fixed discrepancy between a method's name and its semantics diff -r bc7bb895e359 -r d47b52b0ff68 graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/TypeCheckHints.java --- a/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/TypeCheckHints.java Fri Apr 05 17:51:55 2013 +0200 +++ b/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/TypeCheckHints.java Fri Apr 05 18:53:57 2013 +0200 @@ -63,7 +63,7 @@ * @param maxHints the maximum length of {@link #types} */ public TypeCheckHints(ResolvedJavaType type, JavaTypeProfile profile, Assumptions assumptions, double minHintHitProbability, int maxHints) { - if (type != null && canHaveSubtype(type)) { + if (type != null && !canHaveSubtype(type)) { types = new ResolvedJavaType[]{type}; exact = true; } else { @@ -113,9 +113,9 @@ * Determines if a given type can have subtypes other than itself. This analysis is purely * static; no assumptions are made. * - * @return true if {@code type} has no subtype(s) + * @return true if {@code type} can have subtypes */ public static boolean canHaveSubtype(ResolvedJavaType type) { - return isFinal(getElementalType(type).getModifiers()); + return !isFinal(getElementalType(type).getModifiers()); } } diff -r bc7bb895e359 -r d47b52b0ff68 graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java --- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Fri Apr 05 17:51:55 2013 +0200 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Fri Apr 05 18:53:57 2013 +0200 @@ -23,6 +23,7 @@ package com.oracle.graal.java; import static com.oracle.graal.api.code.DeoptimizationAction.*; +import static com.oracle.graal.api.code.TypeCheckHints.*; import static com.oracle.graal.api.meta.DeoptimizationReason.*; import static com.oracle.graal.bytecode.Bytecodes.*; import static java.lang.reflect.Modifier.*; @@ -771,7 +772,7 @@ } private JavaTypeProfile getProfileForTypeCheck(ResolvedJavaType type) { - if (!optimisticOpts.useTypeCheckHints() || TypeCheckHints.canHaveSubtype(type)) { + if (!optimisticOpts.useTypeCheckHints() || !canHaveSubtype(type)) { return null; } else { ResolvedJavaType uniqueSubtype = type.findUniqueConcreteSubtype();