Author: Armin Rigo <ar...@tunes.org>
Branch: 
Changeset: r79475:9b332571db85
Date: 2015-09-06 13:56 +0200
http://bitbucket.org/pypy/pypy/changeset/9b332571db85/

Log:    Re-enable this optimization in the arm backend

diff --git a/rpython/jit/backend/arm/regalloc.py 
b/rpython/jit/backend/arm/regalloc.py
--- a/rpython/jit/backend/arm/regalloc.py
+++ b/rpython/jit/backend/arm/regalloc.py
@@ -760,7 +760,6 @@
         # optimization only: fill in the 'hint_frame_locations' dictionary
         # of rm and xrm based on the JUMP at the end of the loop, by looking
         # at where we would like the boxes to be after the jump.
-        return # XXX disabled for now
         op = operations[-1]
         if op.getopnum() != rop.JUMP:
             return
@@ -778,16 +777,16 @@
         #   we would like the boxes to be after the jump.
 
     def _compute_hint_frame_locations_from_descr(self, descr):
-        return
-        #arglocs = self.assembler.target_arglocs(descr)
-        #jump_op = self.final_jump_op
-        #assert len(arglocs) == jump_op.numargs()
-        #for i in range(jump_op.numargs()):
-        #    box = jump_op.getarg(i)
-        #    if isinstance(box, Box):
-        #        loc = arglocs[i]
-        #        if loc is not None and loc.is_stack():
-        #            self.frame_manager.hint_frame_locations[box] = loc
+        arglocs = self.assembler.target_arglocs(descr)
+        jump_op = self.final_jump_op
+        assert len(arglocs) == jump_op.numargs()
+        for i in range(jump_op.numargs()):
+            box = jump_op.getarg(i)
+            if isinstance(box, Box):
+                loc = arglocs[i]
+                if loc is not None and loc.is_stack():
+                    self.frame_manager.hint_frame_pos[box] = (
+                        self.fm.get_loc_index(loc))
 
     def prepare_op_jump(self, op, fcond):
         assert self.jump_target_descr is None
@@ -1218,9 +1217,9 @@
         # end of the same loop, i.e. if what we are compiling is a single
         # loop that ends up jumping to this LABEL, then we can now provide
         # the hints about the expected position of the spilled variables.
-        #jump_op = self.final_jump_op
-        #if jump_op is not None and jump_op.getdescr() is descr:
-        #    self._compute_hint_frame_locations_from_descr(descr)
+        jump_op = self.final_jump_op
+        if jump_op is not None and jump_op.getdescr() is descr:
+            self._compute_hint_frame_locations_from_descr(descr)
         return []
 
     def prepare_op_guard_not_forced_2(self, op, fcond):
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to