diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/wasm2js.h | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/wasm2js.h b/src/wasm2js.h index d77b6d06c..0bccf7dee 100644 --- a/src/wasm2js.h +++ b/src/wasm2js.h @@ -1529,18 +1529,19 @@ Ref Wasm2JSBuilder::processFunctionBody(Module* m, Function* func) { } Ref visitHost(Host* curr) { - Ref call; if (curr->op == HostOp::GrowMemory) { - call = ValueBuilder::makeCall(WASM_GROW_MEMORY, - makeAsmCoercion( - visit(curr->operands[0], EXPRESSION_RESULT), - wasmToAsmType(curr->operands[0]->type))); + if (module->memory.exists && module->memory.max > module->memory.initial) { + return ValueBuilder::makeCall(WASM_GROW_MEMORY, + makeAsmCoercion( + visit(curr->operands[0], EXPRESSION_RESULT), + wasmToAsmType(curr->operands[0]->type))); + } else { + return ValueBuilder::makeCall(ABORT_FUNC); + } } else if (curr->op == HostOp::CurrentMemory) { - call = ValueBuilder::makeCall(WASM_CURRENT_MEMORY); - } else { - return ValueBuilder::makeCall(ABORT_FUNC); + return ValueBuilder::makeCall(WASM_CURRENT_MEMORY); } - return call; + WASM_UNREACHABLE(); // TODO } Ref visitNop(Nop* curr) { |