Home | History | Annotate | Download | only in compiler

Lines Matching refs:BasicBlock

24 class BasicBlock;
41 BasicBlock* dominator_; // Immediate dominator of the block.
42 BasicBlock* loop_header_; // Pointer to dominating loop header basic block,
95 class BasicBlock FINAL : public GenericNode<BasicBlockData, BasicBlock> {
97 BasicBlock(GenericGraphBase* graph, int input_count)
98 : GenericNode<BasicBlockData, BasicBlock>(graph, input_count) {}
107 BasicBlock* PredecessorAt(int index) { return InputAt(index); }
110 BasicBlock* SuccessorAt(int index) { return UseAt(index); }
112 int PredecessorIndexOf(BasicBlock* predecessor) {
113 BasicBlock::Predecessors predecessors = this->predecessors();
114 for (BasicBlock::Predecessors::iterator i = predecessors.begin();
121 inline BasicBlock* loop_header() {
122 return static_cast<BasicBlock*>(loop_header_);
124 inline BasicBlock* ContainingLoop() {
126 return static_cast<BasicBlock*>(loop_header_);
142 DISALLOW_COPY_AND_ASSIGN(BasicBlock);
145 typedef GenericGraphVisit::NullNodeVisitor<BasicBlockData, BasicBlock>
148 typedef ZoneVector<BasicBlock*> BasicBlockVector;
156 class Schedule : public GenericGraph<BasicBlock> {
159 : GenericGraph<BasicBlock>(zone),
169 BasicBlock* block(Node* node) const {
182 BasicBlock* GetBlockById(int block_id) { return all_blocks_[block_id]; }
194 BasicBlock* block = this->block(a);
198 // BasicBlock building: create a new block.
199 inline BasicBlock* NewBasicBlock() {
200 BasicBlock* block =
201 BasicBlock::New(this, 0, static_cast<BasicBlock**>(NULL));
206 // BasicBlock building: records that a node will later be added to a block but
208 inline void PlanNode(BasicBlock* block, Node* node) {
217 // BasicBlock building: add a node to the end of the block.
218 inline void AddNode(BasicBlock* block, Node* node) {
228 // BasicBlock building: add a goto to the end of {block}.
229 void AddGoto(BasicBlock* block, BasicBlock* succ) {
230 DCHECK(block->control_ == BasicBlock::kNone);
231 block->control_ = BasicBlock::kGoto;
235 // BasicBlock building: add a branch at the end of {block}.
236 void AddBranch(BasicBlock* block, Node* branch, BasicBlock* tblock,
237 BasicBlock* fblock) {
238 DCHECK(block->control_ == BasicBlock::kNone);
240 block->control_ = BasicBlock::kBranch;
250 // BasicBlock building: add a return at the end of {block}.
251 void AddReturn(BasicBlock* block, Node* input) {
252 DCHECK(block->control_ == BasicBlock::kNone);
253 block->control_ = BasicBlock::kReturn;
262 // BasicBlock building: add a throw at the end of {block}.
263 void AddThrow(BasicBlock* block, Node* input) {
264 DCHECK(block->control_ == BasicBlock::kNone);
265 block->control_ = BasicBlock::kThrow;
273 void AddSuccessor(BasicBlock* block, BasicBlock* succ) {
282 void SetControlInput(BasicBlock* block, Node* node) {
287 void SetBlockForNode(BasicBlock* block, Node* node) {