[pypy-svn] r78594 - pypy/branch/arm-backend/pypy/jit/backend/arm

david at codespeak.net david at codespeak.net
Sun Oct 31 13:22:53 CET 2010


Author: david
Date: Sun Oct 31 13:22:47 2010
New Revision: 78594

Modified:
   pypy/branch/arm-backend/pypy/jit/backend/arm/assembler.py
Log:
Improve trace exit path

Modified: pypy/branch/arm-backend/pypy/jit/backend/arm/assembler.py
==============================================================================
--- pypy/branch/arm-backend/pypy/jit/backend/arm/assembler.py	(original)
+++ pypy/branch/arm-backend/pypy/jit/backend/arm/assembler.py	Sun Oct 31 13:22:47 2010
@@ -100,9 +100,10 @@
         self.mc.MOV_rr(r.r0.value, r.lr.value)  # move mem block address, to r0 to pass as
                                     # parameter to next procedure call
         self.mc.MOV_rr(r.r1.value, r.sp.value)  # pass the current stack pointer as second param
-        self.mc.gen_load_int(r.r2.value, rffi.cast(lltype.Signed, decode_registers_addr))
-        self.mc.gen_load_int(r.lr.value, self.mc.curraddr()+self.mc.size_of_gen_load_int+WORD)
-        self.mc.MOV_rr(r.pc.value, r.r2.value)
+
+        self.mc.ADD_ri(r.lr.value, r.pc.value, 4)
+        self.mc.LDR_ri(r.pc.value, r.pc.value, -4)
+        self.mc.write32(rffi.cast(lltype.Signed, decode_registers_addr))
         self.mc.MOV_rr(r.ip.value, r.r0.value)
         self.mc.LDM(r.sp.value, range(12), w=1) # XXX Replace with POP instr. someday
 



More information about the Pypy-commit mailing list