Fix LIR_std2f implementation on ARM. [
Bug 572679] [r=vlad]
--- a/nanojit/NativeARM.cpp
+++ b/nanojit/NativeARM.cpp
@@ -1502,24 +1502,23 @@ Assembler::asm_store64(LOpcode op, LIns*
}
return;
case LIR_std2f:
if (_config.arm_vfp) {
Register rb = findRegFor(base, GpRegs);
if (value->isImmD()) {
- underrunProtect(LD32_size*2 + 8);
-
- // XXX use another reg, get rid of dependency
+ union {
+ float f;
+ uint32_t i;
+ } imm;
+ imm.f = (float)(value->immD());
asm_str(IP, rb, dr);
- asm_ld_imm(IP, value->immDlo(), false);
- asm_str(IP, rb, dr+4);
- asm_ld_imm(IP, value->immDhi(), false);
-
+ asm_ld_imm(IP, imm.i);
return;
}
Register rv = findRegFor(value, FpRegs);
NanoAssert(deprecated_isKnownReg(rb));
NanoAssert(deprecated_isKnownReg(rv));