diff options
Diffstat (limited to 'src/s2wasm.h')
-rw-r--r-- | src/s2wasm.h | 26 |
1 files changed, 6 insertions, 20 deletions
diff --git a/src/s2wasm.h b/src/s2wasm.h index f70246d4f..94684facf 100644 --- a/src/s2wasm.h +++ b/src/s2wasm.h @@ -696,19 +696,15 @@ class S2WasmBuilder { } else { // non-indirect call - CallBase* curr; Name assign = getAssign(); Name target = linkerObj.resolveAlias(cleanFunction(getCommaSeparated())); - if (linkerObj.isFunctionImplemented(target)) { - auto specific = allocator.alloc<Call>(); - specific->target = target; - curr = specific; - } else { - auto specific = allocator.alloc<CallImport>(); - specific->target = target; - curr = specific; - } + + Call* curr = allocator.alloc<Call>(); + curr->target = target; curr->type = type; + if (!linkerObj.isFunctionImplemented(target)) { + linkerObj.addUndefinedFunctionCall(curr); + } skipWhitespace(); if (*s == ',') { skipComma(); @@ -719,16 +715,6 @@ class S2WasmBuilder { } } setOutput(curr, assign); - if (curr->is<CallImport>()) { - auto target = curr->cast<CallImport>()->target; - if (!wasm.checkImport(target)) { - auto import = allocator.alloc<Import>(); - import->name = import->base = target; - import->module = ENV; - import->type = ensureFunctionType(getSig(curr), &wasm, allocator); - wasm.addImport(import); - } - } } }; auto handleTyped = [&](WasmType type) { |