summaryrefslogtreecommitdiff
path: root/src/wasm/wat-parser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/wasm/wat-parser.cpp')
-rw-r--r--src/wasm/wat-parser.cpp22
1 files changed, 10 insertions, 12 deletions
diff --git a/src/wasm/wat-parser.cpp b/src/wasm/wat-parser.cpp
index 89e913ab5..567502c93 100644
--- a/src/wasm/wat-parser.cpp
+++ b/src/wasm/wat-parser.cpp
@@ -1284,7 +1284,7 @@ struct ParseDefsCtx : TypeParserCtx<ParseDefsCtx> {
using LocalIdxT = Index;
using GlobalIdxT = Name;
using MemoryIdxT = Name;
- using DataIdxT = uint32_t;
+ using DataIdxT = Name;
using MemargT = Memarg;
@@ -1550,20 +1550,18 @@ struct ParseDefsCtx : TypeParserCtx<ParseDefsCtx> {
return name;
}
- Result<uint32_t> getDataFromIdx(uint32_t idx) {
+ Result<Name> getDataFromIdx(uint32_t idx) {
if (idx >= wasm.dataSegments.size()) {
return in.err("data index out of bounds");
}
- return idx;
+ return wasm.dataSegments[idx]->name;
}
- Result<uint32_t> getDataFromName(Name name) {
- for (uint32_t i = 0; i < wasm.dataSegments.size(); ++i) {
- if (wasm.dataSegments[i]->name == name) {
- return i;
- }
+ Result<Name> getDataFromName(Name name) {
+ if (!wasm.getDataSegmentOrNull(name)) {
+ return in.err("data $" + name.toString() + " does not exist");
}
- return in.err("data $" + name.toString() + " does not exist");
+ return name;
}
Result<TypeUseT> makeTypeUse(Index pos,
@@ -1984,7 +1982,7 @@ struct ParseDefsCtx : TypeParserCtx<ParseDefsCtx> {
op, memarg.offset, memarg.align, lane, *ptr, *vec, *m));
}
- Result<> makeMemoryInit(Index pos, Name* mem, uint32_t data) {
+ Result<> makeMemoryInit(Index pos, Name* mem, Name data) {
auto m = getMemory(pos, mem);
CHECK_ERR(m);
auto size = pop(pos);
@@ -1996,7 +1994,7 @@ struct ParseDefsCtx : TypeParserCtx<ParseDefsCtx> {
return push(pos, builder.makeMemoryInit(data, *dest, *offset, *size, *m));
}
- Result<> makeDataDrop(Index pos, uint32_t data) {
+ Result<> makeDataDrop(Index pos, Name data) {
return push(pos, builder.makeDataDrop(data));
}
@@ -2147,7 +2145,7 @@ struct ParseDefsCtx : TypeParserCtx<ParseDefsCtx> {
return push(pos, builder.makeArrayNew(type, *size));
}
- Result<> makeArrayNewData(Index pos, HeapType type, uint32_t data) {
+ Result<> makeArrayNewData(Index pos, HeapType type, Name data) {
if (!type.isArray()) {
return in.err(pos, "expected array type annotation");
}