diff options
author | Alon Zakai <alonzakai@gmail.com> | 2015-12-14 19:29:25 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2015-12-14 19:29:25 -0800 |
commit | bd3a35d28606220000b160cbd4494242542d0502 (patch) | |
tree | 99c8009a9bebfa4c47c877dc0d2a8330286e88ee | |
parent | 119896a6688ff3ae78bdd0b0cc47328c3383ac2a (diff) | |
download | binaryen-bd3a35d28606220000b160cbd4494242542d0502.tar.gz binaryen-bd3a35d28606220000b160cbd4494242542d0502.tar.bz2 binaryen-bd3a35d28606220000b160cbd4494242542d0502.zip |
patch emscripten_asm_const calls with the sig
-rw-r--r-- | src/s2wasm-main.cpp | 6 | ||||
-rw-r--r-- | src/s2wasm.h | 7 | ||||
-rw-r--r-- | test/dot_s/asm_const.wast | 2 |
3 files changed, 11 insertions, 4 deletions
diff --git a/src/s2wasm-main.cpp b/src/s2wasm-main.cpp index 694dc4a08..0df9b204a 100644 --- a/src/s2wasm-main.cpp +++ b/src/s2wasm-main.cpp @@ -35,9 +35,13 @@ int main(int argc, char **argv) { AllocatingModule wasm; S2WasmBuilder s2wasm(wasm, input); + if (debug) std::cerr << "emscripten gluing...\n"; + std::stringstream meta; + s2wasm.emscriptenGlue(meta); + if (debug) std::cerr << "printing...\n"; std::cout << wasm; - s2wasm.printMeta(std::cout); + std::cout << meta.str(); if (debug) std::cerr << "done.\n"; } diff --git a/src/s2wasm.h b/src/s2wasm.h index 6d821dc83..f7597b460 100644 --- a/src/s2wasm.h +++ b/src/s2wasm.h @@ -864,8 +864,8 @@ private: public: - // emit metadata for emscripten integration - void printMeta(std::ostream& o) { + // extra emscripten processing + void emscriptenGlue(std::ostream& o) { o << "; METADATA: { "; // find asmConst calls, and emit their metadata struct AsmConstWalker : public WasmWalker { @@ -888,6 +888,9 @@ public: } std::string sig = getSig(curr); sigsForCode[code].insert(sig); + std::string fixedTarget = EMSCRIPTEN_ASM_CONST.str; + fixedTarget += '_' + sig; + curr->target = cashew::IString(fixedTarget.c_str(), false); } } diff --git a/test/dot_s/asm_const.wast b/test/dot_s/asm_const.wast index 620606a58..55665533c 100644 --- a/test/dot_s/asm_const.wast +++ b/test/dot_s/asm_const.wast @@ -5,7 +5,7 @@ (func $main (result i32) (block $fake_return_waka123 (block - (call_import $emscripten_asm_const + (call_import $emscripten_asm_const_vi (i32.const 16) ) (br $fake_return_waka123 |