From d0b5535bb28b6dba1c236ee50aab9d16b69c0912 Mon Sep 17 00:00:00 2001 From: Ilya Rezvov Date: Sat, 21 Apr 2018 10:58:34 -0700 Subject: [PATCH] pass all assert_trap tests --- src/Language/Wasm/Interpreter.hs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/Language/Wasm/Interpreter.hs b/src/Language/Wasm/Interpreter.hs index 9b91d2b..5e5de8d 100644 --- a/src/Language/Wasm/Interpreter.hs +++ b/src/Language/Wasm/Interpreter.hs @@ -1237,35 +1237,35 @@ eval store FunctionInstance { funcType, moduleInstance, code = Function { localT step ctx@EvalCtx{ stack = (VI64 v:rest) } I32WrapI64 = return $ Done ctx { stack = VI32 (fromIntegral $ v .&. 0xFFFFFFFF) : rest } step ctx@EvalCtx{ stack = (VF32 v:rest) } (ITruncFU BS32 BS32) = - if isNaN v + if isNaN v || isInfinite v || v >= 2^32 || v <= -1 then return Trap else return $ Done ctx { stack = VI32 (truncate v) : rest } step ctx@EvalCtx{ stack = (VF64 v:rest) } (ITruncFU BS32 BS64) = - if isNaN v + if isNaN v || isInfinite v || v >= 2^32 || v <= -1 then return Trap else return $ Done ctx { stack = VI32 (truncate v) : rest } step ctx@EvalCtx{ stack = (VF32 v:rest) } (ITruncFU BS64 BS32) = - if isNaN v + if isNaN v || isInfinite v || v >= 2^64 || v <= -1 then return Trap else return $ Done ctx { stack = VI64 (truncate v) : rest } step ctx@EvalCtx{ stack = (VF64 v:rest) } (ITruncFU BS64 BS64) = - if isNaN v + if isNaN v || isInfinite v || v >= 2^64 || v <= -1 then return Trap else return $ Done ctx { stack = VI64 (truncate v) : rest } step ctx@EvalCtx{ stack = (VF32 v:rest) } (ITruncFS BS32 BS32) = - if isNaN v + if isNaN v || isInfinite v || v >= 2^31 || v < -2^31 then return Trap else return $ Done ctx { stack = VI32 (asWord32 $ truncate v) : rest } step ctx@EvalCtx{ stack = (VF64 v:rest) } (ITruncFS BS32 BS64) = - if isNaN v + if isNaN v || isInfinite v || v >= 2^31 || v < -2^31 then return Trap else return $ Done ctx { stack = VI32 (asWord32 $ truncate v) : rest } step ctx@EvalCtx{ stack = (VF32 v:rest) } (ITruncFS BS64 BS32) = - if isNaN v + if isNaN v || isInfinite v || v >= 2^63 || v < -2^63 then return Trap else return $ Done ctx { stack = VI64 (asWord64 $ truncate v) : rest } step ctx@EvalCtx{ stack = (VF64 v:rest) } (ITruncFS BS64 BS64) = - if isNaN v + if isNaN v || isInfinite v || v >= 2^63 || v < -2^63 then return Trap else return $ Done ctx { stack = VI64 (asWord64 $ truncate v) : rest } step ctx@EvalCtx{ stack = (VI32 v:rest) } I64ExtendUI32 =