[pypy-commit] pypy better-jit-hooks: expose a bit more and improve tests

fijal noreply at buildbot.pypy.org
Fri Jan 6 10:06:45 CET 2012


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: better-jit-hooks
Changeset: r51054:967f730f60fb
Date: 2012-01-06 11:06 +0200
http://bitbucket.org/pypy/pypy/changeset/967f730f60fb/

Log:	expose a bit more and improve tests

diff --git a/pypy/module/pypyjit/interp_resop.py b/pypy/module/pypyjit/interp_resop.py
--- a/pypy/module/pypyjit/interp_resop.py
+++ b/pypy/module/pypyjit/interp_resop.py
@@ -1,5 +1,5 @@
 
-from pypy.interpreter.typedef import TypeDef, interp_attrproperty
+from pypy.interpreter.typedef import TypeDef, GetSetProperty
 from pypy.interpreter.baseobjspace import Wrappable
 from pypy.interpreter.gateway import unwrap_spec, interp2app
 from pypy.interpreter.pycode import PyCode
@@ -90,8 +90,16 @@
     def descr_repr(self, space):
         return space.wrap(self.logops.repr_of_resop(self.op))
 
+    def descr_num(self, space):
+        return space.wrap(self.op.getopnum())
+
+    def descr_name(self, space):
+        return space.wrap(self.op.getopname())
+
 WrappedOp.typedef = TypeDef(
     'ResOperation',
     __doc__ = WrappedOp.__doc__,
     __repr__ = interp2app(WrappedOp.descr_repr),
+    name = GetSetProperty(WrappedOp.descr_name),
+    num = GetSetProperty(WrappedOp.descr_num),
 )
diff --git a/pypy/module/pypyjit/test/test_jit_hook.py b/pypy/module/pypyjit/test/test_jit_hook.py
--- a/pypy/module/pypyjit/test/test_jit_hook.py
+++ b/pypy/module/pypyjit/test/test_jit_hook.py
@@ -1,24 +1,36 @@
 
 import py
 from pypy.conftest import gettestobjspace, option
+from pypy.interpreter.gateway import interp2app
 from pypy.interpreter.pycode import PyCode
-from pypy.interpreter.gateway import interp2app
 from pypy.jit.metainterp.history import JitCellToken, ConstInt, ConstPtr
-from pypy.jit.metainterp.resoperation import ResOperation, rop
+from pypy.jit.metainterp.resoperation import rop
 from pypy.jit.metainterp.logger import Logger
 from pypy.rpython.annlowlevel import (cast_instance_to_base_ptr,
                                       cast_base_ptr_to_instance)
 from pypy.rpython.lltypesystem import lltype, llmemory
+from pypy.rpython.lltypesystem.rclass import OBJECT
 from pypy.module.pypyjit.interp_jit import pypyjitdriver
 from pypy.module.pypyjit.policy import pypy_portal
 from pypy.jit.tool.oparser import parse
 from pypy.jit.metainterp.typesystem import llhelper
 from pypy.jit.metainterp.jitprof import ABORT_TOO_LONG
 
+class MockJitDriverSD(object):
+    class warmstate(object):
+        @staticmethod
+        def get_location_str(boxes):
+            ll_code = lltype.cast_opaque_ptr(lltype.Ptr(OBJECT),
+                                             boxes[2].getref_base())
+            pycode = cast_base_ptr_to_instance(PyCode, ll_code)
+            return pycode.co_name
+
 class MockSD(object):
     class cpu(object):
         ts = llhelper
 
+    jitdrivers_sd = [MockJitDriverSD]
+
 class AppTestJitHook(object):
     def setup_class(cls):
         if option.runappdirect:
@@ -62,6 +74,7 @@
         cls.w_on_compile = space.wrap(interp2app(interp_on_compile))
         cls.w_on_compile_bridge = space.wrap(interp2app(interp_on_compile_bridge))
         cls.w_on_abort = space.wrap(interp2app(interp_on_abort))
+        cls.w_int_add_num = space.wrap(rop.INT_ADD)
 
     def test_on_compile(self):
         import pypyjit
@@ -81,7 +94,9 @@
         assert elem[2][1] == 0
         assert elem[2][2] == False
         assert len(elem[3]) == 3
-        assert 'int_add' in elem[3][0]
+        int_add = elem[3][0]
+        assert int_add.name == 'int_add'
+        assert int_add.num == self.int_add_num
         self.on_compile_bridge()
         assert len(all) == 2
         pypyjit.set_compile_hook(None)


More information about the pypy-commit mailing list