185 #ifndef PRODUCT |
185 #ifndef PRODUCT |
186 void dump( ) const; |
186 void dump( ) const; |
187 #endif |
187 #endif |
188 }; |
188 }; |
189 |
189 |
190 //------------------------------LRG_List--------------------------------------- |
|
191 // Map Node indices to Live RanGe indices. |
|
192 // Array lookup in the optimized case. |
|
193 class LRG_List : public ResourceObj { |
|
194 friend class VMStructs; |
|
195 uint _cnt, _max; |
|
196 uint* _lidxs; |
|
197 ReallocMark _nesting; // assertion check for reallocations |
|
198 public: |
|
199 LRG_List( uint max ); |
|
200 |
|
201 uint lookup( uint nidx ) const { |
|
202 return _lidxs[nidx]; |
|
203 } |
|
204 uint operator[] (uint nidx) const { return lookup(nidx); } |
|
205 |
|
206 void map( uint nidx, uint lidx ) { |
|
207 assert( nidx < _cnt, "oob" ); |
|
208 _lidxs[nidx] = lidx; |
|
209 } |
|
210 void extend( uint nidx, uint lidx ); |
|
211 |
|
212 uint Size() const { return _cnt; } |
|
213 }; |
|
214 |
|
215 //------------------------------IFG-------------------------------------------- |
190 //------------------------------IFG-------------------------------------------- |
216 // InterFerence Graph |
191 // InterFerence Graph |
217 // An undirected graph implementation. Created with a fixed number of |
192 // An undirected graph implementation. Created with a fixed number of |
218 // vertices. Edges can be added & tested. Vertices can be removed, then |
193 // vertices. Edges can be added & tested. Vertices can be removed, then |
219 // added back later with all edges intact. Can add edges between one vertex |
194 // added back later with all edges intact. Can add edges between one vertex |