Lines Matching defs:Region
42 class Region;
142 class Region : public SeaNode {
144 explicit Region():
149 // Adds @instruction as an instruction node child in the current region.
151 // Returns the last instruction node child of the current region.
154 // Returns all the child instructions of this region, in program order.
165 // Returns the set of reaching definitions for the current region.
176 void SetIDominator(Region* dom) {
180 Region* GetIDominator() const {
184 void AddToIDominatedSet(Region* dominated) {
188 const std::set<Region*>* GetIDominatedSet() {
191 // Adds @df_reg to the dominance frontier of the current region.
192 void AddToDominanceFrontier(Region* df_reg) {
195 // Returns the dominance frontier of the current region.
197 std::set<Region*>* GetDominanceFrontier() {
200 // Returns true if the region contains a phi function for @reg_no.
204 // Returns the phi-functions from the region.
208 // Adds a phi-function for @reg_no to this region.
214 Region* predecessor);
221 void AddSuccessor(Region* successor) {
226 void AddPredecessor(Region* predecessor) {
231 std::vector<sea_ir::Region*>* GetSuccessors() {
234 std::vector<sea_ir::Region*>* GetPredecessors() {
239 std::vector<sea_ir::Region*> successors_; // CFG successor nodes (regions)
240 std::vector<sea_ir::Region*> predecessors_; // CFG predecessor nodes (instructions/regions)
245 int rpo_number_; // reverse postorder number of the region
247 Region* idom_;
248 // The set of nodes immediately dominated by the region.
249 std::set<Region*> idominated_set_;
251 std::set<Region*> df_;
252 // Records the set of register numbers that have phi nodes in this region.
268 std::vector<Region*>* GetRegions() {
272 static void ComputeRPO(Region* crt_bb, int& crt_rpo);
274 static Region* Intersect(Region* i, Region* j);
301 // Registers @childReg as a region belonging to the SeaGraph instance.
302 void AddRegion(Region* childReg);
303 // Returns new region and registers it with the SeaGraph instance.
304 Region* GetNewRegion();
310 void AddEdge(Region* src, Region* dst) const;
316 // Computes immediate dominators for each region.
325 // Computes the reverse-postorder numbering for the region nodes.
337 // Identifies the definitions corresponding to uses for region @node
339 void RenameAsSSA(Region* node, utils::ScopedHashtable<int, InstructionNode*>* scoped_table);
344 void InsertSignatureNodes(const art::DexFile::CodeItem* code_item, Region* r);
347 std::vector<Region*> regions_;