[arm] use arm_ADDi and let it take care of LD32 if necessary.
authorVladimir Vukicevic <vladimir@pobox.com>
Fri, 05 Sep 2008 17:23:36 -0700
changeset 19064 a2daad0a3e2a797b7b3cf4dc700aab15f5dabd9e
parent 19063 e542ef8f4df47c7dd15aa131c231dfe7d37a8758
child 19065 6d307433ee03c3a21c0fff4b0b1c72372c8ac977
push id1930
push usermrbkap@mozilla.com
push dateWed, 10 Sep 2008 06:40:47 +0000
treeherderautoland@ee61af1469cd [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
milestone1.9.1b1pre
[arm] use arm_ADDi and let it take care of LD32 if necessary.
js/src/nanojit/NativeARM.cpp
--- a/js/src/nanojit/NativeARM.cpp
+++ b/js/src/nanojit/NativeARM.cpp
@@ -443,20 +443,18 @@ Assembler::asm_load64(LInsp ins)
 #ifdef NJ_ARM_VFP
     Register rb = findRegFor(base, GpRegs);
 
     NanoAssert(rb != UnknownReg);
     NanoAssert(rr == UnknownReg || IsFpReg(rr));
 
     if (rr != UnknownReg) {
         if (!isS8(offset >> 2) || (offset&3) != 0) {
-            underrunProtect(LD32_size + 8);
             FLDD(rr,Scratch,0);
-            ADD(Scratch, rb);
-            LD32_nochk(Scratch, offset);
+            arm_ADDi(Scratch, rb, offset);
         } else {
             FLDD(rr,rb,offset);
         }
     } else {
         asm_mmq(FP, d, rb, offset);
     }
 
     // *(FP+dr) <- *(rb+db)
@@ -500,19 +498,17 @@ Assembler::asm_store64(LInsp value, int 
     if (!isS8(dr)) {
         baseReg = Scratch;
         baseOffset = 0;
     }
 
     FSTD(rv, baseReg, baseOffset);
 
     if (!isS8(dr)) {
-        underrunProtect(4 + LD32_size);
-        ADD(Scratch, rb);
-        LD32_nochk(Scratch, dr);
+        arm_ADDi(Scratch, rb, dr);
     }
 
     // if it's a constant, make sure our baseReg/baseOffset location
     // has the right value
     if (value->isconstq()) {
         const int32_t* p = (const int32_t*) (value-2);
 
         underrunProtect(12);