src/share/vm/opto/postaloc.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6667595 Cdiff src/share/vm/opto/postaloc.cpp

src/share/vm/opto/postaloc.cpp

Print this page

        

*** 221,232 **** --- 221,248 ---- // register. // Also handle duplicate copies here. const Type *t = val->is_Con() ? val->bottom_type() : NULL; + x = n->in(k); + bool ignore_self = false; + { + ignore_self = true; + DUIterator_Fast imax, i = x->fast_outs(imax); + Node* first = x->fast_out(i); i++; + while (i < imax && ignore_self) { + Node* use = x->fast_out(i); i++; + if (use != first) ignore_self = false; + } + } + // Scan all registers to see if this value is around already for( uint reg = 0; reg < (uint)_max_reg; reg++ ) { + if (reg == (uint)nk_reg && ignore_self) { + continue; + } + Node *vv = value[reg]; if( !single ) { // Doubles check for aligned-adjacent pair if( (reg&1)==0 ) continue; // Wrong half of a pair if( vv != value[reg-1] ) continue; // Not a complete pair }
src/share/vm/opto/postaloc.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File