Author: David Schneider <[email protected]>
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()
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to