summaryrefslogtreecommitdiff
path: root/src/wasm-interpreter.h
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-06-17 17:01:14 +0100
committerGitHub <noreply@github.com>2016-06-17 17:01:14 +0100
commitec931e717a07dc21f22ac543ab0fe5af78879cc8 (patch)
treeef460027757709a774815de3a24c1d3aa5c800d8 /src/wasm-interpreter.h
parent6fdd9dd2137a563bc41a85cf45178cc734e499a2 (diff)
parent40a40a9bf6dd5385dfa703e98a376222f03882aa (diff)
downloadbinaryen-ec931e717a07dc21f22ac543ab0fe5af78879cc8.tar.gz
binaryen-ec931e717a07dc21f22ac543ab0fe5af78879cc8.tar.bz2
binaryen-ec931e717a07dc21f22ac543ab0fe5af78879cc8.zip
Merge pull request #589 from WebAssembly/spec-fixes
Spec fixes
Diffstat (limited to 'src/wasm-interpreter.h')
-rw-r--r--src/wasm-interpreter.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/wasm-interpreter.h b/src/wasm-interpreter.h
index 9024031d2..66aa2e625 100644
--- a/src/wasm-interpreter.h
+++ b/src/wasm-interpreter.h
@@ -351,14 +351,14 @@ private:
NOTE_ENTER("CallIndirect");
Flow target = visit(curr->target);
if (target.breaking()) return target;
+ LiteralList arguments;
+ Flow flow = generateArguments(curr->operands, arguments);
+ if (flow.breaking()) return flow;
size_t index = target.value.geti32();
if (index >= instance.wasm.table.names.size()) trap("callIndirect: overflow");
Name name = instance.wasm.table.names[index];
Function *func = instance.wasm.getFunction(name);
if (func->type.is() && func->type != curr->fullType) trap("callIndirect: bad type");
- LiteralList arguments;
- Flow flow = generateArguments(curr->operands, arguments);
- if (flow.breaking()) return flow;
if (func->params.size() != arguments.size()) trap("callIndirect: bad # of arguments");
for (size_t i = 0; i < func->getNumLocals(); i++) {
if (func->params[i] != arguments[i].type) trap("callIndirect: bad argument type");