[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