summaryrefslogtreecommitdiff
path: root/src/wasm-s-parser.h
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-08-02 20:53:48 -0700
committerAlon Zakai <alonzakai@gmail.com>2016-09-07 09:54:52 -0700
commit72616971b2a35cbc37ea974e47c870556ef8ef4d (patch)
treee9c3daeed8231fb9a4466b21cf9e05d682d11709 /src/wasm-s-parser.h
parent1cc33903a0b1b9dddd40674d792a59ee0d1bccf7 (diff)
downloadbinaryen-72616971b2a35cbc37ea974e47c870556ef8ef4d.tar.gz
binaryen-72616971b2a35cbc37ea974e47c870556ef8ef4d.tar.bz2
binaryen-72616971b2a35cbc37ea974e47c870556ef8ef4d.zip
call_indirect now has the target at the end
Diffstat (limited to 'src/wasm-s-parser.h')
-rw-r--r--src/wasm-s-parser.h14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/wasm-s-parser.h b/src/wasm-s-parser.h
index 685f26d82..49fd52ef0 100644
--- a/src/wasm-s-parser.h
+++ b/src/wasm-s-parser.h
@@ -895,7 +895,7 @@ private:
if (op == HostOp::HasFeature) {
ret->nameOperand = s[1]->str();
} else {
- parseCallOperands(s, 1, ret);
+ parseCallOperands(s, 1, s.size(), ret);
}
ret->finalize();
return ret;
@@ -1196,7 +1196,7 @@ private:
auto ret = allocator.alloc<Call>();
ret->target = s[1]->str();
ret->type = functionTypes[ret->target];
- parseCallOperands(s, 2, ret);
+ parseCallOperands(s, 2, s.size(), ret);
return ret;
}
@@ -1205,7 +1205,7 @@ private:
ret->target = s[1]->str();
Import* import = wasm.getImport(ret->target);
ret->type = import->type->result;
- parseCallOperands(s, 2, ret);
+ parseCallOperands(s, 2, s.size(), ret);
return ret;
}
@@ -1216,14 +1216,14 @@ private:
if (!fullType) throw ParseException("invalid call_indirect type", s.line, s.col);
ret->fullType = fullType->name;
ret->type = fullType->result;
- ret->target = parseExpression(s[2]);
- parseCallOperands(s, 3, ret);
+ parseCallOperands(s, 2, s.size() - 1, ret);
+ ret->target = parseExpression(s[s.size() - 1]);
return ret;
}
template<class T>
- void parseCallOperands(Element& s, size_t i, T* call) {
- while (i < s.size()) {
+ void parseCallOperands(Element& s, Index i, Index j, T* call) {
+ while (i < j) {
call->operands.push_back(parseExpression(s[i]));
i++;
}