Author: Maciej Fijalkowski <[email protected]>
Branch: better-jit-hooks
Changeset: r51056:0002a1e634e4
Date: 2012-01-06 11:26 +0200
http://bitbucket.org/pypy/pypy/changeset/0002a1e634e4/
Log: hopefully (ugly) fix translation.
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
@@ -3,13 +3,13 @@
from pypy.interpreter.baseobjspace import Wrappable
from pypy.interpreter.gateway import unwrap_spec, interp2app
from pypy.interpreter.pycode import PyCode
+from pypy.interpreter.error import OperationError
from pypy.rpython.lltypesystem import lltype
from pypy.rpython.annlowlevel import cast_base_ptr_to_instance
from pypy.rpython.lltypesystem.rclass import OBJECT
-from pypy.jit.metainterp.resoperation import rop
+from pypy.jit.metainterp.resoperation import rop, ResOperation
from pypy.rlib.nonconst import NonConstant
-
class Cache(object):
in_recursion = False
@@ -79,23 +79,27 @@
def wrap_oplist(space, logops, operations, ops_offset):
return [WrappedOp(op, ops_offset, logops) for op in operations]
-# annotation hint
-
-def dummy_repr_for_resop(op):
- return NonConstant('stuff')
+@unwrap_spec(no=int)
+def new_resop(space, w_tp, no):
+ # this is mostly an annotation hint
+ if NonConstant(True):
+ raise OperationError(space.w_ValueError,
+ space.wrap("for annotation only"))
+ return space.wrap(WrappedOp(ResOperation(no, [], None), -1))
class WrappedOp(Wrappable):
""" A class representing a single ResOperation, wrapped nicely
"""
- repr_for_resop = dummy_repr_for_resop
-
- def __init__(self, op, ops_offset, logops):
+ def __init__(self, op, ops_offset, logops=None):
self.op = op
self.offset = ops_offset[op]
- self.repr_of_resop = logops.repr_of_resop
+ if logops is not None:
+ self.repr_of_resop = logops.repr_of_resop(op) # XXX fix this,
horribly inefficient
+ else:
+ self.repr_of_resop = "repr"
def descr_repr(self, space):
- return space.wrap(self.repr_of_resop(self.op))
+ return space.wrap(self.repr_of_resop)
def descr_num(self, space):
return space.wrap(self.op.getopnum())
@@ -105,8 +109,10 @@
WrappedOp.typedef = TypeDef(
'ResOperation',
+ __new__ = interp2app(new_resop),
__doc__ = WrappedOp.__doc__,
__repr__ = interp2app(WrappedOp.descr_repr),
name = GetSetProperty(WrappedOp.descr_name),
num = GetSetProperty(WrappedOp.descr_num),
)
+WrappedOp.acceptable_as_base_class = False
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit