src/share/vm/opto/phaseX.hpp

changeset 8193
70649f10b88c
parent 6313
de95063c0e34
child 8604
04d83ba48607
child 8893
aea833250879
     1.1 --- a/src/share/vm/opto/phaseX.hpp	Wed Dec 09 10:26:00 2015 -0800
     1.2 +++ b/src/share/vm/opto/phaseX.hpp	Tue Dec 15 09:46:51 2015 +0100
     1.3 @@ -148,11 +148,21 @@
     1.4    Unique_Node_List _useful;   // Nodes reachable from root
     1.5                                // list is allocated from current resource area
     1.6  public:
     1.7 -  PhaseRemoveUseless( PhaseGVN *gvn, Unique_Node_List *worklist );
     1.8 +  PhaseRemoveUseless(PhaseGVN *gvn, Unique_Node_List *worklist, PhaseNumber phase_num = Remove_Useless);
     1.9  
    1.10    Unique_Node_List *get_useful() { return &_useful; }
    1.11  };
    1.12  
    1.13 +//------------------------------PhaseRenumber----------------------------------
    1.14 +// Phase that first performs a PhaseRemoveUseless, then it renumbers compiler
    1.15 +// structures accordingly.
    1.16 +class PhaseRenumberLive : public PhaseRemoveUseless {
    1.17 +public:
    1.18 +  PhaseRenumberLive(PhaseGVN* gvn,
    1.19 +                    Unique_Node_List* worklist, Unique_Node_List* new_worklist,
    1.20 +                    PhaseNumber phase_num = Remove_Useless_And_Renumber_Live);
    1.21 +};
    1.22 +
    1.23  
    1.24  //------------------------------PhaseTransform---------------------------------
    1.25  // Phases that analyze, then transform.  Constructing the Phase object does any
    1.26 @@ -162,7 +172,7 @@
    1.27  class PhaseTransform : public Phase {
    1.28  protected:
    1.29    Arena*     _arena;
    1.30 -  Node_Array _nodes;           // Map old node indices to new nodes.
    1.31 +  Node_List  _nodes;           // Map old node indices to new nodes.
    1.32    Type_Array _types;           // Map old node indices to Types.
    1.33  
    1.34    // ConNode caches:
    1.35 @@ -187,7 +197,13 @@
    1.36  
    1.37    Arena*      arena()   { return _arena; }
    1.38    Type_Array& types()   { return _types; }
    1.39 +  void replace_types(Type_Array new_types) {
    1.40 +    _types = new_types;
    1.41 +  }
    1.42    // _nodes is used in varying ways by subclasses, which define local accessors
    1.43 +  uint nodes_size() {
    1.44 +    return _nodes.size();
    1.45 +  }
    1.46  
    1.47  public:
    1.48    // Get a previously recorded type for the node n.

mercurial