[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