[pypy-svn] r64967 - pypy/branch/pyjitpl5/pypy/jit/backend/test
fijal at codespeak.net
fijal at codespeak.net
Sat May 2 04:53:34 CEST 2009
Author: fijal
Date: Sat May 2 04:53:28 2009
New Revision: 64967
Modified:
pypy/branch/pyjitpl5/pypy/jit/backend/test/test_random.py
Log:
improve, disable jumps so far.
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 Sat May 2 04:53:28 2009
@@ -319,6 +319,7 @@
startvars = [BoxInt(r.random_integer())
for i in range(demo_conftest.option.n_vars)]
self.startvars = startvars
+ self.values = [var.value for var in startvars]
self.prebuilt_ptr_consts = []
self.r = r
self.build_random_loop(cpu, BuilderClass, r, startvars)
@@ -375,11 +376,10 @@
def run_loop(self):
cpu = self.builder.cpu
- valueboxes = [BoxInt(box.value) for box in self.startvars]
self.clear_state()
- for i, v in enumerate(valueboxes):
- cpu.set_future_value_int(i, v.value)
+ for i, v in enumerate(self.values):
+ cpu.set_future_value_int(i, v)
op = cpu.execute_operations(self.loop)
assert op is self.should_fail_by
for i, v in enumerate(op.args):
@@ -400,33 +400,44 @@
bridge_builder = self.builder.__class__(self.builder.cpu, subloop,
op.args[:])
self.generate_ops(bridge_builder, r, subloop, op.args[:])
- k = r.random()
- subset = []
- num = int(k * len(bridge_builder.intvars))
- for i in range(num):
- subset.append(r.choice(bridge_builder.intvars))
- r.shuffle(subset)
- if len(subset) == 0:
- return False
- if r.random() < 0.1:
+ if 0 and r.random() < 0.1:
+ k = r.random()
+ subset = []
+ num = int(k * len(bridge_builder.intvars))
+ for i in range(num):
+ subset.append(r.choice(bridge_builder.intvars))
+ r.shuffle(subset)
+ if len(subset) == 0:
+ return False
+ args = [x.clonebox() for x in subset]
jump_target = RandomLoop(self.builder.cpu, self.builder.__class__,
- r)
- fail_op = ResOperation(rop.JUMP, subset, None)
- fail_op.jump_target = jump_target.loop
- else:
- fail_op = ResOperation(rop.FAIL, subset, None)
- guard_op.suboperations.append(fail_op)
+ r, args)
+ jump_op = ResOperation(rop.JUMP, subset, None)
+ jump_op.jump_target = jump_target.loop
+ self.should_fail_by = jump_target.should_fail_by
+ self.expected = jump_target.expected
+ if self.guard_op is None:
+ guard_op.suboperations[-1] = jump_op
+ else:
+ self.guard_op.suboperations[-1] = jump_op
+ self.guard_op = jump_target.guard_op
+ self.prebuilt_ptr_consts += jump_target.prebuilt_ptr_consts
+ if r.random() < .05:
+ return False
+ self.builder.cpu.compile_operations(self.loop)
return True
def check_random_function(cpu, BuilderClass, r):
loop = RandomLoop(cpu, BuilderClass, r)
while True:
loop.run_loop()
- print ' # passed.'
- print
if loop.guard_op is not None:
if not loop.build_bridge():
break
+ else:
+ break
+ print ' # passed.'
+ print
def test_random_function(BuilderClass=OperationBuilder):
r = Random()
More information about the Pypy-commit
mailing list