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