diff options
Diffstat (limited to 'src/wasm/wasm-emscripten.cpp')
-rw-r--r-- | src/wasm/wasm-emscripten.cpp | 57 |
1 files changed, 0 insertions, 57 deletions
diff --git a/src/wasm/wasm-emscripten.cpp b/src/wasm/wasm-emscripten.cpp index 2fcabb3b2..8e0c15aeb 100644 --- a/src/wasm/wasm-emscripten.cpp +++ b/src/wasm/wasm-emscripten.cpp @@ -37,8 +37,6 @@ namespace wasm { cashew::IString EM_ASM_PREFIX("emscripten_asm_const"); cashew::IString EM_JS_PREFIX("__em_js__"); -static Name STACK_SAVE("stackSave"); -static Name STACK_RESTORE("stackRestore"); static Name STACK_INIT("stack$init"); static Name STACK_LIMIT("__stack_limit"); static Name SET_STACK_LIMIT("__set_stack_limit"); @@ -361,47 +359,6 @@ void EmscriptenGlueGenerator::generateDynCallThunks() { } } -struct RemoveStackPointer : public PostWalker<RemoveStackPointer> { - RemoveStackPointer(Global* stackPointer) : stackPointer(stackPointer) {} - - void visitGlobalGet(GlobalGet* curr) { - if (getModule()->getGlobalOrNull(curr->name) == stackPointer) { - needStackSave = true; - if (!builder) { - builder = make_unique<Builder>(*getModule()); - } - replaceCurrent(builder->makeCall(STACK_SAVE, {}, Type::i32)); - } - } - - void visitGlobalSet(GlobalSet* curr) { - if (getModule()->getGlobalOrNull(curr->name) == stackPointer) { - needStackRestore = true; - if (!builder) { - builder = make_unique<Builder>(*getModule()); - } - replaceCurrent( - builder->makeCall(STACK_RESTORE, {curr->value}, Type::none)); - } - } - - void visitModule(Module* curr) { - if (needStackSave) { - ensureFunctionImport(curr, STACK_SAVE, Signature(Type::none, Type::i32)); - } - if (needStackRestore) { - ensureFunctionImport( - curr, STACK_RESTORE, Signature(Type::i32, Type::none)); - } - } - -private: - std::unique_ptr<Builder> builder; - Global* stackPointer; - bool needStackSave = false; - bool needStackRestore = false; -}; - // lld can sometimes produce a build with an imported mutable __stack_pointer // (i.e. when linking with -fpie). This method internalizes the // __stack_pointer and initializes it from an immutable global instead. @@ -428,20 +385,6 @@ void EmscriptenGlueGenerator::internalizeStackPointerGlobal() { wasm.addGlobal(sp); } -void EmscriptenGlueGenerator::replaceStackPointerGlobal() { - Global* stackPointer = getStackPointerGlobal(wasm); - if (!stackPointer) { - return; - } - - // Replace all uses of stack pointer global - RemoveStackPointer(stackPointer).walkModule(&wasm); - - // Finally remove the stack pointer global itself. This avoids importing - // a mutable global. - wasm.removeGlobal(stackPointer->name); -} - struct StackLimitEnforcer : public WalkerPass<PostWalker<StackLimitEnforcer>> { StackLimitEnforcer(Global* stackPointer, Global* stackLimit, |