< prev index next >
src/cpu/sparc/vm/macroAssembler_sparc.cpp
Print this page
*** 649,661 ****
void MacroAssembler::internal_sethi(const AddressLiteral& addrlit, Register d, bool ForceRelocatable) {
address save_pc;
int shiftcnt;
! # ifdef CHECK_DELAY
! assert_not_delayed((char*) "cannot put two instructions in delay slot");
! # endif
v9_dep();
save_pc = pc();
int msb32 = (int) (addrlit.value() >> 32);
int lsb32 = (int) (addrlit.value());
--- 649,661 ----
void MacroAssembler::internal_sethi(const AddressLiteral& addrlit, Register d, bool ForceRelocatable) {
address save_pc;
int shiftcnt;
! #ifdef VALIDATE_PIPELINE
! assert_no_delay("Cannot put two instructions in delay-slot.");
! #endif
v9_dep();
save_pc = pc();
int msb32 = (int) (addrlit.value() >> 32);
int lsb32 = (int) (addrlit.value());
*** 750,760 ****
if (inv_hi22(hi22(value)) == value) {
sethi(addrlit, d);
return;
}
}
! assert_not_delayed((char*) "cannot put two instructions in delay slot");
internal_sethi(addrlit, d, ForceRelocatable);
if (ForceRelocatable || addrlit.rspec().type() != relocInfo::none || addrlit.low10() != 0) {
add(d, addrlit.low10(), d, addrlit.rspec());
}
}
--- 750,760 ----
if (inv_hi22(hi22(value)) == value) {
sethi(addrlit, d);
return;
}
}
! assert_no_delay("Cannot put two instructions in delay-slot.");
internal_sethi(addrlit, d, ForceRelocatable);
if (ForceRelocatable || addrlit.rspec().type() != relocInfo::none || addrlit.low10() != 0) {
add(d, addrlit.low10(), d, addrlit.rspec());
}
}
< prev index next >