comparison src/share/vm/opto/chaitin.hpp @ 295:ea18057223c4

6732194: Data corruption dependent on -server/-client/-Xbatch Summary: rematerializing nodes results in incorrect inputs Reviewed-by: rasbold
author never
date Mon, 18 Aug 2008 23:17:51 -0700
parents d1605aabd0a1
children 91263420e1c6
comparison
equal deleted inserted replaced
294:616a07a75c3c 295:ea18057223c4
154 _at_risk:1; // Simplify says this guy is at risk to spill 154 _at_risk:1; // Simplify says this guy is at risk to spill
155 155
156 156
157 // Alive if non-zero, dead if zero 157 // Alive if non-zero, dead if zero
158 bool alive() const { return _def != NULL; } 158 bool alive() const { return _def != NULL; }
159 bool is_multidef() const { return _def == NodeSentinel; }
160 bool is_singledef() const { return _def != NodeSentinel; }
159 161
160 #ifndef PRODUCT 162 #ifndef PRODUCT
161 void dump( ) const; 163 void dump( ) const;
162 #endif 164 #endif
163 }; 165 };
318 320
319 // Helper functions for Split() 321 // Helper functions for Split()
320 uint split_DEF( Node *def, Block *b, int loc, uint max, Node **Reachblock, Node **debug_defs, GrowableArray<uint> splits, int slidx ); 322 uint split_DEF( Node *def, Block *b, int loc, uint max, Node **Reachblock, Node **debug_defs, GrowableArray<uint> splits, int slidx );
321 uint split_USE( Node *def, Block *b, Node *use, uint useidx, uint max, bool def_down, bool cisc_sp, GrowableArray<uint> splits, int slidx ); 323 uint split_USE( Node *def, Block *b, Node *use, uint useidx, uint max, bool def_down, bool cisc_sp, GrowableArray<uint> splits, int slidx );
322 int clone_projs( Block *b, uint idx, Node *con, Node *copy, uint &maxlrg ); 324 int clone_projs( Block *b, uint idx, Node *con, Node *copy, uint &maxlrg );
323 Node *split_Rematerialize( Node *def, Block *b, uint insidx, uint &maxlrg, GrowableArray<uint> splits, int slidx, uint *lrg2reach, Node **Reachblock, bool walkThru ); 325 Node *split_Rematerialize(Node *def, Block *b, uint insidx, uint &maxlrg, GrowableArray<uint> splits,
326 int slidx, uint *lrg2reach, Node **Reachblock, bool walkThru);
324 // True if lidx is used before any real register is def'd in the block 327 // True if lidx is used before any real register is def'd in the block
325 bool prompt_use( Block *b, uint lidx ); 328 bool prompt_use( Block *b, uint lidx );
326 Node *get_spillcopy_wide( Node *def, Node *use, uint uidx ); 329 Node *get_spillcopy_wide( Node *def, Node *use, uint uidx );
327 // Insert the spill at chosen location. Skip over any interveneing Proj's or 330 // Insert the spill at chosen location. Skip over any interveneing Proj's or
328 // Phis. Skip over a CatchNode and projs, inserting in the fall-through block 331 // Phis. Skip over a CatchNode and projs, inserting in the fall-through block