From 11b6f4fdc8bcdfefc24996d4f305af9a77f94ce3 Mon Sep 17 00:00:00 2001 From: Ilya Rezvov Date: Wed, 11 Apr 2018 14:54:05 -0700 Subject: [PATCH] fix if instruction execution --- src/Language/Wasm/Interpreter.hs | 2 +- tests/Test.hs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Language/Wasm/Interpreter.hs b/src/Language/Wasm/Interpreter.hs index 870bce1..6c5a3ec 100644 --- a/src/Language/Wasm/Interpreter.hs +++ b/src/Language/Wasm/Interpreter.hs @@ -581,7 +581,7 @@ eval store FunctionInstance { funcType, moduleInstance, code = Function { localT let expr = if v /= 0 then true else false res <- go ctx { labels = Label resType : labels ctx, stack = rest } expr case res of - Break 0 r EvalCtx{ locals = ls } -> return $ Done ctx { locals = ls, stack = r ++ stack ctx } + Break 0 r EvalCtx{ locals = ls } -> return $ Done ctx { locals = ls, stack = r ++ rest } Break n r ctx' -> return $ Break (n - 1) r ctx' command -> return command step ctx@EvalCtx{ stack, labels } (Br label) = do diff --git a/tests/Test.hs b/tests/Test.hs index c60ba01..a76a714 100644 --- a/tests/Test.hs +++ b/tests/Test.hs @@ -34,7 +34,7 @@ compile file = do main :: IO () main = do files <- Directory.listDirectory "tests/samples" - -- let files = ["tee_local.wast"] + -- let files = ["if.wast"] scriptTestCases <- (`mapM` files) $ \file -> do content <- LBS.readFile $ "tests/samples/" ++ file let Right script = Parser.parseScript <$> Lexer.scanner content