8071818: Incorrect addressing mode used for ldf in SPARC assembler

Update MacroAssembler::ldf to select addressing mode depending on Address parameter.

Reviewed-by: kvn, dlong
This commit is contained in:
Zoltan Majo 2015-01-30 10:40:08 +01:00
parent efd80ec6af
commit 883d349e17

View File

@ -630,7 +630,12 @@ inline void MacroAssembler::ldf(FloatRegisterImpl::Width w, Register s1, Registe
inline void MacroAssembler::ldf(FloatRegisterImpl::Width w, const Address& a, FloatRegister d, int offset) {
relocate(a.rspec(offset));
ldf(w, a.base(), a.disp() + offset, d);
if (a.has_index()) {
assert(offset == 0, "");
ldf(w, a.base(), a.index(), d);
} else {
ldf(w, a.base(), a.disp() + offset, d);
}
}
// returns if membar generates anything, obviously this code should mirror