[pypy-svn] r77540 - in pypy/branch/jit-unroll-loops/pypy: jit/metainterp jit/metainterp/optimizeopt jit/metainterp/test rlib
hakanardo at codespeak.net
hakanardo at codespeak.net
Fri Oct 1 19:36:21 CEST 2010
Author: hakanardo
Date: Fri Oct 1 19:36:19 2010
New Revision: 77540
Modified:
pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/unroll.py
pypy/branch/jit-unroll-loops/pypy/jit/metainterp/resume.py
pypy/branch/jit-unroll-loops/pypy/jit/metainterp/test/test_basic.py
pypy/branch/jit-unroll-loops/pypy/rlib/jit.py
Log:
guards working, test_loop_invariant_mul1 passing
Modified: pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/unroll.py
==============================================================================
--- pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/unroll.py (original)
+++ pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/unroll.py Fri Oct 1 19:36:19 2010
@@ -14,15 +14,14 @@
if not self.enabled:
self.emit_operation(op)
return
-
+
if op.getopnum() == rop.JUMP:
loop = self.optimizer.loop
loop.preamble.operations = self.optimizer.newoperations
self.optimizer.newoperations = []
jump_args = op.getarglist()
inputargs = self.inline(loop.preamble.operations + [op],
- loop.inputargs, jump_args)
- print "IN: ", inputargs
+ loop.inputargs, jump_args)
loop.inputargs = inputargs
jmp = ResOperation(rop.JUMP, loop.inputargs[:], None)
jmp.setdescr(loop.token)
@@ -36,16 +35,11 @@
for i in range(len(loop_args)):
argmap[loop_args[i]] = jump_args[i]
- print
- print
- print argmap
-
for v in self.optimizer.values.values():
v.fromstart = True
inputargs = jump_args[:]
for op in loop_operations:
- print "I:", op
newop = op.clone()
for i in range(op.numargs()):
a = op.getarg(i)
@@ -63,18 +57,25 @@
args = newop.getarglist()
newop.initarglist(args + inputargs[len(args):])
# FIXME: Assumes no virtuals
- print "N:", newop
current = len(self.optimizer.newoperations)
self.emit_operation(newop)
+
for op in self.optimizer.newoperations[current:]:
- print "E:", op
+ if op.is_guard():
+ args = []
+ for a in op._fail_args:
+ try:
+ a = argmap[a]
+ except KeyError:
+ pass
+ args.append(a)
+ op.setfailargs(args)
+
for a in op.getarglist():
if not isinstance(a, Const) and a in self.optimizer.values:
v = self.getvalue(a)
- print " testing ", a
if v.fromstart and a not in inputargs:
- print " ", a
inputargs.append(a)
return inputargs
Modified: pypy/branch/jit-unroll-loops/pypy/jit/metainterp/resume.py
==============================================================================
--- pypy/branch/jit-unroll-loops/pypy/jit/metainterp/resume.py (original)
+++ pypy/branch/jit-unroll-loops/pypy/jit/metainterp/resume.py Fri Oct 1 19:36:19 2010
@@ -298,7 +298,7 @@
self.liveboxes_from_env = liveboxes_from_env
self.liveboxes = {}
storage.rd_numb = numb
- storage.rd_snapshot = None
+ #storage.rd_snapshot = None FIXME!!
# collect liveboxes and virtuals
n = len(liveboxes_from_env) - v
Modified: pypy/branch/jit-unroll-loops/pypy/jit/metainterp/test/test_basic.py
==============================================================================
--- pypy/branch/jit-unroll-loops/pypy/jit/metainterp/test/test_basic.py (original)
+++ pypy/branch/jit-unroll-loops/pypy/jit/metainterp/test/test_basic.py Fri Oct 1 19:36:19 2010
@@ -316,8 +316,8 @@
res = self.meta_interp(f, [6, 7])
assert res == 252
self.check_loop_count(2)
- self.check_loops({'guard_true': 1,
- 'int_add': 1, 'int_sub': 1, 'int_gt': 1,
+ self.check_loops({'guard_true': 2,
+ 'int_add': 2, 'int_sub': 2, 'int_gt': 2,
'int_mul': 1,
'jump': 2})
Modified: pypy/branch/jit-unroll-loops/pypy/rlib/jit.py
==============================================================================
--- pypy/branch/jit-unroll-loops/pypy/rlib/jit.py (original)
+++ pypy/branch/jit-unroll-loops/pypy/rlib/jit.py Fri Oct 1 19:36:19 2010
@@ -236,7 +236,8 @@
'trace_eagerness': 200,
'trace_limit': 10000,
'inlining': False,
- 'optimizer': OPTIMIZER_FULL,
+ #'optimizer': OPTIMIZER_FULL,
+ 'optimizer': OPTIMIZER_NO_PERFECTSPEC,
'debug' : DEBUG_STEPS,
}
unroll_parameters = unrolling_iterable(PARAMETERS.keys())
More information about the Pypy-commit
mailing list