# HG changeset patch # User Miguel Garcia # Date 1398783215 -7200 # Node ID 10274c654f75298aa1233c4a97c50bf18f455fc4 # Parent 62f455eba8c516ee7859e6d7332b6370adc15be6 [flow-sensitive] no-precision-loss check in downcast diff -r 62f455eba8c5 -r 10274c654f75 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/BaseReduction.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/BaseReduction.java Tue Apr 29 16:16:27 2014 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/BaseReduction.java Tue Apr 29 16:53:35 2014 +0200 @@ -208,7 +208,7 @@ *

* */ - protected static boolean precisionLoss(ValueNode input, ValueNode output) { + public static boolean precisionLoss(ValueNode input, ValueNode output) { ObjectStamp inputStamp = (ObjectStamp) input.stamp(); ObjectStamp outputStamp = (ObjectStamp) output.stamp(); if (FlowUtil.isMorePrecise(inputStamp.type(), outputStamp.type())) { diff -r 62f455eba8c5 -r 10274c654f75 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/CheckCastReduction.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/CheckCastReduction.java Tue Apr 29 16:16:27 2014 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/CheckCastReduction.java Tue Apr 29 16:53:35 2014 +0200 @@ -299,9 +299,6 @@ ObjectStamp subjectStamp = (ObjectStamp) subject.stamp(); ResolvedJavaType subjectType = subjectStamp.type(); - // TODO move this check to downcast() - assert !precisionLoss(checkCast.object(), subject); - /* * At this point, two sources of (partial) information: the witness and the stamp of * subject. The latter might be more precise than the witness (eg, subject might be diff -r 62f455eba8c5 -r 10274c654f75 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/EquationalReasoner.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/EquationalReasoner.java Tue Apr 29 16:16:27 2014 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/cfs/EquationalReasoner.java Tue Apr 29 16:53:35 2014 +0200 @@ -586,6 +586,8 @@ result = downcastedUtil(object, w); } + assert !BaseReduction.precisionLoss(object, result); + return result; }