--- old/src/share/vm/opto/phaseX.hpp 2015-11-24 15:25:44.849841705 +0100 +++ new/src/share/vm/opto/phaseX.hpp 2015-11-24 15:25:44.669841714 +0100 @@ -135,6 +135,8 @@ // Extend the mapping: index i maps to Type *n. void map( uint i, const Type *n ) { if( i>=_max ) grow(i); _types[i] = n; } uint Size() const { return _max; } + void replace_with(Type_Array* ta); + #ifndef PRODUCT void dump() const; #endif @@ -148,11 +150,19 @@ Unique_Node_List _useful; // Nodes reachable from root // list is allocated from current resource area public: - PhaseRemoveUseless( PhaseGVN *gvn, Unique_Node_List *worklist ); + PhaseRemoveUseless(PhaseGVN *gvn, Unique_Node_List *worklist, PhaseNumber phase_num = Remove_Useless); Unique_Node_List *get_useful() { return &_useful; } }; +//------------------------------PhaseRenumber---------------------------------- +// Phase that first performs a PhaseRemoveUseless, then it renumbers compiler +// structures accordingly. +class PhaseRenumberLive : public PhaseRemoveUseless { +public: + PhaseRenumberLive(PhaseGVN* gvn, Unique_Node_List* worklist, PhaseNumber phase_num = Renumber_Live); +}; + //------------------------------PhaseTransform--------------------------------- // Phases that analyze, then transform. Constructing the Phase object does any