summaryrefslogtreecommitdiff
path: root/src/wasm/wasm-binary.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/wasm/wasm-binary.cpp')
-rw-r--r--src/wasm/wasm-binary.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/wasm/wasm-binary.cpp b/src/wasm/wasm-binary.cpp
index 8ebddc8e8..9376c88ad 100644
--- a/src/wasm/wasm-binary.cpp
+++ b/src/wasm/wasm-binary.cpp
@@ -1450,6 +1450,11 @@ void WasmBinaryBuilder::readImports() {
size_t num = getU32LEB();
BYN_TRACE("num: " << num << std::endl);
Builder builder(wasm);
+ size_t tableCounter = 0;
+ size_t memoryCounter = 0;
+ size_t functionCounter = 0;
+ size_t globalCounter = 0;
+ size_t eventCounter = 0;
for (size_t i = 0; i < num; i++) {
BYN_TRACE("read one\n");
auto module = getInlineString();
@@ -1460,7 +1465,7 @@ void WasmBinaryBuilder::readImports() {
// could occur later due to the names section.
switch (kind) {
case ExternalKind::Function: {
- auto name = Name(std::string("fimport$") + std::to_string(i));
+ Name name(std::string("fimport$") + std::to_string(functionCounter++));
auto index = getU32LEB();
if (index >= signatures.size()) {
throwError("invalid function index " + std::to_string(index) + " / " +
@@ -1474,9 +1479,10 @@ void WasmBinaryBuilder::readImports() {
break;
}
case ExternalKind::Table: {
+ Name name(std::string("timport$") + std::to_string(tableCounter++));
wasm.table.module = module;
wasm.table.base = base;
- wasm.table.name = Name(std::string("timport$") + std::to_string(i));
+ wasm.table.name = name;
auto elementType = getS32LEB();
WASM_UNUSED(elementType);
if (elementType != BinaryConsts::EncodedType::funcref) {
@@ -1499,9 +1505,10 @@ void WasmBinaryBuilder::readImports() {
break;
}
case ExternalKind::Memory: {
+ Name name(std::string("mimport$") + std::to_string(memoryCounter++));
wasm.memory.module = module;
wasm.memory.base = base;
- wasm.memory.name = Name(std::string("mimport$") + std::to_string(i));
+ wasm.memory.name = name;
wasm.memory.exists = true;
getResizableLimits(wasm.memory.initial,
wasm.memory.max,
@@ -1511,7 +1518,7 @@ void WasmBinaryBuilder::readImports() {
break;
}
case ExternalKind::Global: {
- auto name = Name(std::string("gimport$") + std::to_string(i));
+ Name name(std::string("gimport$") + std::to_string(globalCounter++));
auto type = getConcreteType();
auto mutable_ = getU32LEB();
auto* curr =
@@ -1526,7 +1533,7 @@ void WasmBinaryBuilder::readImports() {
break;
}
case ExternalKind::Event: {
- auto name = Name(std::string("eimport$") + std::to_string(i));
+ Name name(std::string("eimport$") + std::to_string(eventCounter++));
auto attribute = getU32LEB();
auto index = getU32LEB();
if (index >= signatures.size()) {