Lines Matching refs:block
33 bool BasicBlock::LoopContains(BasicBlock* block) const { in LoopContains()
36 DCHECK(block->rpo_number_ >= 0); in LoopContains()
38 return block->rpo_number_ >= rpo_number_ && in LoopContains()
39 block->rpo_number_ < loop_end_->rpo_number_; in LoopContains()
139 BasicBlock* Schedule::block(Node* node) const { in block() function in v8::internal::compiler::Schedule
160 BasicBlock* block = this->block(a); in SameBasicBlock() local
161 return block != nullptr && block == this->block(b); in SameBasicBlock()
166 BasicBlock* block = new (zone_) in NewBasicBlock() local
168 all_blocks_.push_back(block); in NewBasicBlock()
169 return block; in NewBasicBlock()
173 void Schedule::PlanNode(BasicBlock* block, Node* node) { in PlanNode() argument
177 << " for future add to B" << block->id() << "\n"; in PlanNode()
179 DCHECK(this->block(node) == nullptr); in PlanNode()
180 SetBlockForNode(block, node); in PlanNode()
184 void Schedule::AddNode(BasicBlock* block, Node* node) { in AddNode() argument
188 << block->id() << "\n"; in AddNode()
190 DCHECK(this->block(node) == nullptr || this->block(node) == block); in AddNode()
191 block->AddNode(node); in AddNode()
192 SetBlockForNode(block, node); in AddNode()
196 void Schedule::AddGoto(BasicBlock* block, BasicBlock* succ) { in AddGoto() argument
197 DCHECK_EQ(BasicBlock::kNone, block->control()); in AddGoto()
198 block->set_control(BasicBlock::kGoto); in AddGoto()
199 AddSuccessor(block, succ); in AddGoto()
220 void Schedule::AddCall(BasicBlock* block, Node* call, BasicBlock* success_block, in AddCall() argument
222 DCHECK_EQ(BasicBlock::kNone, block->control()); in AddCall()
224 block->set_control(BasicBlock::kCall); in AddCall()
225 AddSuccessor(block, success_block); in AddCall()
226 AddSuccessor(block, exception_block); in AddCall()
227 SetControlInput(block, call); in AddCall()
231 void Schedule::AddBranch(BasicBlock* block, Node* branch, BasicBlock* tblock, in AddBranch() argument
233 DCHECK_EQ(BasicBlock::kNone, block->control()); in AddBranch()
235 block->set_control(BasicBlock::kBranch); in AddBranch()
236 AddSuccessor(block, tblock); in AddBranch()
237 AddSuccessor(block, fblock); in AddBranch()
238 SetControlInput(block, branch); in AddBranch()
242 void Schedule::AddSwitch(BasicBlock* block, Node* sw, BasicBlock** succ_blocks, in AddSwitch() argument
244 DCHECK_EQ(BasicBlock::kNone, block->control()); in AddSwitch()
246 block->set_control(BasicBlock::kSwitch); in AddSwitch()
248 AddSuccessor(block, succ_blocks[index]); in AddSwitch()
250 SetControlInput(block, sw); in AddSwitch()
254 void Schedule::AddTailCall(BasicBlock* block, Node* input) { in AddTailCall() argument
255 DCHECK_EQ(BasicBlock::kNone, block->control()); in AddTailCall()
256 block->set_control(BasicBlock::kTailCall); in AddTailCall()
257 SetControlInput(block, input); in AddTailCall()
258 if (block != end()) AddSuccessor(block, end()); in AddTailCall()
262 void Schedule::AddReturn(BasicBlock* block, Node* input) { in AddReturn() argument
263 DCHECK_EQ(BasicBlock::kNone, block->control()); in AddReturn()
264 block->set_control(BasicBlock::kReturn); in AddReturn()
265 SetControlInput(block, input); in AddReturn()
266 if (block != end()) AddSuccessor(block, end()); in AddReturn()
270 void Schedule::AddDeoptimize(BasicBlock* block, Node* input) { in AddDeoptimize() argument
271 DCHECK_EQ(BasicBlock::kNone, block->control()); in AddDeoptimize()
272 block->set_control(BasicBlock::kDeoptimize); in AddDeoptimize()
273 SetControlInput(block, input); in AddDeoptimize()
274 if (block != end()) AddSuccessor(block, end()); in AddDeoptimize()
278 void Schedule::AddThrow(BasicBlock* block, Node* input) { in AddThrow() argument
279 DCHECK_EQ(BasicBlock::kNone, block->control()); in AddThrow()
280 block->set_control(BasicBlock::kThrow); in AddThrow()
281 SetControlInput(block, input); in AddThrow()
282 if (block != end()) AddSuccessor(block, end()); in AddThrow()
286 void Schedule::InsertBranch(BasicBlock* block, BasicBlock* end, Node* branch, in InsertBranch() argument
288 DCHECK_NE(BasicBlock::kNone, block->control()); in InsertBranch()
290 end->set_control(block->control()); in InsertBranch()
291 block->set_control(BasicBlock::kBranch); in InsertBranch()
292 MoveSuccessors(block, end); in InsertBranch()
293 AddSuccessor(block, tblock); in InsertBranch()
294 AddSuccessor(block, fblock); in InsertBranch()
295 if (block->control_input() != nullptr) { in InsertBranch()
296 SetControlInput(end, block->control_input()); in InsertBranch()
298 SetControlInput(block, branch); in InsertBranch()
302 void Schedule::InsertSwitch(BasicBlock* block, BasicBlock* end, Node* sw, in InsertSwitch() argument
304 DCHECK_NE(BasicBlock::kNone, block->control()); in InsertSwitch()
306 end->set_control(block->control()); in InsertSwitch()
307 block->set_control(BasicBlock::kSwitch); in InsertSwitch()
308 MoveSuccessors(block, end); in InsertSwitch()
310 AddSuccessor(block, succ_blocks[index]); in InsertSwitch()
312 if (block->control_input() != nullptr) { in InsertSwitch()
313 SetControlInput(end, block->control_input()); in InsertSwitch()
315 SetControlInput(block, sw); in InsertSwitch()
324 for (auto block : all_blocks_copy) { in EnsureCFGWellFormedness() local
325 if (block->PredecessorCount() > 1) { in EnsureCFGWellFormedness()
326 if (block != end_) { in EnsureCFGWellFormedness()
327 EnsureSplitEdgeForm(block); in EnsureCFGWellFormedness()
329 if (block->deferred()) { in EnsureCFGWellFormedness()
330 EnsureDeferredCodeSingleEntryPoint(block); in EnsureCFGWellFormedness()
336 void Schedule::EnsureSplitEdgeForm(BasicBlock* block) { in EnsureSplitEdgeForm() argument
337 DCHECK(block->PredecessorCount() > 1 && block != end_); in EnsureSplitEdgeForm()
338 for (auto current_pred = block->predecessors().begin(); in EnsureSplitEdgeForm()
339 current_pred != block->predecessors().end(); ++current_pred) { in EnsureSplitEdgeForm()
345 split_edge_block->successors().push_back(block); in EnsureSplitEdgeForm()
347 split_edge_block->set_deferred(block->deferred()); in EnsureSplitEdgeForm()
354 if (*successor == block) { in EnsureSplitEdgeForm()
363 void Schedule::EnsureDeferredCodeSingleEntryPoint(BasicBlock* block) { in EnsureDeferredCodeSingleEntryPoint() argument
372 DCHECK(block->deferred() && block->PredecessorCount() > 1); in EnsureDeferredCodeSingleEntryPoint()
374 for (auto current_pred = block->predecessors().begin(); in EnsureDeferredCodeSingleEntryPoint()
375 current_pred != block->predecessors().end(); ++current_pred) { in EnsureDeferredCodeSingleEntryPoint()
386 merger->successors().push_back(block); in EnsureDeferredCodeSingleEntryPoint()
387 for (auto current_pred = block->predecessors().begin(); in EnsureDeferredCodeSingleEntryPoint()
388 current_pred != block->predecessors().end(); ++current_pred) { in EnsureDeferredCodeSingleEntryPoint()
395 block->predecessors().clear(); in EnsureDeferredCodeSingleEntryPoint()
396 block->predecessors().push_back(merger); in EnsureDeferredCodeSingleEntryPoint()
406 for (auto block : all_blocks_) { in PropagateDeferredMark() local
407 if (!block->deferred()) { in PropagateDeferredMark()
408 bool deferred = block->PredecessorCount() > 0; in PropagateDeferredMark()
409 for (auto pred : block->predecessors()) { in PropagateDeferredMark()
410 if (!pred->deferred() && (pred->rpo_number() < block->rpo_number())) { in PropagateDeferredMark()
415 block->set_deferred(true); in PropagateDeferredMark()
423 void Schedule::AddSuccessor(BasicBlock* block, BasicBlock* succ) { in AddSuccessor() argument
424 block->AddSuccessor(succ); in AddSuccessor()
425 succ->AddPredecessor(block); in AddSuccessor()
440 void Schedule::SetControlInput(BasicBlock* block, Node* node) { in SetControlInput() argument
441 block->set_control_input(node); in SetControlInput()
442 SetBlockForNode(block, node); in SetControlInput()
446 void Schedule::SetBlockForNode(BasicBlock* block, Node* node) { in SetBlockForNode() argument
450 nodeid_to_block_[node->id()] = block; in SetBlockForNode()
455 for (BasicBlock* block : in operator <<()
457 if (block->rpo_number() == -1) { in operator <<()
458 os << "--- BLOCK id:" << block->id().ToInt(); in operator <<()
460 os << "--- BLOCK B" << block->rpo_number(); in operator <<()
462 if (block->deferred()) os << " (deferred)"; in operator <<()
463 if (block->PredecessorCount() != 0) os << " <- "; in operator <<()
465 for (BasicBlock const* predecessor : block->predecessors()) { in operator <<()
475 for (Node* node : *block) { in operator <<()
484 BasicBlock::Control control = block->control(); in operator <<()
487 if (block->control_input() != nullptr) { in operator <<()
488 os << *block->control_input(); in operator <<()
494 for (BasicBlock const* successor : block->successors()) { in operator <<()