From 3be5840c9a8e8c2f800cffd6803630f5b0daab45 Mon Sep 17 00:00:00 2001 From: Ilya Rezvov Date: Mon, 9 Apr 2018 21:48:37 -0700 Subject: [PATCH] implement grow_memory --- src/Language/Wasm/Interpreter.hs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Language/Wasm/Interpreter.hs b/src/Language/Wasm/Interpreter.hs index 79b466d..c99dfaa 100644 --- a/src/Language/Wasm/Interpreter.hs +++ b/src/Language/Wasm/Interpreter.hs @@ -784,6 +784,10 @@ eval store FunctionInstance { funcType, moduleInstance, code = Function { localT IOVector.write memory (addr + idx) byte mapM_ writeByte [0..3] return $ Done ctx { stack = rest } + step ctx@EvalCtx{ stack = st } CurrentMemory = do + let MemoryInstance { memory } = memInstances store ! (memaddrs moduleInstance ! 0) + let size = fromIntegral $ IOVector.length memory `div` pageSize + return $ Done ctx { stack = VI32 size : st } step ctx (I32Const v) = return $ Done ctx { stack = VI32 v : stack ctx } step ctx (I64Const v) = return $ Done ctx { stack = VI64 v : stack ctx } step ctx (F32Const v) = return $ Done ctx { stack = VF32 v : stack ctx }