summaryrefslogtreecommitdiff
path: root/src/jit/valuenumfuncs.h
diff options
context:
space:
mode:
authorBrian Sullivan <briansul@microsoft.com>2018-09-25 13:06:24 -0700
committerBrian Sullivan <briansul@microsoft.com>2018-10-05 15:08:49 -0700
commit4a6f0c8f0c706c3a5ed5e98feeca80de1da57b5d (patch)
tree31f09749f5954c087f6c8c436d8418e323b6ca2d /src/jit/valuenumfuncs.h
parent27c848e37e9998142b60e776cf5b5d08a3543fe1 (diff)
downloadcoreclr-4a6f0c8f0c706c3a5ed5e98feeca80de1da57b5d.tar.gz
coreclr-4a6f0c8f0c706c3a5ed5e98feeca80de1da57b5d.tar.bz2
coreclr-4a6f0c8f0c706c3a5ed5e98feeca80de1da57b5d.zip
Full support for exception sets in value numbering.
New method that add exception sets: fgValueNumberAddExceptionSet - fgValueNumberAddExceptionSetForIndirection - fgValueNumberAddExceptionSetForDivision - fgValueNumberAddExceptionSetForOverflow - fgValueNumberAddExceptionSetForCkFinite Refactoring work added methods: VNEvalShouldFold - method to decide if constant folding should be performed EvalUsingMathIdentity - Uses math identities to simplify value number exoressions Renamed fgValueNumberHelperMethVNFunc to fgValueNumberJitHelperMethodVNFunc Removed the suffixes from the method headers comments
Diffstat (limited to 'src/jit/valuenumfuncs.h')
-rw-r--r--src/jit/valuenumfuncs.h13
1 files changed, 6 insertions, 7 deletions
diff --git a/src/jit/valuenumfuncs.h b/src/jit/valuenumfuncs.h
index a5a6b13b2c..e29721b480 100644
--- a/src/jit/valuenumfuncs.h
+++ b/src/jit/valuenumfuncs.h
@@ -56,16 +56,15 @@ ValueNumFuncDef(ExcSetCons, 2, false, false, false) // Args: 0: exceptio
// Curremtly when the execution is always thrown, the value VNForVoid() is used as Arg0 by OverflowExc and DivideByZeroExc
//
ValueNumFuncDef(NullPtrExc, 1, false, false, false) // Null pointer exception check. Args: 0: address value, throws when it is null
-ValueNumFuncDef(ArithmeticExc, 2, false, false, false) // E.g., for signed its, MinInt / -1.
-ValueNumFuncDef(OverflowExc, 1, false, false, false) // Integer overflow check. Args: 0: expression value, throws when it overflows
+ValueNumFuncDef(ArithmeticExc, 2, false, false, false) // Arithmetic exception check, ckfinite and integer division overflow, Args: 0: expression value,
+ValueNumFuncDef(OverflowExc, 1, false, false, false) // Integer overflow check. used for checked add,sub and mul Args: 0: expression value, throws when it overflows
ValueNumFuncDef(ConvOverflowExc, 2, false, false, false) // Cast conversion overflow check. Args: 0: input value; 1: var_types of the target type
- // (shifted left one bit; low bit encode whether source is unsigned.)
+ // - (shifted left one bit; low bit encode whether source is unsigned.)
ValueNumFuncDef(DivideByZeroExc, 1, false, false, false) // Division by zero check. Args: 0: divisor value, throws when it is zero
-ValueNumFuncDef(IndexOutOfRangeExc, 2, false, false, false) // Args: 0: array length; 1: index value, throws when the bounds check fails.
-ValueNumFuncDef(InvalidCastExc, 2, false, false, false) // Args: 0: ref value being cast; 1: handle of type being cast to. Represents the exception thrown if the cast fails.
+ValueNumFuncDef(IndexOutOfRangeExc, 2, false, false, false) // Array bounds check, Args: 0: array length; 1: index value, throws when the bounds check fails.
+ValueNumFuncDef(InvalidCastExc, 2, false, false, false) // CastClass check, Args: 0: ref value being cast; 1: handle of type being cast to, throws when the cast fails.
ValueNumFuncDef(NewArrOverflowExc, 1, false, false, false) // Raises Integer overflow when Arg 0 is negative
-ValueNumFuncDef(HelperMultipleExc, 0, false, false, false) // Represents one or more different exceptions that may be thrown by a JitHelper
-
+ValueNumFuncDef(HelperMultipleExc, 0, false, false, false) // Represents one or more different exceptions that could be thrown by a Jit Helper method
ValueNumFuncDef(Lng2Dbl, 1, false, false, false)
ValueNumFuncDef(ULng2Dbl, 1, false, false, false)