[pypy-svn] r77699 - in pypy/branch/jit-unroll-loops/pypy/jit/metainterp: . optimizeopt test
hakanardo at codespeak.net
hakanardo at codespeak.net
Thu Oct 7 19:03:49 CEST 2010
Author: hakanardo
Date: Thu Oct 7 19:03:47 2010
New Revision: 77699
Modified:
pypy/branch/jit-unroll-loops/pypy/jit/metainterp/compile.py
pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/unroll.py
pypy/branch/jit-unroll-loops/pypy/jit/metainterp/test/test_basic.py
Log:
only one entry bridge generated now
Modified: pypy/branch/jit-unroll-loops/pypy/jit/metainterp/compile.py
==============================================================================
--- pypy/branch/jit-unroll-loops/pypy/jit/metainterp/compile.py (original)
+++ pypy/branch/jit-unroll-loops/pypy/jit/metainterp/compile.py Thu Oct 7 19:03:47 2010
@@ -87,6 +87,8 @@
send_loop_to_backend(metainterp_sd, loop, "loop")
send_loop_to_backend(metainterp_sd, loop.preamble, "loop")
insert_loop_token(old_loop_tokens, loop.preamble.token)
+ jitdriver_sd.warmstate.attach_unoptimized_bridge_from_interp(
+ greenkey, loop.preamble.token)
return loop.preamble.token
else:
send_loop_to_backend(metainterp_sd, loop, "loop")
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 Thu Oct 7 19:03:47 2010
@@ -51,6 +51,7 @@
argmap[op.result] = newop.result
descr = newop.getdescr()
if isinstance(descr, ResumeGuardDescr):
+ op.getdescr().rd_snapshot = None #FIXME: In the right place?
descr.rd_numb = None
if newop.getopnum() == rop.JUMP:
@@ -71,6 +72,7 @@
pass
args.append(a)
op.setfailargs(args)
+ op.getdescr().rd_snapshot = None #FIXME: In the right place?
for a in op.getarglist():
if not isinstance(a, Const) and a in self.optimizer.values:
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 Thu Oct 7 19:03:47 2010
@@ -348,12 +348,12 @@
myjitdriver.can_enter_jit(x=x, y=y, res=res)
myjitdriver.jit_merge_point(x=x, y=y, res=res)
res += x * x
- if y<8:
+ if y<16:
x += 1
y -= 1
return res
- res = self.meta_interp(f, [6, 16])
- assert res == 919
+ res = self.meta_interp(f, [6, 32])
+ assert res == 3427
self.check_loop_count(3)
def test_loop_invariant_mul_bridge_maintaining1(self):
@@ -371,9 +371,9 @@
res = self.meta_interp(f, [6, 32])
assert res == 1167
self.check_loop_count(3)
- self.check_loops({'int_lt': 1, 'int_gt': 1,
- 'guard_false': 1, 'guard_true': 1,
- 'int_sub': 2, 'int_mul': 2, 'int_add': 2,
+ self.check_loops({'int_lt': 2, 'int_gt': 1,
+ 'guard_false': 2, 'guard_true': 1,
+ 'int_sub': 3, 'int_mul': 1, 'int_add': 3,
'jump': 3})
def test_loop_invariant_mul_bridge_maintaining2(self):
@@ -416,8 +416,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, 'getfield_gc_pure': 1,
'jump': 2})
More information about the Pypy-commit
mailing list