[pypy-svn] r78674 - pypy/branch/arm-backend/pypy/jit/backend/arm
david at codespeak.net
david at codespeak.net
Wed Nov 3 15:44:56 CET 2010
Author: david
Date: Wed Nov 3 15:44:54 2010
New Revision: 78674
Modified:
pypy/branch/arm-backend/pypy/jit/backend/arm/assembler.py
Log:
Extract patch preparation to a function
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 Wed Nov 3 15:44:54 2010
@@ -192,12 +192,9 @@
self.align()
loop_start=self.mc.curraddr()
self.gen_func_prolog()
- # Generate NOP as placeholder to patch the instruction(s) to update the
- # sp according to the number of spilled variables
- sp_patch_location = self.mc.curraddr()
- for _ in range((self.mc.size_of_gen_load_int+WORD)//WORD):
- self.mc.MOV_rr(r.r0.value, r.r0.value)
- # END
+
+ sp_patch_location = self._prepare_sp_patch_location()
+
self.gen_bootstrap_code(inputargs, regalloc, looptoken)
loop_head=self.mc.curraddr()
looptoken._arm_bootstrap_code = loop_start
@@ -210,11 +207,19 @@
fcond = self.operations[opnum](self, op, regalloc, fcond)
self._patch_sp_offset(sp_patch_location, regalloc)
- #self.gen_func_epilog()
+
if self._debug_asm:
self._dump_trace('loop.asm')
print 'Done assembling'
+ def _prepare_sp_patch_location(self):
+ """Generate NOPs as placeholder to patch the instruction(s) to update the
+ sp according to the number of spilled variables"""
+ l = self.mc.curraddr()
+ for _ in range((self.mc.size_of_gen_load_int+WORD)//WORD):
+ self.mc.MOV_rr(r.r0.value, r.r0.value)
+ return l
+
def _patch_sp_offset(self, addr, regalloc):
cb = ARMv7InMemoryBuilder(addr, ARMv7InMemoryBuilder.size_of_gen_load_int)
n = regalloc.frame_manager.frame_depth*WORD
More information about the Pypy-commit
mailing list