[pypy-svn] r64968 - pypy/branch/pyjitpl5/pypy/jit/backend/test
fijal at codespeak.net
fijal at codespeak.net
Sat May 2 05:21:31 CEST 2009
Author: fijal
Date: Sat May 2 05:21:28 2009
New Revision: 64968
Modified:
pypy/branch/pyjitpl5/pypy/jit/backend/test/test_random.py
Log:
generate at most one jump
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 05:21:28 2009
@@ -313,6 +313,8 @@
# ____________________________________________________________
class RandomLoop(object):
+ dont_generate_more = False
+
def __init__(self, cpu, BuilderClass, r, startvars=None):
self.cpu = cpu
if startvars is None:
@@ -390,6 +392,8 @@
)
def build_bridge(self):
+ if self.dont_generate_more:
+ return False
r = self.r
guard_op = self.guard_op
guard_op.suboperations = []
@@ -400,7 +404,7 @@
bridge_builder = self.builder.__class__(self.builder.cpu, subloop,
op.args[:])
self.generate_ops(bridge_builder, r, subloop, op.args[:])
- if 0 and r.random() < 0.1:
+ if r.random() < 0.1:
k = r.random()
subset = []
num = int(k * len(bridge_builder.intvars))
@@ -412,6 +416,7 @@
args = [x.clonebox() for x in subset]
jump_target = RandomLoop(self.builder.cpu, self.builder.__class__,
r, args)
+ self.cpu.compile_operations(jump_target.loop)
jump_op = ResOperation(rop.JUMP, subset, None)
jump_op.jump_target = jump_target.loop
self.should_fail_by = jump_target.should_fail_by
@@ -422,6 +427,7 @@
self.guard_op.suboperations[-1] = jump_op
self.guard_op = jump_target.guard_op
self.prebuilt_ptr_consts += jump_target.prebuilt_ptr_consts
+ self.dont_generate_more = True
if r.random() < .05:
return False
self.builder.cpu.compile_operations(self.loop)
More information about the Pypy-commit
mailing list