Chromium Code Reviews| 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); |
| + } |
|
Jarin
2016/04/26 12:59:51
Any reason why you cannot bind in BytecodeGenerato
neis
2016/04/26 14:59:10
I can, but see the previous discussion. I leave i
|
| } |