diff options
Diffstat (limited to 'src/wasm-interpreter.h')
-rw-r--r-- | src/wasm-interpreter.h | 11 |
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(); |