summaryrefslogtreecommitdiff
path: root/src/wasm-interpreter.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/wasm-interpreter.h')
-rw-r--r--src/wasm-interpreter.h40
1 files changed, 20 insertions, 20 deletions
diff --git a/src/wasm-interpreter.h b/src/wasm-interpreter.h
index 5dbd09ef1..bcd8dee28 100644
--- a/src/wasm-interpreter.h
+++ b/src/wasm-interpreter.h
@@ -173,14 +173,14 @@ private:
#endif
// Execute a statement
- class ExpressionRunner : public WasmVisitor<Flow> {
+ class ExpressionRunner : public WasmVisitor<ExpressionRunner, Flow> {
ModuleInstance& instance;
FunctionScope& scope;
public:
ExpressionRunner(ModuleInstance& instance, FunctionScope& scope) : instance(instance), scope(scope) {}
- Flow visitBlock(Block *curr) override {
+ Flow visitBlock(Block *curr) {
NOTE_ENTER("Block");
Flow flow;
for (auto expression : curr->list) {
@@ -192,7 +192,7 @@ private:
}
return flow;
}
- Flow visitIf(If *curr) override {
+ Flow visitIf(If *curr) {
NOTE_ENTER("If");
Flow flow = visit(curr->condition);
if (flow.breaking()) return flow;
@@ -205,7 +205,7 @@ private:
if (curr->ifFalse) return visit(curr->ifFalse);
return Flow();
}
- Flow visitLoop(Loop *curr) override {
+ Flow visitLoop(Loop *curr) {
NOTE_ENTER("Loop");
while (1) {
Flow flow = visit(curr->body);
@@ -216,7 +216,7 @@ private:
return flow; // loop does not loop automatically, only continue achieves that
}
}
- Flow visitBreak(Break *curr) override {
+ Flow visitBreak(Break *curr) {
NOTE_ENTER("Break");
bool condition = true;
if (curr->condition) {
@@ -232,7 +232,7 @@ private:
}
return condition ? flow : Flow();
}
- Flow visitSwitch(Switch *curr) override {
+ Flow visitSwitch(Switch *curr) {
NOTE_ENTER("Switch");
Flow flow = visit(curr->value);
if (flow.breaking()) {
@@ -281,7 +281,7 @@ private:
return Flow();
}
- Flow visitCall(Call *curr) override {
+ Flow visitCall(Call *curr) {
NOTE_ENTER("Call");
NOTE_NAME(curr->target);
LiteralList arguments;
@@ -293,14 +293,14 @@ private:
#endif
return ret;
}
- Flow visitCallImport(CallImport *curr) override {
+ Flow visitCallImport(CallImport *curr) {
NOTE_ENTER("CallImport");
LiteralList arguments;
Flow flow = generateArguments(curr->operands, arguments);
if (flow.breaking()) return flow;
return instance.externalInterface->callImport(instance.wasm.importsMap[curr->target], arguments);
}
- Flow visitCallIndirect(CallIndirect *curr) override {
+ Flow visitCallIndirect(CallIndirect *curr) {
NOTE_ENTER("CallIndirect");
Flow target = visit(curr->target);
if (target.breaking()) return target;
@@ -315,14 +315,14 @@ private:
return instance.callFunction(name, arguments);
}
- Flow visitGetLocal(GetLocal *curr) override {
+ Flow visitGetLocal(GetLocal *curr) {
NOTE_ENTER("GetLocal");
IString name = curr->name;
NOTE_NAME(name);
NOTE_EVAL1(scope.locals[name]);
return scope.locals[name];
}
- Flow visitSetLocal(SetLocal *curr) override {
+ Flow visitSetLocal(SetLocal *curr) {
NOTE_ENTER("SetLocal");
IString name = curr->name;
Flow flow = visit(curr->value);
@@ -333,13 +333,13 @@ private:
scope.locals[name] = flow.value;
return flow;
}
- Flow visitLoad(Load *curr) override {
+ Flow visitLoad(Load *curr) {
NOTE_ENTER("Load");
Flow flow = visit(curr->ptr);
if (flow.breaking()) return flow;
return instance.externalInterface->load(curr, instance.getFinalAddress(curr, flow.value));
}
- Flow visitStore(Store *curr) override {
+ Flow visitStore(Store *curr) {
NOTE_ENTER("Store");
Flow ptr = visit(curr->ptr);
if (ptr.breaking()) return ptr;
@@ -348,12 +348,12 @@ private:
instance.externalInterface->store(curr, instance.getFinalAddress(curr, ptr.value), value.value);
return value;
}
- Flow visitConst(Const *curr) override {
+ Flow visitConst(Const *curr) {
NOTE_ENTER("Const");
NOTE_EVAL1(curr->value);
return Flow(curr->value); // heh
}
- Flow visitUnary(Unary *curr) override {
+ Flow visitUnary(Unary *curr) {
NOTE_ENTER("Unary");
Flow flow = visit(curr->value);
if (flow.breaking()) return flow;
@@ -434,7 +434,7 @@ private:
}
abort();
}
- Flow visitBinary(Binary *curr) override {
+ Flow visitBinary(Binary *curr) {
NOTE_ENTER("Binary");
Flow flow = visit(curr->left);
if (flow.breaking()) return flow;
@@ -612,7 +612,7 @@ private:
}
abort();
}
- Flow visitSelect(Select *curr) override {
+ Flow visitSelect(Select *curr) {
NOTE_ENTER("Select");
Flow condition = visit(curr->condition);
if (condition.breaking()) return condition;
@@ -623,7 +623,7 @@ private:
if (ifFalse.breaking()) return ifFalse;
return condition.value.geti32() ? ifTrue : ifFalse; // ;-)
}
- Flow visitHost(Host *curr) override {
+ Flow visitHost(Host *curr) {
NOTE_ENTER("Host");
switch (curr->op) {
case PageSize: return Literal((int32_t)pageSize);
@@ -649,11 +649,11 @@ private:
default: abort();
}
}
- Flow visitNop(Nop *curr) override {
+ Flow visitNop(Nop *curr) {
NOTE_ENTER("Nop");
return Flow();
}
- Flow visitUnreachable(Unreachable *curr) override {
+ Flow visitUnreachable(Unreachable *curr) {
NOTE_ENTER("Unreachable");
trap("unreachable");
return Flow();