Lines Matching refs:HBasicBlock

56 class HBasicBlock;  variable
169 void SetBlockOfInstructions(HBasicBlock* block) const;
182 friend class HBasicBlock; variable
428 const ArenaVector<HBasicBlock*>& GetBlocks() const { return blocks_; } in GetBlocks()
433 HBasicBlock* GetEntryBlock() const { return entry_block_; } in GetEntryBlock()
434 HBasicBlock* GetExitBlock() const { return exit_block_; } in GetExitBlock()
437 void SetEntryBlock(HBasicBlock* block) { entry_block_ = block; } in SetEntryBlock()
438 void SetExitBlock(HBasicBlock* block) { exit_block_ = block; } in SetExitBlock()
440 void AddBlock(HBasicBlock* block);
468 void UpdateLoopAndTryInformationOfNewBlock(HBasicBlock* block,
469 HBasicBlock* reference,
474 void TransformLoopHeaderForBCE(HBasicBlock* header);
478 HBasicBlock* TransformLoopForVectorization(HBasicBlock* header,
479 HBasicBlock* body,
480 HBasicBlock* exit);
484 void DeleteDeadEmptyBlock(HBasicBlock* block);
490 HBasicBlock* SplitEdge(HBasicBlock* block, HBasicBlock* successor);
492 void SplitCriticalEdge(HBasicBlock* block, HBasicBlock* successor);
493 void OrderLoopHeaderPredecessors(HBasicBlock* header);
503 void TransformLoopToSinglePreheaderFormat(HBasicBlock* header);
505 void SimplifyLoop(HBasicBlock* header);
563 const ArenaVector<HBasicBlock*>& GetReversePostOrder() const { in GetReversePostOrder()
567 ArrayRef<HBasicBlock* const> GetReversePostOrderSkipEntryBlock() const { in GetReversePostOrderSkipEntryBlock()
569 return ArrayRef<HBasicBlock* const>(GetReversePostOrder()).SubArray(1); in GetReversePostOrderSkipEntryBlock()
572 IterationRange<ArenaVector<HBasicBlock*>::const_reverse_iterator> GetPostOrder() const { in GetPostOrder()
576 const ArenaVector<HBasicBlock*>& GetLinearOrder() const { in GetLinearOrder()
580 IterationRange<ArenaVector<HBasicBlock*>::const_reverse_iterator> GetLinearPostOrder() const { in GetLinearPostOrder()
736 ArenaVector<HBasicBlock*> blocks_;
739 ArenaVector<HBasicBlock*> reverse_post_order_;
743 ArenaVector<HBasicBlock*> linear_order_;
745 HBasicBlock* entry_block_;
746 HBasicBlock* exit_block_;
859 HLoopInformation(HBasicBlock* header, HGraph* graph) in HLoopInformation()
878 HBasicBlock* GetHeader() const { in GetHeader()
882 void SetHeader(HBasicBlock* block) { in SetHeader()
890 void AddBackEdge(HBasicBlock* back_edge) { in AddBackEdge()
894 void RemoveBackEdge(HBasicBlock* back_edge) { in RemoveBackEdge()
898 bool IsBackEdge(const HBasicBlock& block) const { in IsBackEdge()
906 HBasicBlock* GetPreHeader() const;
908 const ArenaVector<HBasicBlock*>& GetBackEdges() const { in GetBackEdges()
916 void ReplaceBackEdge(HBasicBlock* existing, HBasicBlock* new_back_edge) { in ReplaceBackEdge()
929 bool Contains(const HBasicBlock& block) const;
940 void Add(HBasicBlock* block);
941 void Remove(HBasicBlock* block);
953 bool DominatesAllBackEdges(HBasicBlock* block);
965 void PopulateRecursive(HBasicBlock* block);
966 void PopulateIrreducibleRecursive(HBasicBlock* block, ArenaBitVector* finalized);
968 HBasicBlock* header_;
972 ArenaVector<HBasicBlock*> back_edges_;
1042 class HBasicBlock : public ArenaObject<kArenaAllocBasicBlock> {
1044 explicit HBasicBlock(HGraph* graph, uint32_t dex_pc = kNoDexPc)
1061 const ArenaVector<HBasicBlock*>& GetPredecessors() const { in GetPredecessors()
1065 const ArenaVector<HBasicBlock*>& GetSuccessors() const { in GetSuccessors()
1069 ArrayRef<HBasicBlock* const> GetNormalSuccessors() const;
1070 ArrayRef<HBasicBlock* const> GetExceptionalSuccessors() const;
1072 bool HasSuccessor(const HBasicBlock* block, size_t start_from = 0u) {
1076 const ArenaVector<HBasicBlock*>& GetDominatedBlocks() const { in GetDominatedBlocks()
1101 void AddBackEdge(HBasicBlock* back_edge) { in AddBackEdge()
1114 void AddBackEdgeWhileUpdating(HBasicBlock* back_edge) { in AddBackEdgeWhileUpdating()
1128 HBasicBlock* GetDominator() const { return dominator_; } in GetDominator()
1129 void SetDominator(HBasicBlock* dominator) { dominator_ = dominator; } in SetDominator()
1130 void AddDominatedBlock(HBasicBlock* block) { dominated_blocks_.push_back(block); } in AddDominatedBlock()
1132 void RemoveDominatedBlock(HBasicBlock* block) { in RemoveDominatedBlock()
1136 void ReplaceDominatedBlock(HBasicBlock* existing, HBasicBlock* new_block) { in ReplaceDominatedBlock()
1155 void AddSuccessor(HBasicBlock* block) { in AddSuccessor()
1160 void ReplaceSuccessor(HBasicBlock* existing, HBasicBlock* new_block) { in ReplaceSuccessor()
1167 void ReplacePredecessor(HBasicBlock* existing, HBasicBlock* new_block) { in ReplacePredecessor()
1177 void InsertBetween(HBasicBlock* predecessor, HBasicBlock* successor) { in InsertBetween()
1186 void RemovePredecessor(HBasicBlock* block) { in RemovePredecessor()
1190 void RemoveSuccessor(HBasicBlock* block) { in RemoveSuccessor()
1198 void AddPredecessor(HBasicBlock* block) { in AddPredecessor()
1213 size_t GetPredecessorIndexOf(HBasicBlock* predecessor) const { in GetPredecessorIndexOf()
1217 size_t GetSuccessorIndexOf(HBasicBlock* successor) const { in GetSuccessorIndexOf()
1221 HBasicBlock* GetSinglePredecessor() const { in GetSinglePredecessor()
1226 HBasicBlock* GetSingleSuccessor() const { in GetSingleSuccessor()
1233 bool IsFirstIndexOfPredecessor(HBasicBlock* predecessor, size_t idx) const { in IsFirstIndexOfPredecessor()
1242 HBasicBlock* CreateImmediateDominator();
1249 HBasicBlock* SplitBefore(HInstruction* cursor);
1256 HBasicBlock* SplitBeforeForInlining(HInstruction* cursor);
1259 HBasicBlock* SplitAfterForInlining(HInstruction* cursor);
1266 void MergeWithInlined(HBasicBlock* other);
1273 void ReplaceWith(HBasicBlock* other);
1276 void MergeInstructionsWith(HBasicBlock* other);
1282 void MergeWith(HBasicBlock* other);
1375 bool Dominates(HBasicBlock* block) const;
1391 ArenaVector<HBasicBlock*> predecessors_;
1392 ArenaVector<HBasicBlock*> successors_;
1396 HBasicBlock* dominator_;
1397 ArenaVector<HBasicBlock*> dominated_blocks_;
1408 DISALLOW_COPY_AND_ASSIGN(HBasicBlock);
1415 explicit HLoopInformationOutwardIterator(const HBasicBlock& block) in HLoopInformationOutwardIterator()
2027 void CopyFromWithLoopPhiAdjustment(HEnvironment* env, HBasicBlock* loop_header);
2128 HBasicBlock* GetBlock() const { return block_; } in GetBlock()
2130 void SetBlock(HBasicBlock* block) { block_ = block; } in SetBlock()
2341 HBasicBlock* block) { in CopyEnvironmentFromWithLoopPhiAdjustment()
2602 HBasicBlock* block_;
2644 friend class HBasicBlock; variable
2963 HBasicBlock* GetSuccessor() const { in GetSuccessor()
3234 HBasicBlock* IfTrueSuccessor() const { in IfTrueSuccessor()
3238 HBasicBlock* IfFalseSuccessor() const { in IfFalseSuccessor()
3277 HBasicBlock* GetNormalFlowSuccessor() const { return GetBlock()->GetSuccessors()[0]; } in GetNormalFlowSuccessor()
3279 ArrayRef<HBasicBlock* const> GetExceptionHandlers() const { in GetExceptionHandlers()
3280 return ArrayRef<HBasicBlock* const>(GetBlock()->GetSuccessors()).SubArray(1u); in GetExceptionHandlers()
3285 bool HasExceptionHandler(const HBasicBlock& handler) const { in HasExceptionHandler()
3292 void AddExceptionHandler(HBasicBlock* handler) { in AddExceptionHandler()
3526 HBasicBlock* GetDefaultBlock() const { in GetDefaultBlock()
7968 virtual void VisitBasicBlock(HBasicBlock* block);
8055 HBasicBlock* Current() const { return blocks_[index_]; } in Current()
8067 const ArenaVector<HBasicBlock*>& blocks_;
8088 HBasicBlock* Current() const { return blocks_[index_]; } in Current()
8100 const ArenaVector<HBasicBlock*>& blocks_;
8181 inline void MakeRoomFor(ArenaVector<HBasicBlock*>* blocks,