Index: src/interpreter/control-flow-builders.cc |
diff --git a/src/interpreter/control-flow-builders.cc b/src/interpreter/control-flow-builders.cc |
index 6510aa443aaa2a605989865596cc8227406d3a48..fd581993e157aab08dbd36cbd931203588649cf2 100644 |
--- a/src/interpreter/control-flow-builders.cc |
+++ b/src/interpreter/control-flow-builders.cc |
@@ -90,13 +90,16 @@ void BlockBuilder::EndBlock() { |
LoopBuilder::~LoopBuilder() { DCHECK(continue_sites_.empty()); } |
-void LoopBuilder::LoopHeader() { |
+void LoopBuilder::LoopHeader(ZoneVector<BytecodeLabel>* additional_labels) { |
// Jumps from before the loop header into the loop violate ordering |
// requirements of bytecode basic blocks. The only entry into a loop |
// must be the loop header. Surely breaks is okay? Not if nested |
// and misplaced between the headers. |
DCHECK(break_sites_.empty() && continue_sites_.empty()); |
builder()->Bind(&loop_header_); |
+ for (auto& label : *additional_labels) { |
+ builder()->Bind(loop_header_, &label); |
+ } |
} |