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

Reply via email to