[pypy-svn] r64542 - pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/test

antocuni at codespeak.net antocuni at codespeak.net
Tue Apr 21 19:16:58 CEST 2009


Author: antocuni
Date: Tue Apr 21 19:16:56 2009
New Revision: 64542

Modified:
   pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/test/test_basic.py
   pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/test/test_loop.py
Log:
(antocuni, arigo) port test_loop to ootype, and skip the failing ones


Modified: pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/test/test_basic.py
==============================================================================
--- pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/test/test_basic.py	(original)
+++ pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/test/test_basic.py	Tue Apr 21 19:16:56 2009
@@ -8,13 +8,14 @@
 from pypy.rlib.rarithmetic import ovfcheck
 from pypy.jit.metainterp.simple_optimize import Optimizer as SimpleOptimizer
 from pypy.jit.metainterp.typesystem import LLTypeHelper, OOTypeHelper
+from pypy.rpython.lltypesystem import lltype
+from pypy.rpython.ootypesystem import ootype
 
 def get_metainterp(func, values, CPUClass, type_system, policy,
                    listops=False):
     from pypy.annotation.policy import AnnotatorPolicy
     from pypy.annotation.model import lltype_to_annotation
     from pypy.rpython.test.test_llinterp import gengraph
-    from pypy.rpython.lltypesystem import lltype
 
     rtyper = support.annotate(func, values, type_system=type_system)
 
@@ -96,11 +97,58 @@
     CPUClass = runner.LLtypeCPU
     ts = LLTypeHelper()
 
+    @staticmethod
+    def Ptr(T):
+        return lltype.Ptr(T)
+
+    @staticmethod
+    def GcStruct(name, *fields, **kwds):
+        S = lltype.GcStruct(name, *fields, **kwds)
+        return S
+
+    malloc = staticmethod(lltype.malloc)
+    nullptr = staticmethod(lltype.nullptr)
+
+    @staticmethod
+    def malloc_immortal(T):
+        return lltype.malloc(T, immortal=True)
+
+    def _get_NODE(self):
+        NODE = lltype.GcForwardReference()
+        NODE.become(lltype.GcStruct('NODE', ('value', lltype.Signed),
+                                            ('next', lltype.Ptr(NODE))))
+        return NODE
+    
 class OOJitMixin(JitMixin):
     type_system = 'ootype'
     CPUClass = runner.OOtypeCPU
     ts = OOTypeHelper()
 
+    @staticmethod
+    def Ptr(T):
+        return T
+
+    @staticmethod
+    def GcStruct(name, *fields, **kwds):
+        if 'hints' in kwds:
+            kwds['_hints'] = kwds['hints']
+            del kwds['hints']
+        I = ootype.Instance(name, ootype.ROOT, dict(fields), **kwds)
+        return I
+
+    malloc = staticmethod(ootype.new)
+    nullptr = staticmethod(ootype.null)
+
+    @staticmethod
+    def malloc_immortal(T):
+        return ootype.new(T)
+
+    def _get_NODE(self):
+        NODE = ootype.Instance('NODE', ootype.ROOT, {})
+        NODE._add_fields({'value': ootype.Signed,
+                          'next': NODE})
+        return NODE
+
 
 class BasicTests:    
 

Modified: pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/test/test_loop.py
==============================================================================
--- pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/test/test_loop.py	(original)
+++ pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/test/test_loop.py	Tue Apr 21 19:16:56 2009
@@ -2,18 +2,19 @@
 from pypy.rlib.jit import JitDriver
 from pypy.jit.metainterp.warmspot import ll_meta_interp, get_stats
 from pypy.rpython.lltypesystem import lltype
-from pypy.jit.metainterp.test.test_basic import LLJitMixin
+from pypy.jit.metainterp.test.test_basic import LLJitMixin, OOJitMixin
 from pypy.jit.metainterp.policy import StopAtXPolicy
 from pypy.jit.metainterp.resoperation import rop
 from pypy.jit.metainterp import history
 
-class TestLoop(LLJitMixin):
+class LoopTest:
     specialize = False
 
     def meta_interp(self, f, args, policy=None):
         return ll_meta_interp(f, args, specialize=self.specialize,
                               policy=policy,
-                              CPUClass=self.CPUClass)
+                              CPUClass=self.CPUClass,
+                              type_system=self.type_system)
 
     def test_simple_loop(self):
         myjitdriver = JitDriver(greens = [], reds = ['x', 'y', 'res'])
@@ -179,9 +180,7 @@
 
     def test_interp_many_paths(self):
         myjitdriver = JitDriver(greens = ['i'], reds = ['x', 'node'])
-        NODE = lltype.GcForwardReference()
-        NODE.become(lltype.GcStruct('NODE', ('value', lltype.Signed),
-                                            ('next', lltype.Ptr(NODE))))
+        NODE = self._get_NODE()
         bytecode = "xxxxxxxb"
         def f(node):
             x = 0
@@ -202,9 +201,9 @@
                 i += 1
             return x
 
-        node1 = lltype.nullptr(NODE)
+        node1 = self.nullptr(NODE)
         for i in range(300):
-            prevnode = lltype.malloc(NODE)
+            prevnode = self.malloc(NODE)
             prevnode.value = pow(47, i, 199)
             prevnode.next = node1
             node1 = prevnode
@@ -536,3 +535,16 @@
                 some_fn(Stuff(n), k, z)
 
         res = self.meta_interp(f, [200])
+
+class TestOOtype(LoopTest, OOJitMixin):
+
+    def skip(self):
+        py.test.skip('in progress')
+        
+    test_interp_many_paths = skip
+    test_loop_unicode = skip
+    test_outer_and_inner_loop = skip
+
+
+class TestLoop(LoopTest, LLJitMixin): # XXX change name later
+    pass



More information about the Pypy-commit mailing list