• Home
  • Raw
  • Download

Lines Matching refs:block

36 bool BasicBlock::LoopContains(BasicBlock* block) const {  in LoopContains()
39 DCHECK_LE(0, block->rpo_number_); in LoopContains()
41 return block->rpo_number_ >= rpo_number_ && in LoopContains()
42 block->rpo_number_ < loop_end_->rpo_number_; in LoopContains()
101 std::ostream& operator<<(std::ostream& os, const BasicBlock& block) { in operator <<() argument
102 os << "B" << block.id(); in operator <<()
104 AssemblerDebugInfo info = block.debug_info(); in operator <<()
109 const BasicBlock* current_block = &block; in operator <<()
161 BasicBlock* Schedule::block(Node* node) const { in block() function in v8::internal::compiler::Schedule
182 BasicBlock* block = this->block(a); in SameBasicBlock() local
183 return block != nullptr && block == this->block(b); in SameBasicBlock()
188 BasicBlock* block = new (zone_) in NewBasicBlock() local
190 all_blocks_.push_back(block); in NewBasicBlock()
191 return block; in NewBasicBlock()
195 void Schedule::PlanNode(BasicBlock* block, Node* node) { in PlanNode() argument
199 << block->id() << "\n"; in PlanNode()
201 DCHECK_NULL(this->block(node)); in PlanNode()
202 SetBlockForNode(block, node); in PlanNode()
206 void Schedule::AddNode(BasicBlock* block, Node* node) { in AddNode() argument
209 << " to B" << block->id() << "\n"; in AddNode()
211 DCHECK(this->block(node) == nullptr || this->block(node) == block); in AddNode()
212 block->AddNode(node); in AddNode()
213 SetBlockForNode(block, node); in AddNode()
217 void Schedule::AddGoto(BasicBlock* block, BasicBlock* succ) { in AddGoto() argument
218 DCHECK_EQ(BasicBlock::kNone, block->control()); in AddGoto()
219 block->set_control(BasicBlock::kGoto); in AddGoto()
220 AddSuccessor(block, succ); in AddGoto()
242 void Schedule::AddCall(BasicBlock* block, Node* call, BasicBlock* success_block, in AddCall() argument
244 DCHECK_EQ(BasicBlock::kNone, block->control()); in AddCall()
246 block->set_control(BasicBlock::kCall); in AddCall()
247 AddSuccessor(block, success_block); in AddCall()
248 AddSuccessor(block, exception_block); in AddCall()
249 SetControlInput(block, call); in AddCall()
253 void Schedule::AddBranch(BasicBlock* block, Node* branch, BasicBlock* tblock, in AddBranch() argument
255 DCHECK_EQ(BasicBlock::kNone, block->control()); in AddBranch()
257 block->set_control(BasicBlock::kBranch); in AddBranch()
258 AddSuccessor(block, tblock); in AddBranch()
259 AddSuccessor(block, fblock); in AddBranch()
260 SetControlInput(block, branch); in AddBranch()
264 void Schedule::AddSwitch(BasicBlock* block, Node* sw, BasicBlock** succ_blocks, in AddSwitch() argument
266 DCHECK_EQ(BasicBlock::kNone, block->control()); in AddSwitch()
268 block->set_control(BasicBlock::kSwitch); in AddSwitch()
270 AddSuccessor(block, succ_blocks[index]); in AddSwitch()
272 SetControlInput(block, sw); in AddSwitch()
276 void Schedule::AddTailCall(BasicBlock* block, Node* input) { in AddTailCall() argument
277 DCHECK_EQ(BasicBlock::kNone, block->control()); in AddTailCall()
278 block->set_control(BasicBlock::kTailCall); in AddTailCall()
279 SetControlInput(block, input); in AddTailCall()
280 if (block != end()) AddSuccessor(block, end()); in AddTailCall()
284 void Schedule::AddReturn(BasicBlock* block, Node* input) { in AddReturn() argument
285 DCHECK_EQ(BasicBlock::kNone, block->control()); in AddReturn()
286 block->set_control(BasicBlock::kReturn); in AddReturn()
287 SetControlInput(block, input); in AddReturn()
288 if (block != end()) AddSuccessor(block, end()); in AddReturn()
292 void Schedule::AddDeoptimize(BasicBlock* block, Node* input) { in AddDeoptimize() argument
293 DCHECK_EQ(BasicBlock::kNone, block->control()); in AddDeoptimize()
294 block->set_control(BasicBlock::kDeoptimize); in AddDeoptimize()
295 SetControlInput(block, input); in AddDeoptimize()
296 if (block != end()) AddSuccessor(block, end()); in AddDeoptimize()
300 void Schedule::AddThrow(BasicBlock* block, Node* input) { in AddThrow() argument
301 DCHECK_EQ(BasicBlock::kNone, block->control()); in AddThrow()
302 block->set_control(BasicBlock::kThrow); in AddThrow()
303 SetControlInput(block, input); in AddThrow()
304 if (block != end()) AddSuccessor(block, end()); in AddThrow()
308 void Schedule::InsertBranch(BasicBlock* block, BasicBlock* end, Node* branch, in InsertBranch() argument
310 DCHECK_NE(BasicBlock::kNone, block->control()); in InsertBranch()
312 end->set_control(block->control()); in InsertBranch()
313 block->set_control(BasicBlock::kBranch); in InsertBranch()
314 MoveSuccessors(block, end); in InsertBranch()
315 AddSuccessor(block, tblock); in InsertBranch()
316 AddSuccessor(block, fblock); in InsertBranch()
317 if (block->control_input() != nullptr) { in InsertBranch()
318 SetControlInput(end, block->control_input()); in InsertBranch()
320 SetControlInput(block, branch); in InsertBranch()
324 void Schedule::InsertSwitch(BasicBlock* block, BasicBlock* end, Node* sw, in InsertSwitch() argument
326 DCHECK_NE(BasicBlock::kNone, block->control()); in InsertSwitch()
328 end->set_control(block->control()); in InsertSwitch()
329 block->set_control(BasicBlock::kSwitch); in InsertSwitch()
330 MoveSuccessors(block, end); in InsertSwitch()
332 AddSuccessor(block, succ_blocks[index]); in InsertSwitch()
334 if (block->control_input() != nullptr) { in InsertSwitch()
335 SetControlInput(end, block->control_input()); in InsertSwitch()
337 SetControlInput(block, sw); in InsertSwitch()
346 for (auto block : all_blocks_copy) { in EnsureCFGWellFormedness() local
347 if (block->PredecessorCount() > 1) { in EnsureCFGWellFormedness()
348 if (block != end_) { in EnsureCFGWellFormedness()
349 EnsureSplitEdgeForm(block); in EnsureCFGWellFormedness()
351 if (block->deferred()) { in EnsureCFGWellFormedness()
352 EnsureDeferredCodeSingleEntryPoint(block); in EnsureCFGWellFormedness()
355 EliminateNoopPhiNodes(block); in EnsureCFGWellFormedness()
360 void Schedule::EliminateNoopPhiNodes(BasicBlock* block) { in EliminateNoopPhiNodes() argument
364 if (block->PredecessorCount() == 1) { in EliminateNoopPhiNodes()
365 for (size_t i = 0; i < block->NodeCount();) { in EliminateNoopPhiNodes()
366 Node* node = block->NodeAt(i); in EliminateNoopPhiNodes()
369 block->RemoveNode(block->begin() + i); in EliminateNoopPhiNodes()
377 void Schedule::EnsureSplitEdgeForm(BasicBlock* block) { in EnsureSplitEdgeForm() argument
378 DCHECK(block->PredecessorCount() > 1 && block != end_); in EnsureSplitEdgeForm()
379 for (auto current_pred = block->predecessors().begin(); in EnsureSplitEdgeForm()
380 current_pred != block->predecessors().end(); ++current_pred) { in EnsureSplitEdgeForm()
386 split_edge_block->successors().push_back(block); in EnsureSplitEdgeForm()
388 split_edge_block->set_deferred(block->deferred()); in EnsureSplitEdgeForm()
395 if (*successor == block) { in EnsureSplitEdgeForm()
404 void Schedule::EnsureDeferredCodeSingleEntryPoint(BasicBlock* block) { in EnsureDeferredCodeSingleEntryPoint() argument
413 DCHECK(block->deferred() && block->PredecessorCount() > 1); in EnsureDeferredCodeSingleEntryPoint()
415 for (auto current_pred = block->predecessors().begin(); in EnsureDeferredCodeSingleEntryPoint()
416 current_pred != block->predecessors().end(); ++current_pred) { in EnsureDeferredCodeSingleEntryPoint()
427 merger->successors().push_back(block); in EnsureDeferredCodeSingleEntryPoint()
428 for (auto current_pred = block->predecessors().begin(); in EnsureDeferredCodeSingleEntryPoint()
429 current_pred != block->predecessors().end(); ++current_pred) { in EnsureDeferredCodeSingleEntryPoint()
436 block->predecessors().clear(); in EnsureDeferredCodeSingleEntryPoint()
437 block->predecessors().push_back(merger); in EnsureDeferredCodeSingleEntryPoint()
438 MovePhis(block, merger); in EnsureDeferredCodeSingleEntryPoint()
462 for (auto block : all_blocks_) { in PropagateDeferredMark() local
463 if (!block->deferred()) { in PropagateDeferredMark()
464 bool deferred = block->PredecessorCount() > 0; in PropagateDeferredMark()
465 for (auto pred : block->predecessors()) { in PropagateDeferredMark()
466 if (!pred->deferred() && (pred->rpo_number() < block->rpo_number())) { in PropagateDeferredMark()
471 block->set_deferred(true); in PropagateDeferredMark()
479 void Schedule::AddSuccessor(BasicBlock* block, BasicBlock* succ) { in AddSuccessor() argument
480 block->AddSuccessor(succ); in AddSuccessor()
481 succ->AddPredecessor(block); in AddSuccessor()
496 void Schedule::SetControlInput(BasicBlock* block, Node* node) { in SetControlInput() argument
497 block->set_control_input(node); in SetControlInput()
498 SetBlockForNode(block, node); in SetControlInput()
502 void Schedule::SetBlockForNode(BasicBlock* block, Node* node) { in SetBlockForNode() argument
506 nodeid_to_block_[node->id()] = block; in SetBlockForNode()
511 for (BasicBlock* block : in operator <<()
513 if (block->rpo_number() == -1) { in operator <<()
514 os << "--- BLOCK id:" << block->id().ToInt(); in operator <<()
516 os << "--- BLOCK B" << block->rpo_number(); in operator <<()
518 if (block->deferred()) os << " (deferred)"; in operator <<()
519 if (block->PredecessorCount() != 0) os << " <- "; in operator <<()
521 for (BasicBlock const* predecessor : block->predecessors()) { in operator <<()
531 for (Node* node : *block) { in operator <<()
538 BasicBlock::Control control = block->control(); in operator <<()
541 if (block->control_input() != nullptr) { in operator <<()
542 os << *block->control_input(); in operator <<()
548 for (BasicBlock const* successor : block->successors()) { in operator <<()