@@ -5808,7 +5808,7 @@ MINT_IN_CASE(MINT_BRTRUE_I8_SP) ZEROP_SP(gint64, !=); MINT_IN_BREAK;
58085808 }
58095809 MINT_IN_CASE (MINT_CONV_OVF_I4_R8 ) {
58105810 double val = LOCAL_VAR (ip [2 ], double );
5811- if (val < G_MININT32 || val > G_MAXINT32 || isnan (val ))
5811+ if (mono_isnan ( val ) || mono_trunc (val ) != ( gint32 ) val )
58125812 THROW_EX (mono_get_exception_overflow (), ip );
58135813 LOCAL_VAR (ip [1 ], gint32 ) = (gint32 )val ;
58145814 ip + = 3 ;
@@ -5840,7 +5840,7 @@ MINT_IN_CASE(MINT_BRTRUE_I8_SP) ZEROP_SP(gint64, !=); MINT_IN_BREAK;
58405840 }
58415841 MINT_IN_CASE (MINT_CONV_OVF_U4_R8 ) {
58425842 double val = LOCAL_VAR (ip [2 ], double );
5843- if (val < 0 || val > G_MAXUINT32 || isnan (val ))
5843+ if (mono_isnan ( val ) || mono_trunc (val ) != ( guint32 ) val )
58445844 THROW_EX (mono_get_exception_overflow (), ip );
58455845 LOCAL_VAR (ip [1 ], gint32 ) = (guint32 ) val ;
58465846 ip + = 3 ;
@@ -5880,15 +5880,15 @@ MINT_IN_CASE(MINT_BRTRUE_I8_SP) ZEROP_SP(gint64, !=); MINT_IN_BREAK;
58805880 }
58815881 MINT_IN_CASE (MINT_CONV_OVF_I2_R4 ) {
58825882 float val = LOCAL_VAR (ip [2 ], float );
5883- if (val < G_MININT16 || val > G_MAXINT16 || isnan (val ))
5883+ if (mono_isnan ( val ) || mono_trunc (val ) != ( gint16 ) val )
58845884 THROW_EX (mono_get_exception_overflow (), ip );
58855885 LOCAL_VAR (ip [1 ], gint32 ) = (gint16 ) val ;
58865886 ip + = 3 ;
58875887 MINT_IN_BREAK ;
58885888 }
58895889 MINT_IN_CASE (MINT_CONV_OVF_I2_R8 ) {
58905890 double val = LOCAL_VAR (ip [2 ], double );
5891- if (val < G_MININT16 || val > G_MAXINT16 || isnan (val ))
5891+ if (mono_isnan ( val ) || mono_trunc (val ) != ( gint16 ) val )
58925892 THROW_EX (mono_get_exception_overflow (), ip );
58935893 LOCAL_VAR (ip [1 ], gint32 ) = (gint16 ) val ;
58945894 ip + = 3 ;
@@ -5912,15 +5912,15 @@ MINT_IN_CASE(MINT_BRTRUE_I8_SP) ZEROP_SP(gint64, !=); MINT_IN_BREAK;
59125912 }
59135913 MINT_IN_CASE (MINT_CONV_OVF_U2_R4 ) {
59145914 float val = LOCAL_VAR (ip [2 ], float );
5915- if (val < 0 || val > G_MAXUINT16 || isnan (val ))
5915+ if (mono_isnan ( val ) || mono_trunc (val ) != ( guint16 ) val )
59165916 THROW_EX (mono_get_exception_overflow (), ip );
59175917 LOCAL_VAR (ip [1 ], gint32 ) = (guint16 ) val ;
59185918 ip + = 3 ;
59195919 MINT_IN_BREAK ;
59205920 }
59215921 MINT_IN_CASE (MINT_CONV_OVF_U2_R8 ) {
59225922 double val = LOCAL_VAR (ip [2 ], double );
5923- if (val < 0 || val > G_MAXUINT16 || isnan (val ))
5923+ if (mono_isnan ( val ) || mono_trunc (val ) != ( guint16 ) val )
59245924 THROW_EX (mono_get_exception_overflow (), ip );
59255925 LOCAL_VAR (ip [1 ], gint32 ) = (guint16 ) val ;
59265926 ip + = 3 ;
@@ -5960,15 +5960,15 @@ MINT_IN_CASE(MINT_BRTRUE_I8_SP) ZEROP_SP(gint64, !=); MINT_IN_BREAK;
59605960 }
59615961 MINT_IN_CASE (MINT_CONV_OVF_I1_R4 ) {
59625962 float val = LOCAL_VAR (ip [2 ], float );
5963- if (val < G_MININT8 || val > G_MAXINT8 || isnan (val ))
5963+ if (mono_isnan ( val ) || mono_trunc (val ) != ( gint8 ) val )
59645964 THROW_EX (mono_get_exception_overflow (), ip );
59655965 LOCAL_VAR (ip [1 ], gint32 ) = (gint8 ) val ;
59665966 ip + = 3 ;
59675967 MINT_IN_BREAK ;
59685968 }
59695969 MINT_IN_CASE (MINT_CONV_OVF_I1_R8 ) {
59705970 double val = LOCAL_VAR (ip [2 ], double );
5971- if (val < G_MININT8 || val > G_MAXINT8 || isnan (val ))
5971+ if (mono_isnan ( val ) || mono_trunc (val ) != ( gint8 ) val )
59725972 THROW_EX (mono_get_exception_overflow (), ip );
59735973 LOCAL_VAR (ip [1 ], gint32 ) = (gint8 ) val ;
59745974 ip + = 3 ;
@@ -5992,15 +5992,15 @@ MINT_IN_CASE(MINT_BRTRUE_I8_SP) ZEROP_SP(gint64, !=); MINT_IN_BREAK;
59925992 }
59935993 MINT_IN_CASE (MINT_CONV_OVF_U1_R4 ) {
59945994 float val = LOCAL_VAR (ip [2 ], float );
5995- if (val < 0 || val > G_MAXUINT8 || isnan (val ))
5995+ if (mono_isnan ( val ) || mono_trunc (val ) != ( guint8 ) val )
59965996 THROW_EX (mono_get_exception_overflow (), ip );
59975997 LOCAL_VAR (ip [1 ], gint32 ) = (guint8 ) val ;
59985998 ip + = 3 ;
59995999 MINT_IN_BREAK ;
60006000 }
60016001 MINT_IN_CASE (MINT_CONV_OVF_U1_R8 ) {
60026002 double val = LOCAL_VAR (ip [2 ], double );
6003- if (val < 0 || val > G_MAXUINT8 || isnan (val ))
6003+ if (mono_isnan ( val ) || mono_trunc (val ) != ( guint8 ) val )
60046004 THROW_EX (mono_get_exception_overflow (), ip );
60056005 LOCAL_VAR (ip [1 ], gint32 ) = (guint8 ) val ;
60066006 ip + = 3 ;
0 commit comments