diff options
author | Alon Zakai <alonzakai@gmail.com> | 2015-11-20 09:58:10 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2015-11-20 09:58:10 -0800 |
commit | b974e9351405880fe1d021e3ae7fda92f1b3bb4f (patch) | |
tree | e5f2b9fb512a3adf649516f54adc60bb9584272c /src/wasm-interpreter.h | |
parent | 39891e0c123103ceef18150c9d1145924dced2bf (diff) | |
download | binaryen-b974e9351405880fe1d021e3ae7fda92f1b3bb4f.tar.gz binaryen-b974e9351405880fe1d021e3ae7fda92f1b3bb4f.tar.bz2 binaryen-b974e9351405880fe1d021e3ae7fda92f1b3bb4f.zip |
br_if
Diffstat (limited to 'src/wasm-interpreter.h')
-rw-r--r-- | src/wasm-interpreter.h | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/wasm-interpreter.h b/src/wasm-interpreter.h index 3f69d36e5..e20d3a358 100644 --- a/src/wasm-interpreter.h +++ b/src/wasm-interpreter.h @@ -211,14 +211,19 @@ private: } Flow visitBreak(Break *curr) override { NOTE_ENTER("Break"); + bool condition = true; + if (curr->condition) { + Flow flow = visit(curr->condition); + if (flow.breaking()) return flow; + condition = flow.value.getInteger(); + } + Flow flow(curr->name); if (curr->value) { - Flow flow = visit(curr->value); - if (!flow.breaking()) { - flow.breakTo = curr->name; - } - return flow; + flow = visit(curr->value); + if (flow.breaking()) return flow; + flow.breakTo = curr->name; } - return Flow(curr->name); + return condition ? flow : Flow(); } Flow visitSwitch(Switch *curr) override { NOTE_ENTER("Switch"); |