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.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/wasm-interpreter.h b/src/wasm-interpreter.h
index 95dce9e7a..7d024fb58 100644
--- a/src/wasm-interpreter.h
+++ b/src/wasm-interpreter.h
@@ -356,6 +356,17 @@ public:
default: abort();
}
}
+ Flow visitSelect(Select *curr) override {
+ NOTE_ENTER("Select");
+ Flow condition = visit(curr->condition);
+ if (condition.breaking()) return condition;
+ NOTE_EVAL1(condition.value);
+ Flow ifTrue = visit(curr->ifTrue);
+ if (ifTrue.breaking()) return ifTrue;
+ Flow ifFalse = visit(curr->ifFalse);
+ if (ifFalse.breaking()) return ifFalse;
+ return condition.value.geti32() ? ifTrue : ifFalse; // ;-)
+ }
Flow visitHost(Host *curr) override {
NOTE_ENTER("Host");
abort();