Home | History | Annotate | Download | only in optimizing

Lines Matching defs:HBasicBlock

44 class HBasicBlock;
135 void SetBlockOfInstructions(HBasicBlock* block) const;
148 friend class HBasicBlock;
323 const ArenaVector<HBasicBlock*>& GetBlocks() const { return blocks_; }
328 HBasicBlock* GetEntryBlock() const { return entry_block_; }
329 HBasicBlock* GetExitBlock() const { return exit_block_; }
332 void SetEntryBlock(HBasicBlock* block) { entry_block_ = block; }
333 void SetExitBlock(HBasicBlock* block) { exit_block_ = block; }
335 void AddBlock(HBasicBlock* block);
363 void UpdateLoopAndTryInformationOfNewBlock(HBasicBlock* block,
364 HBasicBlock* reference,
369 void TransformLoopHeaderForBCE(HBasicBlock* header);
373 void DeleteDeadEmptyBlock(HBasicBlock* block);
379 HBasicBlock* SplitEdge(HBasicBlock* block, HBasicBlock* successor);
381 void SplitCriticalEdge(HBasicBlock* block, HBasicBlock* successor);
382 void SimplifyLoop(HBasicBlock* header);
440 const ArenaVector<HBasicBlock*>& GetReversePostOrder() const {
444 const ArenaVector<HBasicBlock*>& GetLinearOrder() const {
558 ArenaVector<HBasicBlock*> blocks_;
561 ArenaVector<HBasicBlock*> reverse_post_order_;
564 ArenaVector<HBasicBlock*> linear_order_;
566 HBasicBlock* entry_block_;
567 HBasicBlock* exit_block_;
649 HLoopInformation(HBasicBlock* header, HGraph* graph)
665 HBasicBlock* GetHeader() const {
669 void SetHeader(HBasicBlock* block) {
677 void AddBackEdge(HBasicBlock* back_edge) {
681 void RemoveBackEdge(HBasicBlock* back_edge) {
685 bool IsBackEdge(const HBasicBlock& block) const {
693 HBasicBlock* GetPreHeader() const;
695 const ArenaVector<HBasicBlock*>& GetBackEdges() const {
703 void ReplaceBackEdge(HBasicBlock* existing, HBasicBlock* new_back_edge) {
712 bool Contains(const HBasicBlock& block) const;
723 void Add(HBasicBlock* block);
724 void Remove(HBasicBlock* block);
736 bool DominatesAllBackEdges(HBasicBlock* block);
740 void PopulateRecursive(HBasicBlock* block);
741 void PopulateIrreducibleRecursive(HBasicBlock* block, ArenaBitVector* finalized);
743 HBasicBlock* header_;
747 ArenaVector<HBasicBlock*> back_edges_;
813 class HBasicBlock : public ArenaObject<kArenaAllocBasicBlock> {
815 HBasicBlock(HGraph* graph, uint32_t dex_pc = kNoDexPc)
832 const ArenaVector<HBasicBlock*>& GetPredecessors() const {
836 const ArenaVector<HBasicBlock*>& GetSuccessors() const {
840 ArrayRef<HBasicBlock* const> GetNormalSuccessors() const;
841 ArrayRef<HBasicBlock* const> GetExceptionalSuccessors() const;
843 bool HasSuccessor(const HBasicBlock* block, size_t start_from = 0u) {
847 const ArenaVector<HBasicBlock*>& GetDominatedBlocks() const {
870 void AddBackEdge(HBasicBlock* back_edge) {
885 HBasicBlock* GetDominator() const { return dominator_; }
886 void SetDominator(HBasicBlock* dominator) { dominator_ = dominator; }
887 void AddDominatedBlock(HBasicBlock* block) { dominated_blocks_.push_back(block); }
889 void RemoveDominatedBlock(HBasicBlock* block) {
893 void ReplaceDominatedBlock(HBasicBlock* existing, HBasicBlock* new_block) {
912 void AddSuccessor(HBasicBlock* block) {
917 void ReplaceSuccessor(HBasicBlock* existing, HBasicBlock* new_block) {
924 void ReplacePredecessor(HBasicBlock* existing, HBasicBlock* new_block) {
934 void InsertBetween(HBasicBlock* predecessor, HBasicBlock* successor) {
943 void RemovePredecessor(HBasicBlock* block) {
947 void RemoveSuccessor(HBasicBlock* block) {
955 void AddPredecessor(HBasicBlock* block) {
970 size_t GetPredecessorIndexOf(HBasicBlock* predecessor) const {
974 size_t GetSuccessorIndexOf(HBasicBlock* successor) const {
978 HBasicBlock* GetSinglePredecessor() const {
983 HBasicBlock* GetSingleSuccessor() const {
990 bool IsFirstIndexOfPredecessor(HBasicBlock* predecessor, size_t idx) const {
999 HBasicBlock* CreateImmediateDominator();
1006 HBasicBlock* SplitBefore(HInstruction* cursor);
1013 HBasicBlock* SplitBeforeForInlining(HInstruction* cursor);
1016 HBasicBlock* SplitAfterForInlining(HInstruction* cursor);
1023 void MergeWithInlined(HBasicBlock* other);
1030 void ReplaceWith(HBasicBlock* other);
1036 void MergeWith(HBasicBlock* other);
1128 bool Dominates(HBasicBlock* block) const;
1143 ArenaVector<HBasicBlock*> predecessors_;
1144 ArenaVector<HBasicBlock*> successors_;
1148 HBasicBlock* dominator_;
1149 ArenaVector<HBasicBlock*> dominated_blocks_;
1160 DISALLOW_COPY_AND_ASSIGN(HBasicBlock);
1167 explicit HLoopInformationOutwardIterator(const HBasicBlock& block)
1692 void CopyFromWithLoopPhiAdjustment(HEnvironment* env, HBasicBlock* loop_header);
1791 HBasicBlock* GetBlock() const { return block_; }
1793 void SetBlock(HBasicBlock* block) { block_ = block; }
1922 HBasicBlock* block) {
2126 HBasicBlock* block_;
2168 friend class HBasicBlock;
2465 HBasicBlock* GetSuccessor() const {
2709 HBasicBlock* IfTrueSuccessor() const {
2713 HBasicBlock* IfFalseSuccessor() const {
2745 HBasicBlock* GetNormalFlowSuccessor() const { return GetBlock()->GetSuccessors()[0]; }
2747 ArrayRef<HBasicBlock* const> GetExceptionHandlers() const {
2748 return ArrayRef<HBasicBlock* const>(GetBlock()->GetSuccessors()).SubArray(1u);
2753 bool HasExceptionHandler(const HBasicBlock& handler) const {
2760 void AddExceptionHandler(HBasicBlock* handler) {
2890 HBasicBlock* GetDefaultBlock() const {
6359 virtual void VisitBasicBlock(HBasicBlock* block);
6405 HBasicBlock* Current() const { return graph_.GetBlocks()[index_]; }
6423 HBasicBlock* Current() const { return graph_.GetReversePostOrder()[index_]; }
6442 HBasicBlock* Current() const { return graph_.GetReversePostOrder()[index_ - 1u]; }
6459 HBasicBlock* Current() const { return order_[index_ - 1u]; }
6467 const ArenaVector<HBasicBlock*>& order_;
6479 HBasicBlock* Current() const { return order_[index_]; }
6483 const ArenaVector<HBasicBlock*>& order_;
6504 HBasicBlock* Current() const { return blocks_[index_]; }
6516 const ArenaVector<HBasicBlock*>& blocks_;
6537 HBasicBlock* Current() const { return blocks_[index_]; }
6549 const ArenaVector<HBasicBlock*>& blocks_;
6590 inline void MakeRoomFor(ArenaVector<HBasicBlock*>* blocks,