From 14bcc443282146cb85ef2798c36fcb2fe6fa74fa Mon Sep 17 00:00:00 2001 From: jgravelle-google Date: Wed, 28 Jun 2017 09:53:37 -0700 Subject: Runtime.stackAlloc should grow down for wasm (#1073) * Runtime.stackAlloc should grow down for wasm * stackAlloc should align properly; update tests --- src/wasm-emscripten.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/wasm-emscripten.cpp b/src/wasm-emscripten.cpp index 43366e410..7463ec594 100644 --- a/src/wasm-emscripten.cpp +++ b/src/wasm-emscripten.cpp @@ -119,16 +119,12 @@ void generateStackAllocFunction(LinkerObject& linker) { SetLocal* setStackLocal = builder.makeSetLocal(1, loadStack); GetLocal* getStackLocal = builder.makeGetLocal(1, i32); GetLocal* getSizeArg = builder.makeGetLocal(0, i32); - Binary* add = builder.makeBinary(AddInt32, getStackLocal, getSizeArg); + Binary* sub = builder.makeBinary(SubInt32, getStackLocal, getSizeArg); const static uint32_t bitAlignment = 16; const static uint32_t bitMask = bitAlignment - 1; - Const* addConst = builder.makeConst(Literal(bitMask)); - Binary* maskedAdd = builder.makeBinary( - AndInt32, - builder.makeBinary(AddInt32, add, addConst), - builder.makeConst(Literal(~bitMask)) - ); - Store* storeStack = generateStoreStackPointer(builder, linker, maskedAdd); + Const* subConst = builder.makeConst(Literal(~bitMask)); + Binary* maskedSub = builder.makeBinary(AndInt32, sub, subConst); + Store* storeStack = generateStoreStackPointer(builder, linker, maskedSub); Block* block = builder.makeBlock(); block->list.push_back(setStackLocal); -- cgit v1.2.3