[pypy-commit] pypy arm-backend-2: add a check for the size of the value stored in size

bivab noreply at buildbot.pypy.org
Sat Jul 16 17:12:58 CEST 2011


Author: David Schneider <david.schneider at picle.org>
Branch: arm-backend-2
Changeset: r45671:5690763bfdba
Date: 2011-07-16 17:11 +0200
http://bitbucket.org/pypy/pypy/changeset/5690763bfdba/

Log:	add a check for the size of the value stored in size

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
@@ -988,9 +988,13 @@
         self.mc.gen_load_int(r.r0.value, nursery_free_adr)
         self.mc.LDR_ri(r.r0.value, r.r0.value)
 
-        self.mc.ADD_ri(r.r1.value, r.r0.value, size)
+        if _check_imm_arg(ConstInt(size)):
+            self.mc.ADD_ri(r.r1.value, r.r0.value, size)
+        else:
+            self.mc.gen_load_int(r.r1.value, size)
+            self.mc.ADD_rr(r.r1.value, r.r0.value, r.r1.value)
 
-        # XXX maybe use an offset from the valeu nursery_free_addr
+        # XXX maybe use an offset from the value nursery_free_addr
         self.mc.gen_load_int(r.ip.value, nursery_top_adr)
         self.mc.LDR_ri(r.ip.value, r.ip.value)
 
diff --git a/pypy/jit/backend/arm/helper/regalloc.py b/pypy/jit/backend/arm/helper/regalloc.py
--- a/pypy/jit/backend/arm/helper/regalloc.py
+++ b/pypy/jit/backend/arm/helper/regalloc.py
@@ -4,6 +4,7 @@
 from pypy.jit.metainterp.history import ConstInt, BoxInt, Box
 from pypy.jit.metainterp.history import ConstInt
 
+# XXX create a version that does not need a ConstInt
 def _check_imm_arg(arg, size=0xFF, allow_zero=True):
     if isinstance(arg, ConstInt):
         i = arg.getint()


More information about the pypy-commit mailing list