[pypy-commit] pypy s390x-backend: made register r13 dirty before flushing the non volatile registers to the stack,

plan_rich pypy.commits at gmail.com
Thu Jan 21 04:10:00 EST 2016


Author: Richard Plangger <planrichi at gmail.com>
Branch: s390x-backend
Changeset: r81884:f5ab3026a4db
Date: 2016-01-21 10:08 +0100
http://bitbucket.org/pypy/pypy/changeset/f5ab3026a4db/

Log:	made register r13 dirty before flushing the non volatile registers
	to the stack, it seems that this cannot happen in the test suite
	because it is either ffi/ctypes that restores a constant r13 after
	the call and the translated tests might not need r13 after finishing
	the jit code

diff --git a/rpython/jit/backend/zarch/assembler.py b/rpython/jit/backend/zarch/assembler.py
--- a/rpython/jit/backend/zarch/assembler.py
+++ b/rpython/jit/backend/zarch/assembler.py
@@ -633,7 +633,6 @@
                                            looptoken, clt.allgcrefs)
         self.pool.pre_assemble(self, operations)
         entrypos = self.mc.get_relative_pos()
-        self.mc.LARL(r.POOL, l.halfword(self.pool.pool_start - entrypos))
         self._call_header_with_stack_check()
         looppos = self.mc.get_relative_pos()
         frame_depth_no_fixed_size = self._assemble(regalloc, inputargs,
@@ -1000,6 +999,7 @@
     def _call_header(self):
         # Build a new stackframe of size STD_FRAME_SIZE_IN_BYTES
         self.mc.STMG(r.r6, r.r15, l.addr(6*WORD, r.SP))
+        self.mc.LARL(r.POOL, l.halfword(self.pool.pool_start - self.mc.get_relative_pos()))
         # save the back chain
         self.mc.STG(r.SP, l.addr(0, r.SP))
 


More information about the pypy-commit mailing list