[pypy-svn] pypy arm-backend-2: Pass cond flag to regalloc_mov and use it instead of directly emiting operations.

bivab commits-noreply at bitbucket.org
Wed Feb 16 11:26:53 CET 2011


Author: David Schneider <david.schneider at picle.org>
Branch: arm-backend-2
Changeset: r42029:e785d2f25336
Date: 2011-02-15 17:27 +0100
http://bitbucket.org/pypy/pypy/changeset/e785d2f25336/

Log:	Pass cond flag to regalloc_mov and use it instead of directly
	emiting operations.

diff --git a/pypy/jit/backend/arm/assembler.py b/pypy/jit/backend/arm/assembler.py
--- a/pypy/jit/backend/arm/assembler.py
+++ b/pypy/jit/backend/arm/assembler.py
@@ -542,23 +542,23 @@
         assert value.is_imm()
         self.mc.gen_load_int(loc.value, value.getint())
 
-    def regalloc_mov(self, prev_loc, loc):
+    def regalloc_mov(self, prev_loc, loc, cond=c.AL):
         if prev_loc.is_imm():
             if _check_imm_arg(ConstInt(prev_loc.getint())):
-                self.mc.MOV_ri(loc.value, prev_loc.getint())
+                self.mc.MOV_ri(loc.value, prev_loc.getint(), cond=cond)
             else:
-                self.mc.gen_load_int(loc.value, prev_loc.getint())
+                self.mc.gen_load_int(loc.value, prev_loc.getint(), cond=cond)
         elif loc.is_stack():
-            self.mc.STR_ri(prev_loc.value, r.fp.value, loc.position*-WORD)
+            self.mc.STR_ri(prev_loc.value, r.fp.value, loc.position*-WORD, cond=cond)
         elif prev_loc.is_stack():
-            self.mc.LDR_ri(loc.value, r.fp.value, prev_loc.position*-WORD)
+            self.mc.LDR_ri(loc.value, r.fp.value, prev_loc.position*-WORD, cond=cond)
         else:
-            self.mc.MOV_rr(loc.value, prev_loc.value)
+            self.mc.MOV_rr(loc.value, prev_loc.value, cond=cond)
     mov_loc_loc = regalloc_mov
 
     def regalloc_push(self, loc):
         if loc.is_stack():
-            self.mc.LDR_ri(r.ip.value, r.fp.value, loc.position*-WORD)
+            self.regalloc_mov(loc, r.ip)
             self.mc.PUSH([r.ip.value])
         elif loc.is_reg():
             self.mc.PUSH([loc.value])
@@ -568,7 +568,7 @@
     def regalloc_pop(self, loc):
         if loc.is_stack():
             self.mc.POP([r.ip.value])
-            self.mc.STR_ri(r.ip.value, r.fp.value, loc.position*-WORD)
+            self.regalloc_mov(r.ip, loc)
         elif loc.is_reg():
             self.mc.POP([loc.value])
         else:


More information about the Pypy-commit mailing list