[pypy-svn] pypy jit-short_from_state: produce a short preamble that is actualy usefull

hakanardo commits-noreply at bitbucket.org
Wed Apr 13 19:23:50 CEST 2011


Author: Hakan Ardo <hakan at debian.org>
Branch: jit-short_from_state
Changeset: r43333:96c29f01f750
Date: 2011-04-13 19:23 +0200
http://bitbucket.org/pypy/pypy/changeset/96c29f01f750/

Log:	produce a short preamble that is actualy usefull

diff --git a/pypy/jit/metainterp/optimizeopt/unroll.py b/pypy/jit/metainterp/optimizeopt/unroll.py
--- a/pypy/jit/metainterp/optimizeopt/unroll.py
+++ b/pypy/jit/metainterp/optimizeopt/unroll.py
@@ -165,7 +165,7 @@
             values = [self.getvalue(arg) for arg in jump_args]
             inputargs = virtual_state.make_inputargs(values)
             short_boxes = preamble_optimizer.produce_short_preamble_ops(inputargs)
-            initial_inputargs_len = len(short_boxes)
+            initial_inputargs_len = len(inputargs)
 
             try:
                 inputargs, short = self.inline(self.cloned_operations,
@@ -199,6 +199,8 @@
 
             #short = self.create_short_preamble(loop.preamble, loop)
             if short:
+                assert short[-1].getopnum() == rop.JUMP
+                short[-1].setdescr(loop.token)
                 if False:
                     # FIXME: This should save some memory but requires
                     # a lot of tests to be fixed...
@@ -248,6 +250,7 @@
 
         values = [self.getvalue(arg) for arg in jump_args]
         inputargs = virtual_state.make_inputargs(values)
+        short_jumpargs = inputargs[:]
 
         # This loop is equivalent to the main optimization loop in
         # Optimizer.propagate_all_forward
@@ -284,6 +287,7 @@
                     if a not in inputargs:
                         short_op = short_boxes[a]
                         short.append(short_op)
+                        short_jumpargs.append(short_op.result)
                         newop = short_inliner.inline_op(short_op)
                         self.optimizer.send_extra_operation(newop)
                         inputargs.append(a)
@@ -294,6 +298,7 @@
 
         jmp.initarglist(jumpargs)
         self.optimizer.newoperations.append(jmp)
+        short.append(ResOperation(rop.JUMP, short_jumpargs, None))
         return inputargs, short
 
     def sameop(self, op1, op2):


More information about the Pypy-commit mailing list