diff options
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"); |