[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