[pypy-svn] r64962 - pypy/branch/pyjitpl5/pypy/jit/backend/test
fijal at codespeak.net
fijal at codespeak.net
Fri May 1 23:47:37 CEST 2009
Author: fijal
Date: Fri May 1 23:47:37 2009
New Revision: 64962
Modified:
pypy/branch/pyjitpl5/pypy/jit/backend/test/test_random.py
Log:
make test_random jump to some previously generated loop from time to time
Modified: pypy/branch/pyjitpl5/pypy/jit/backend/test/test_random.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/backend/test/test_random.py (original)
+++ pypy/branch/pyjitpl5/pypy/jit/backend/test/test_random.py Fri May 1 23:47:37 2009
@@ -7,6 +7,8 @@
from pypy.jit.metainterp.executor import execute
from pypy.jit.metainterp.resoperation import opname
+allloops = []
+
class DummyLoop(object):
def __init__(self, subops):
self.operations = subops
@@ -346,6 +348,7 @@
if should_fail_by is not None:
guard_op = loop.operations[builder.should_fail_by_num]
all_builders = [builder]
+ dont_check_result = False
while True:
builder.print_loop()
@@ -366,6 +369,9 @@
for i, v in enumerate(valueboxes):
cpu.set_future_value_int(i, v.value)
op = cpu.execute_operations(loop)
+
+ if dont_check_result:
+ break
assert op.args == endvars
if should_fail_by is not None:
assert op is should_fail_by
@@ -392,6 +398,14 @@
for i in range(num):
subset.append(r.choice(bridge_builder.intvars))
r.shuffle(subset)
+ if r.random() < 0.1 and allloops:
+ jump_target = r.choice(allloops)
+ args = op.args[:len(jump_target.inputargs)]
+ while len(args) < len(jump_target.inputargs):
+ args.append(args[-1])
+ fail_op = ResOperation(rop.JUMP, args, None)
+ fail_op.jump_target = jump_target
+ dont_check_result = True
fail_op = ResOperation(rop.FAIL, subset, None)
guard_op.suboperations.append(fail_op)
all_builders.append(bridge_builder)
@@ -405,6 +419,8 @@
print ' # passed.'
print
+ allloops.append(loop)
+
def test_random_function(BuilderClass=OperationBuilder):
r = Random()
if demo_conftest.option.repeat == -1:
More information about the Pypy-commit
mailing list