diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/s2wasm-main.cpp | 6 | ||||
-rw-r--r-- | src/s2wasm.h | 7 |
2 files changed, 10 insertions, 3 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); } } |