[pypy-svn] r67986 - in pypy/branch/remove-fail/pypy/jit/metainterp: . test
arigo at codespeak.net
arigo at codespeak.net
Tue Sep 29 16:59:31 CEST 2009
Author: arigo
Date: Tue Sep 29 16:59:30 2009
New Revision: 67986
Modified:
pypy/branch/remove-fail/pypy/jit/metainterp/logger.py
pypy/branch/remove-fail/pypy/jit/metainterp/pyjitpl.py
pypy/branch/remove-fail/pypy/jit/metainterp/test/test_logger.py
pypy/branch/remove-fail/pypy/jit/metainterp/test/test_loop.py
pypy/branch/remove-fail/pypy/jit/metainterp/test/test_recursive.py
Log:
Fixes. Now all tests in metainterp pass.
Modified: pypy/branch/remove-fail/pypy/jit/metainterp/logger.py
==============================================================================
--- pypy/branch/remove-fail/pypy/jit/metainterp/logger.py (original)
+++ pypy/branch/remove-fail/pypy/jit/metainterp/logger.py Tue Sep 29 16:59:30 2009
@@ -70,9 +70,11 @@
res = ""
if op.descr is not None:
args += ', descr=' + self.repr_of_descr(op.descr)
+ if op.is_guard() and op.fail_args is not None:
+ fail_args = ' [' + ", ".join([self.repr_of_arg(memo, arg)
+ for arg in op.fail_args]) + ']'
+ else:
+ fail_args = ''
self.log_stream.write(pre + res + op.getopname() +
- '(' + args + ')\n')
- if op.is_guard():
- self.log_operations(None, op.suboperations, memo,
- indent=indent+2)
+ '(' + args + ')' + fail_args + '\n')
self.log_stream.flush()
Modified: pypy/branch/remove-fail/pypy/jit/metainterp/pyjitpl.py
==============================================================================
--- pypy/branch/remove-fail/pypy/jit/metainterp/pyjitpl.py (original)
+++ pypy/branch/remove-fail/pypy/jit/metainterp/pyjitpl.py Tue Sep 29 16:59:30 2009
@@ -1565,8 +1565,7 @@
elif boxtype == history.FLOAT:
box = history.BoxFloat(cpu.get_latest_value_float(i))
else:
- assert False, "should not see %r in guard_failure.args" % (
- oldbox,)
+ assert False, "bad box type: num=%d" % ord(boxtype)
inputargs.append(box)
return inputargs
Modified: pypy/branch/remove-fail/pypy/jit/metainterp/test/test_logger.py
==============================================================================
--- pypy/branch/remove-fail/pypy/jit/metainterp/test/test_logger.py (original)
+++ pypy/branch/remove-fail/pypy/jit/metainterp/test/test_logger.py Tue Sep 29 16:59:30 2009
@@ -25,9 +25,9 @@
class TestLogger(object):
ts = llhelper
- def reparse(self, inp, namespace=None):
- """ parse loop once, then log it and parse again,
- return both
+ def reparse(self, inp, namespace=None, check_equal=True):
+ """ parse loop once, then log it and parse again.
+ Checks that we get the same thing.
"""
if namespace is None:
namespace = {}
@@ -35,6 +35,9 @@
logger = Logger(self.ts)
output = logger.log_loop(loop, namespace)
oloop = pure_parse(output, namespace=namespace)
+ if check_equal:
+ equaloplists(loop.operations, oloop.operations)
+ assert oloop.inputargs == loop.inputargs
return loop, oloop
def test_simple(self):
@@ -44,9 +47,7 @@
i8 = int_add(i6, 3)
jump(i0, i8, i6, p3, p4, p5)
'''
- loop, oloop = self.reparse(inp)
- equaloplists(oloop.operations, loop.operations)
- assert oloop.inputargs == loop.inputargs
+ self.reparse(inp)
def test_descr(self):
inp = '''
@@ -54,27 +55,22 @@
setfield_gc(p0, 3, descr=somedescr)
'''
somedescr = Descr()
- loop, oloop = self.reparse(inp, namespace=locals())
- equaloplists(loop.operations, oloop.operations)
+ self.reparse(inp, namespace=locals())
def test_guard(self):
inp = '''
[i0]
- guard_true(i0)
- i1 = int_add(i0, 1)
- guard_true(i1)
- fail(i1)
- fail(i1)
- fail(i0)
+ i1 = int_add(i0, 1)
+ guard_true(i0) [i0, i1]
+ finish(i1)
'''
- loop, oloop = self.reparse(inp)
- equaloplists(loop.operations, oloop.operations)
+ self.reparse(inp)
def test_debug_merge_point(self):
inp = '''
[]
debug_merge_point("info")
'''
- loop, oloop = self.reparse(inp)
+ loop, oloop = self.reparse(inp, check_equal=False)
+ assert loop.operations[0].args[0]._get_str() == 'info'
assert oloop.operations[0].args[0]._get_str() == 'info'
-
Modified: pypy/branch/remove-fail/pypy/jit/metainterp/test/test_loop.py
==============================================================================
--- pypy/branch/remove-fail/pypy/jit/metainterp/test/test_loop.py (original)
+++ pypy/branch/remove-fail/pypy/jit/metainterp/test/test_loop.py Tue Sep 29 16:59:30 2009
@@ -173,8 +173,8 @@
if self.basic:
found = 0
for op in get_stats().loops[0]._all_operations():
- if op.getopname() == 'fail':
- liveboxes = op.args
+ if op.getopname() == 'guard_true':
+ liveboxes = op.fail_args
assert len(liveboxes) == 2 # x, y (in some order)
assert isinstance(liveboxes[0], history.BoxInt)
assert isinstance(liveboxes[1], history.BoxInt)
Modified: pypy/branch/remove-fail/pypy/jit/metainterp/test/test_recursive.py
==============================================================================
--- pypy/branch/remove-fail/pypy/jit/metainterp/test/test_recursive.py (original)
+++ pypy/branch/remove-fail/pypy/jit/metainterp/test/test_recursive.py Tue Sep 29 16:59:30 2009
@@ -344,8 +344,8 @@
for loop in get_stats().loops:
assert len(loop.operations) <= length + 5 # because we only check once per metainterp bytecode
for op in loop.operations:
- if op.is_guard():
- assert len(op.suboperations) <= length + 5
+ if op.is_guard() and hasattr(op.descr, '_debug_suboperations'):
+ assert len(op.descr._debug_suboperations) <= length + 5
def test_inline_trace_limit(self):
myjitdriver = JitDriver(greens=[], reds=['n'])
More information about the Pypy-commit
mailing list