diff options
author | Brian Sullivan <briansul@microsoft.com> | 2018-09-25 13:06:24 -0700 |
---|---|---|
committer | Brian Sullivan <briansul@microsoft.com> | 2018-10-05 15:08:49 -0700 |
commit | 4a6f0c8f0c706c3a5ed5e98feeca80de1da57b5d (patch) | |
tree | 31f09749f5954c087f6c8c436d8418e323b6ca2d /src/jit/valuenumfuncs.h | |
parent | 27c848e37e9998142b60e776cf5b5d08a3543fe1 (diff) | |
download | coreclr-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.h | 13 |
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) |