Mercurial > hg > graal-compiler
diff graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastNode.java @ 19800:3362ba500371
Connect required Assumptions with answer to CHA query
author | Tom Rodriguez <tom.rodriguez@oracle.com> |
---|---|
date | Wed, 11 Mar 2015 17:32:04 -0700 |
parents | 14e703edb2ab |
children | deab43a789ad |
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastNode.java Wed Mar 11 16:06:35 2015 -0700 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastNode.java Wed Mar 11 17:32:04 2015 -0700 @@ -26,8 +26,8 @@ import static com.oracle.graal.api.meta.DeoptimizationReason.*; import static com.oracle.graal.nodes.extended.BranchProbabilityNode.*; -import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; +import com.oracle.graal.api.meta.Assumptions.AssumptionResult; import com.oracle.graal.compiler.common.type.*; import com.oracle.graal.graph.*; import com.oracle.graal.graph.spi.*; @@ -72,10 +72,10 @@ } assert object.stamp() instanceof ObjectStamp : object + ":" + object.stamp(); if (assumptions != null) { - ResolvedJavaType uniqueConcreteType = type.findUniqueConcreteSubtype(); - if (uniqueConcreteType != null && !uniqueConcreteType.equals(type)) { - assumptions.recordConcreteSubtype(type, uniqueConcreteType); - type = uniqueConcreteType; + AssumptionResult<ResolvedJavaType> uniqueConcreteType = type.findUniqueConcreteSubtype(); + if (uniqueConcreteType != null && !uniqueConcreteType.getResult().equals(type)) { + assumptions.record(uniqueConcreteType); + type = uniqueConcreteType.getResult(); } } return new CheckCastNode(type, object, profile, forStoreCheck); @@ -170,11 +170,11 @@ Assumptions assumptions = graph().getAssumptions(); if (assumptions != null) { - ResolvedJavaType exactType = type.findUniqueConcreteSubtype(); - if (exactType != null && !exactType.equals(type)) { + AssumptionResult<ResolvedJavaType> exactTypeResult = type.findUniqueConcreteSubtype(); + if (exactTypeResult != null && !exactTypeResult.getResult().equals(type)) { // Propagate more precise type information to usages of the checkcast. - assumptions.recordConcreteSubtype(type, exactType); - return new CheckCastNode(exactType, object, profile, forStoreCheck); + assumptions.record(exactTypeResult); + return new CheckCastNode(exactTypeResult.getResult(), object, profile, forStoreCheck); } }