Bug 678928: don't use fmem_imm_off in the macro assembler, use its wrapper: 'floatTransfer'. r=adrake
authorMarty Rosenberg <mrosenberg@mozilla.com>
Fri, 19 Aug 2011 15:08:42 -0700
changeset 75543 af2098f08fc7a42c23f1a4fe4e17b43d79c8aafc
parent 75542 f0c4572db26071ae0863f0d2e97581d876851fd0
child 75544 6009974c1e1c42edaf2e39f298d499f759e1eea9
push id3
push userfelipc@gmail.com
push dateFri, 30 Sep 2011 20:09:13 +0000
reviewersadrake
bugs678928
milestone9.0a1
Bug 678928: don't use fmem_imm_off in the macro assembler, use its wrapper: 'floatTransfer'. r=adrake
js/src/assembler/assembler/MacroAssemblerARM.h
--- a/js/src/assembler/assembler/MacroAssemblerARM.h
+++ b/js/src/assembler/assembler/MacroAssemblerARM.h
@@ -1145,18 +1145,17 @@ public:
         m_assembler.vmov64(false, true, lo, hi, fpReg);
     }
 
     void loadFloat(ImplicitAddress address, FPRegisterID dest)
     {
         // as long as this is a sane mapping, (*2) should just work
         dest = (FPRegisterID) (dest * 2);
         ASSERT((address.offset & 0x3) == 0);
-        // address.offset is the offset in bytes, fmem_imm_off is expecting the offset in words.
-        m_assembler.fmem_imm_off(true, false, true, dest, address.base, address.offset >> 2);
+        m_assembler.floatTransfer(true, dest, address.base, address.offset);
         m_assembler.vcvt(m_assembler.FloatReg32, m_assembler.FloatReg64, (FPRegisterID)(dest*2), dest);
     }
     void loadFloat(BaseIndex address, FPRegisterID dest)
     {
         m_assembler.baseIndexFloatTransfer(true, false, (FPRegisterID)(dest*2),
                                            address.base, address.index,
                                            address.scale, address.offset);
         m_assembler.vcvt(m_assembler.FloatReg32, m_assembler.FloatReg64, (FPRegisterID)(dest*2), dest);
@@ -1195,17 +1194,17 @@ public:
                 BaseIndex(address.base, address.index, address.scale, address.offset + 4));
     }
     void fastStoreDouble(FPRegisterID fpReg, RegisterID lo, RegisterID hi) {
         m_assembler.vmov64(true, true, lo, hi, fpReg);
     }
 
     void storeFloat(FPRegisterID src, ImplicitAddress address)
     {
-        m_assembler.fmem_imm_off(false, false, true, src, address.base, address.offset);
+        m_assembler.floatTransfer(false, src, address.base, address.offset);
     }
 
     void storeFloat(FPRegisterID src, BaseIndex address)
     {
         m_assembler.baseIndexFloatTransfer(false, false, src,
                                            address.base, address.index,
                                            address.scale, address.offset);
     }