[pypy-commit] pypy ppc-jit-backend: Handle holes in failargs of a guard

hager noreply at buildbot.pypy.org
Tue Aug 2 11:51:18 CEST 2011


Author: hager <sven.hager at uni-duesseldorf.de>
Branch: ppc-jit-backend
Changeset: r46188:f9ccdd06cb00
Date: 2011-08-02 11:48 +0200
http://bitbucket.org/pypy/pypy/changeset/f9ccdd06cb00/

Log:	Handle holes in failargs of a guard

diff --git a/pypy/jit/backend/ppc/ppcgen/ppc_assembler.py b/pypy/jit/backend/ppc/ppcgen/ppc_assembler.py
--- a/pypy/jit/backend/ppc/ppcgen/ppc_assembler.py
+++ b/pypy/jit/backend/ppc/ppcgen/ppc_assembler.py
@@ -885,7 +885,10 @@
         failargs = op.getfailargs()
         reglist = []
         for failarg in failargs:
-            reglist.append(cpu.reg_map[failarg])
+            if failarg is None:
+                reglist.append(None)
+            else:
+                reglist.append(cpu.reg_map[failarg])
 
         cpu.patch_list.append((numops, fail_index, op, reglist))
 
diff --git a/pypy/jit/backend/ppc/runner.py b/pypy/jit/backend/ppc/runner.py
--- a/pypy/jit/backend/ppc/runner.py
+++ b/pypy/jit/backend/ppc/runner.py
@@ -68,8 +68,10 @@
 
             # store return parameters in memory
             for index, reg in enumerate(reglist):
-                addr = self.fail_boxes_int.get_addr_for_num(index)
-                codebuilder.store_reg(reg, addr)
+                # if reg is None, then there is a hole in the failargs
+                if reg is not None:
+                    addr = self.fail_boxes_int.get_addr_for_num(index)
+                    codebuilder.store_reg(reg, addr)
 
             codebuilder.li(3, fail_index)            
             codebuilder.blr()


More information about the pypy-commit mailing list