diff options
author | Alon Zakai <alonzakai@gmail.com> | 2015-11-03 18:49:22 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2015-11-03 18:49:22 -0800 |
commit | 6e4bf311175ad8c8b4e2874ee1bfa0a997343c28 (patch) | |
tree | d0b28bf46519999c3efaed9d705321da7ebf1dbf /src/wasm-interpreter.h | |
parent | 0756845309f2cf3e5cd817dd3d25e727c96499ce (diff) | |
download | binaryen-6e4bf311175ad8c8b4e2874ee1bfa0a997343c28.tar.gz binaryen-6e4bf311175ad8c8b4e2874ee1bfa0a997343c28.tar.bz2 binaryen-6e4bf311175ad8c8b4e2874ee1bfa0a997343c28.zip |
implement new select operator
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(); |