summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-02-01 10:39:27 -0800
committerAlon Zakai <alonzakai@gmail.com>2016-02-01 10:48:06 -0800
commit27bdda2e01d83a5b4023a729ed2a427f1ee9fe41 (patch)
treeeb1524591ec46122553cfc1b4aabd67339059032 /src
parentd7e7328addef046ef103837e24e6df40645f4040 (diff)
downloadbinaryen-27bdda2e01d83a5b4023a729ed2a427f1ee9fe41.tar.gz
binaryen-27bdda2e01d83a5b4023a729ed2a427f1ee9fe41.tar.bz2
binaryen-27bdda2e01d83a5b4023a729ed2a427f1ee9fe41.zip
fix call_indirect s2wasm parsing order #162
Diffstat (limited to 'src')
-rw-r--r--src/s2wasm.h14
1 files changed, 5 insertions, 9 deletions
diff --git a/src/s2wasm.h b/src/s2wasm.h
index f1cc89586..8b6aabeb7 100644
--- a/src/s2wasm.h
+++ b/src/s2wasm.h
@@ -671,16 +671,12 @@ class S2WasmBuilder {
// indirect call
auto indirect = allocator.alloc<CallIndirect>();
Name assign = getAssign();
- indirect->target = getInput();
+ int num = getNumInputs();
+ auto inputs = getInputs(num);
+ indirect->target = inputs[0];
indirect->type = type;
- skipWhitespace();
- if (*s == ',') {
- skipComma();
- int num = getNumInputs();
- auto inputs = getInputs(num);
- for (int i = 0; i < num; i++) {
- indirect->operands.push_back(inputs[i]);
- }
+ for (int i = 1; i < num; i++) {
+ indirect->operands.push_back(inputs[i]);
}
setOutput(indirect, assign);
auto typeName = cashew::IString((std::string("FUNCSIG_") + getSig(indirect)).c_str(), false);