From 4a04fc609133313ab18ef49599f365d3587af55b Mon Sep 17 00:00:00 2001 From: Heejin Ahn Date: Fri, 26 Aug 2016 11:29:18 -0700 Subject: Asm.js-style setjmp/longjmp support for wasm (#681) This needs to export realloc as well, in addition to malloc and free handled in #4469. To support asm.js style setjmp/longjmp, wasm needs to export realloc as well, in addition to malloc and free handled in #4469. saveSetjmp() uses realloc within it, and realloc is not implemented in JS glue code. --- src/wasm-linker.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/wasm-linker.cpp b/src/wasm-linker.cpp index 2c9a4cd4d..b1160e94a 100644 --- a/src/wasm-linker.cpp +++ b/src/wasm-linker.cpp @@ -213,18 +213,21 @@ void Linker::layout() { } } - // Export malloc and free whenever availble. JavsScript version of malloc has - // some issues and it cannot be called once _sbrk() is called. - // TODO This should get the list of exported functions from emcc.py - it has - // EXPORTED_FUNCTION metadata to keep track of this. Get the list of exported - // functions using a command-line argument from emcc.py and export all of - // them. + // Export malloc, realloc, and free whenever availble. JavsScript version of + // malloc has some issues and it cannot be called once _sbrk() is called, and + // JS glue code does not have realloc(). TODO This should get the list of + // exported functions from emcc.py - it has EXPORTED_FUNCTION metadata to keep + // track of this. Get the list of exported functions using a command-line + // argument from emcc.py and export all of them. if (out.symbolInfo.implementedFunctions.count("malloc")) { exportFunction("malloc", true); } if (out.symbolInfo.implementedFunctions.count("free")) { exportFunction("free", true); } + if (out.symbolInfo.implementedFunctions.count("realloc")) { + exportFunction("realloc", true); + } // finalize function table if (out.wasm.table.segments.size() > 0) { -- cgit v1.2.3