[pypy-commit] pypy py3k-memoryview: Fix translation.

mjacob noreply at buildbot.pypy.org
Wed Feb 25 13:38:00 CET 2015


Author: Manuel Jacob <me at manueljacob.de>
Branch: py3k-memoryview
Changeset: r76130:b413d6c02268
Date: 2015-02-25 13:37 +0100
http://bitbucket.org/pypy/pypy/changeset/b413d6c02268/

Log:	Fix translation.

diff --git a/pypy/interpreter/baseobjspace.py b/pypy/interpreter/baseobjspace.py
--- a/pypy/interpreter/baseobjspace.py
+++ b/pypy/interpreter/baseobjspace.py
@@ -25,6 +25,8 @@
                                       reds=['items', 'w_iterator'])
 
 
+# It seems there's no way to do it without top-level-functions.
+
 @specialize.memo()
 def _does_override_buffer_w(type):
     return type.buffer_w != W_Root.buffer_w
@@ -33,6 +35,18 @@
 def _does_override_buffer_w_ex(type):
     return type.buffer_w_ex != W_Root.buffer_w_ex
 
+ at specialize.argtype(0)
+def W_Root_buffer_w(self, space, flags):
+    if _does_override_buffer_w_ex(self.__class__):
+        return self.buffer_w_ex(space, flags)[0]
+    return self._buffer(space, flags).buffer_w(space, flags)
+
+ at specialize.argtype(0)
+def W_Root_buffer_w_ex(self, space, flags):
+    if _does_override_buffer_w(self.__class__):
+        return self.buffer_w(space, flags), 'B', 1
+    return self._buffer(space, flags).buffer_w_ex(space, flags)
+
 
 class W_Root(object):
     """This is the abstract root class of all wrapped objects that live
@@ -203,17 +217,11 @@
     def immutable_unique_id(self, space):
         return None
 
-    @specialize.argtype(0)
     def buffer_w(self, space, flags):
-        if _does_override_buffer_w_ex(self.__class__):
-            return self.buffer_w_ex(space, flags)[0]
-        return self._buffer(space, flags).buffer_w(space, flags)
+        return W_Root_buffer_w(self, space, flags)
 
-    @specialize.argtype(0)
     def buffer_w_ex(self, space, flags):
-        if _does_override_buffer_w(self.__class__):
-            return self.buffer_w(space, flags), 'B', 1
-        return self._buffer(space, flags).buffer_w_ex(space, flags)
+        return W_Root_buffer_w_ex(self, space, flags)
 
     def _buffer(self, space, flags):
         w_impl = space.lookup(self, '__buffer__')


More information about the pypy-commit mailing list