Home | History | Annotate | Download | only in compiler

Lines Matching refs:block

28 // A basic block contains an ordered list of nodes and ends with a control
29 // node. Note that if a basic block has phis, then all phis must appear as the
30 // first nodes in the block.
34 // Possible control nodes that can end a block.
37 kGoto, // Goto a single successor block.
80 // Nodes in the basic block.
145 bool LoopContains(BasicBlock* block) const;
152 int32_t loop_number_; // loop number of the block.
153 int32_t rpo_number_; // special RPO number of the block.
154 bool deferred_; // true if the block contains deferred code.
156 BasicBlock* dominator_; // Immediate dominator of the block.
157 BasicBlock* rpo_next_; // Link to next block in special RPO order.
158 BasicBlock* loop_header_; // Pointer to dominating loop header basic block,
161 BasicBlock* loop_end_; // end of the loop, if this block is a loop header.
164 Control control_; // Control at the end of the block.
166 NodeVector nodes_; // nodes of this block in forward order.
187 // Return the block which contains {node}, if any.
188 BasicBlock* block(Node* node) const;
196 // Check if nodes {a} and {b} are in the same block.
199 // BasicBlock building: create a new block.
202 // BasicBlock building: records that a node will later be added to a block but
203 // doesn't actually add the node to the block.
204 void PlanNode(BasicBlock* block, Node* node);
206 // BasicBlock building: add a node to the end of the block.
207 void AddNode(BasicBlock* block, Node* node);
209 // BasicBlock building: add a goto to the end of {block}.
210 void AddGoto(BasicBlock* block, BasicBlock* succ);
212 // BasicBlock building: add a call at the end of {block}.
213 void AddCall(BasicBlock* block, Node* call, BasicBlock* success_block,
216 // BasicBlock building: add a branch at the end of {block}.
217 void AddBranch(BasicBlock* block, Node* branch, BasicBlock* tblock,
220 // BasicBlock building: add a switch at the end of {block}.
221 void AddSwitch(BasicBlock* block, Node* sw, BasicBlock** succ_blocks,
224 // BasicBlock building: add a deoptimize at the end of {block}.
225 void AddDeoptimize(BasicBlock* block, Node* input);
227 // BasicBlock building: add a tailcall at the end of {block}.
228 void AddTailCall(BasicBlock* block, Node* input);
230 // BasicBlock building: add a return at the end of {block}.
231 void AddReturn(BasicBlock* block, Node* input);
233 // BasicBlock building: add a throw at the end of {block}.
234 void AddThrow(BasicBlock* block, Node* input);
236 // BasicBlock mutation: insert a branch into the end of {block}.
237 void InsertBranch(BasicBlock* block, BasicBlock* end, Node* branch,
240 // BasicBlock mutation: insert a switch into the end of {block}.
241 void InsertSwitch(BasicBlock* block, BasicBlock* end, Node* sw,
245 void AddSuccessorForTesting(BasicBlock* block, BasicBlock* succ) {
246 return AddSuccessor(block, succ);
266 void EnsureSplitEdgeForm(BasicBlock* block);
267 // Ensure entry into a deferred block happens from a single hot block.
268 void EnsureDeferredCodeSingleEntryPoint(BasicBlock* block);
269 // Copy deferred block markers down as far as possible
272 void AddSuccessor(BasicBlock* block, BasicBlock* succ);
275 void SetControlInput(BasicBlock* block, Node* node);
276 void SetBlockForNode(BasicBlock* block, Node* node);
280 BasicBlockVector nodeid_to_block_; // Map from node to containing block.
281 BasicBlockVector rpo_order_; // Reverse-post-order block list.