src/share/vm/opto/postaloc.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
7178280 Cdiff src/share/vm/opto/postaloc.cpp
src/share/vm/opto/postaloc.cpp
Print this page
*** 306,318 ****
}
if (ignore_self) continue;
}
Node *vv = value[reg];
! if (n_regs > 1) { // 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
}
if( vv == val || // Got a direct hit?
(t && vv && vv->bottom_type() == t && vv->is_Mach() &&
vv->as_Mach()->rule() == val->as_Mach()->rule()) ) { // Or same constant?
assert( !n->is_Phi(), "cannot change registers at a Phi so easily" );
--- 306,319 ----
}
if (ignore_self) continue;
}
Node *vv = value[reg];
! if (n_regs > 1) { // Doubles and vectors check for aligned-adjacent set
! uint last = (n_regs-1); // Looking for the last part of a set
! if ((reg&last) != last) continue; // Wrong part of a set
! if (!register_contains_value(vv, reg, n_regs, value)) continue; // Different value
}
if( vv == val || // Got a direct hit?
(t && vv && vv->bottom_type() == t && vv->is_Mach() &&
vv->as_Mach()->rule() == val->as_Mach()->rule()) ) { // Or same constant?
assert( !n->is_Phi(), "cannot change registers at a Phi so easily" );
*** 571,581 ****
value.map(ureg,valdef); // record improved reaching-def info
regnd.map(ureg, def);
// Record other half of doubles
uint def_ideal_reg = def->ideal_reg();
int n_regs = RegMask::num_registers(def_ideal_reg);
- bool is_vec = RegMask::is_vector(def_ideal_reg);
for (int l = 1; l < n_regs; l++) {
OptoReg::Name ureg_lo = OptoReg::add(ureg,-l);
if (!value[ureg_lo] &&
(!RegMask::can_represent(ureg_lo) ||
lrgs(useidx).mask().Member(ureg_lo))) { // Nearly always adjacent
--- 572,581 ----
src/share/vm/opto/postaloc.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File