summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/tools/wasm-emscripten-finalize.cpp2
-rw-r--r--src/wasm/wasm-emscripten.cpp7
2 files changed, 5 insertions, 4 deletions
diff --git a/src/tools/wasm-emscripten-finalize.cpp b/src/tools/wasm-emscripten-finalize.cpp
index f5afb3e24..ea69cabbc 100644
--- a/src/tools/wasm-emscripten-finalize.cpp
+++ b/src/tools/wasm-emscripten-finalize.cpp
@@ -229,7 +229,7 @@ int main(int argc, const char* argv[]) {
initializerFunctions.push_back(F->name);
}
if (auto* e = wasm.getExportOrNull(WASM_CALL_CTORS)) {
- initializerFunctions.push_back(e->value);
+ initializerFunctions.push_back(e->name);
}
}
diff --git a/src/wasm/wasm-emscripten.cpp b/src/wasm/wasm-emscripten.cpp
index c21016baa..caea83302 100644
--- a/src/wasm/wasm-emscripten.cpp
+++ b/src/wasm/wasm-emscripten.cpp
@@ -848,18 +848,19 @@ struct EmJsWalker : public PostWalker<EmJsWalker> {
EmJsWalker(Module& _wasm)
: wasm(_wasm), segmentOffsets(getSegmentOffsets(wasm)) {}
- void visitFunction(Function* curr) {
- if (curr->imported()) {
+ void visitExport(Export* curr) {
+ if (curr->kind != ExternalKind::Function) {
return;
}
if (!curr->name.startsWith(EM_JS_PREFIX.str)) {
return;
}
+ auto* func = wasm.getFunction(curr->value);
auto funcName = std::string(curr->name.stripPrefix(EM_JS_PREFIX.str));
// An EM_JS has a single const in the body. Typically it is just returned,
// but in unoptimized code it might be stored to a local and loaded from
// there, and in relocatable code it might get added to __memory_base etc.
- FindAll<Const> consts(curr->body);
+ FindAll<Const> consts(func->body);
if (consts.list.size() != 1) {
Fatal() << "Unexpected generated __em_js__ function body: " << curr->name;
}