| 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);
|
| + }
|
| }
|
|
|
|
|
|
|