[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