Author: David Schneider <[email protected]>
Branch: arm-backend-2
Changeset: r52060:c76d9a617a80
Date: 2012-01-26 17:04 +0100
http://bitbucket.org/pypy/pypy/changeset/c76d9a617a80/

Log:    use more implicit shifts

diff --git a/pypy/jit/backend/arm/opassembler.py 
b/pypy/jit/backend/arm/opassembler.py
--- a/pypy/jit/backend/arm/opassembler.py
+++ b/pypy/jit/backend/arm/opassembler.py
@@ -588,26 +588,25 @@
             #
             loc_index = arglocs[1]
             if loc_index.is_reg():
-                tmp1 = loc_index
+                tmp1 = regalloc.get_scratch_reg(INT, [loc_index, loc_base])
+                tmp2 = regalloc.get_scratch_reg(INT, [tmp1, loc_base])
                 # store additional scratch reg
-                self.mc.PUSH([tmp1.value])
                 #byteofs
                 s = 3 + descr.jit_wb_card_page_shift
-                self.mc.MVN_rr(r.lr.value, tmp1.value,
+                self.mc.MVN_rr(r.lr.value, loc_index.value,
                                     imm=s, shifttype=shift.LSR)
                 # byte_index
                 self.mc.MOV_ri(r.ip.value, imm=7)
-                self.mc.AND_rr(tmp1.value, r.ip.value, tmp1.value,
-                            imm=descr.jit_wb_card_page_shift, 
shifttype=shift.LSR)
-                self.mc.MOV_ri(r.ip.value, imm=1)
-                self.mc.LSL_rr(tmp1.value, r.ip.value, tmp1.value)
+                self.mc.AND_rr(tmp1.value, r.ip.value, loc_index.value,
+                        imm=descr.jit_wb_card_page_shift, shifttype=shift.LSR)
 
                 # set the bit
+                self.mc.MOV_ri(tmp2.value, imm=1)
                 self.mc.LDRB_rr(r.ip.value, loc_base.value, r.lr.value)
-                self.mc.ORR_rr(r.ip.value, r.ip.value, tmp1.value)
+                self.mc.ORR_rr_sr(r.ip.value, r.ip.value, tmp2.value,
+                                        tmp1.value, shifttype=shift.LSL)
                 self.mc.STRB_rr(r.ip.value, loc_base.value, r.lr.value)
                 # done
-                self.mc.POP([tmp1.value])
             elif loc_index.is_imm():
                 byte_index = loc_index.value >> descr.jit_wb_card_page_shift
                 byte_ofs = ~(byte_index >> 3)
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to