[pypy-svn] r66888 - pypy/branch/pyjitpl5/pypy/jit/backend/test

fijal at codespeak.net fijal at codespeak.net
Tue Aug 18 12:34:42 CEST 2009


Author: fijal
Date: Tue Aug 18 12:34:41 2009
New Revision: 66888

Modified:
   pypy/branch/pyjitpl5/pypy/jit/backend/test/test_ll_random.py
   pypy/branch/pyjitpl5/pypy/jit/backend/test/test_random.py
Log:
(pedronis, fijal) Fix for bridges not inheriting correct class caches


Modified: pypy/branch/pyjitpl5/pypy/jit/backend/test/test_ll_random.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/backend/test/test_ll_random.py	(original)
+++ pypy/branch/pyjitpl5/pypy/jit/backend/test/test_ll_random.py	Tue Aug 18 12:34:41 2009
@@ -20,6 +20,13 @@
         self.structure_types_and_vtables = []
         self.class_sizes_cache = []
 
+    def fork(self, cpu, loop, vars):
+        fork = test_random.OperationBuilder.fork(self, cpu, loop, vars)
+        fork.structure_types = self.structure_types
+        fork.structure_types_and_vtables = self.structure_types_and_vtables
+        fork.class_sizes_cache = self.class_sizes_cache
+        return fork
+
     def get_structptr_var(self, r, must_have_vtable=False, type=lltype.Struct):
         while True:
             ptrvars = [(v, S) for (v, S) in self.ptrvars

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	Tue Aug 18 12:34:41 2009
@@ -15,7 +15,7 @@
     def __init__(self, subops):
         self.operations = subops
 
-class OperationBuilder:
+class OperationBuilder(object):
     def __init__(self, cpu, loop, vars):
         self.cpu = cpu
         self.loop = loop
@@ -26,6 +26,11 @@
         self.should_fail_by = None
         self.counter = 0
 
+    def fork(self, cpu, loop, vars):
+        fork = self.__class__(cpu, loop, vars)
+        fork.prebuilt_ptr_consts = self.prebuilt_ptr_consts
+        return fork
+
     def do(self, opnum, argboxes, descr=None):
         v_result = execute(self.cpu, opnum, argboxes, descr)
         if isinstance(v_result, ConstInt):
@@ -378,7 +383,7 @@
 class RandomLoop(object):
     dont_generate_more = False
     
-    def __init__(self, cpu, BuilderClass, r, startvars=None):
+    def __init__(self, cpu, builder_factory, r, startvars=None):
         self.cpu = cpu
         if startvars is None:
             startvars = [BoxInt(r.random_integer())
@@ -387,15 +392,15 @@
         self.values = [var.value for var in startvars]
         self.prebuilt_ptr_consts = []
         self.r = r
-        self.build_random_loop(cpu, BuilderClass, r, startvars)
+        self.build_random_loop(cpu, builder_factory, r, startvars)
         
-    def build_random_loop(self, cpu, BuilderClass, r, startvars):
+    def build_random_loop(self, cpu, builder_factory, r, startvars):
 
         loop = TreeLoop('test_random_function')
         loop.inputargs = startvars[:]
         loop.operations = []
 
-        builder = BuilderClass(cpu, loop, startvars[:])
+        builder = builder_factory(cpu, loop, startvars[:])
         self.generate_ops(builder, r, loop, startvars)
         self.builder = builder
         cpu.compile_operations(loop)
@@ -493,15 +498,15 @@
         subloop = DummyLoop(guard_op.suboperations)
         if guard_op.is_guard_exception():
             guard_op.suboperations.append(exc_handling(guard_op))
-        bridge_builder = self.builder.__class__(self.builder.cpu, subloop,
-                                                op.args[:])
+        bridge_builder = self.builder.fork(self.builder.cpu, subloop,
+                                           op.args[:])
         self.generate_ops(bridge_builder, r, subloop, op.args[:])
         if r.random() < 0.1:
             subset = bridge_builder.subset_of_intvars(r)
             if len(subset) == 0:
                 return False
             args = [x.clonebox() for x in subset]
-            jump_target = RandomLoop(self.builder.cpu, self.builder.__class__,
+            jump_target = RandomLoop(self.builder.cpu, self.builder.fork,
                                      r, args)
             self.cpu.compile_operations(jump_target.loop)
             jump_op = ResOperation(rop.JUMP, subset, None)
@@ -540,7 +545,7 @@
     r = Random()
     cpu = get_cpu()
     if demo_conftest.option.repeat == -1:
-        while 1: 
+        while 1:
             check_random_function(cpu, BuilderClass, r)
     else:
         for i in range(demo_conftest.option.repeat):



More information about the Pypy-commit mailing list