Author: Ronan Lamy <ronan.l...@gmail.com>
Branch: py3.5
Changeset: r93453:cf79d090d371
Date: 2017-12-17 22:07 +0000
http://bitbucket.org/pypy/pypy/changeset/cf79d090d371/

Log:    Fix test_gr_frame in test_greenlet.py

diff --git a/lib_pypy/greenlet.py b/lib_pypy/greenlet.py
--- a/lib_pypy/greenlet.py
+++ b/lib_pypy/greenlet.py
@@ -127,7 +127,7 @@
             return None
         if self.__main:
             self = getcurrent()
-        f = _continulet.__reduce__(self)[2][0]
+        f = self._get_frame()
         if not f:
             return None
         return f.f_back.f_back.f_back   # go past start(), __switch(), switch()
diff --git a/pypy/module/_continuation/interp_continuation.py 
b/pypy/module/_continuation/interp_continuation.py
--- a/pypy/module/_continuation/interp_continuation.py
+++ b/pypy/module/_continuation/interp_continuation.py
@@ -131,6 +131,15 @@
         from pypy.module._continuation import interp_pickle
         interp_pickle.setstate(self, w_args)
 
+    def descr_get_frame(self, space):
+        if self.sthread is None:
+            w_frame = space.w_False
+        elif self.sthread.is_empty_handle(self.h):
+            w_frame = space.w_None
+        else:
+            w_frame = self.bottomframe
+        return w_frame
+
 
 def W_Continulet___new__(space, w_subtype, __args__):
     r = space.allocate_instance(W_Continulet, w_subtype)
@@ -153,6 +162,7 @@
     is_pending  = interp2app(W_Continulet.descr_is_pending),
     __reduce__  = interp2app(W_Continulet.descr__reduce__),
     __setstate__= interp2app(W_Continulet.descr__setstate__),
+    _get_frame=interp2app(W_Continulet.descr_get_frame)
     )
 
 # ____________________________________________________________
diff --git a/pypy/module/_continuation/interp_pickle.py 
b/pypy/module/_continuation/interp_pickle.py
--- a/pypy/module/_continuation/interp_pickle.py
+++ b/pypy/module/_continuation/interp_pickle.py
@@ -18,12 +18,7 @@
     # __getnewargs__ or __getstate__ defined in the subclass, etc.
     # Doing the right thing looks involved, though...
     space = self.space
-    if self.sthread is None:
-        w_frame = space.w_False
-    elif self.sthread.is_empty_handle(self.h):
-        w_frame = space.w_None
-    else:
-        w_frame = self.bottomframe
+    w_frame = self.descr_get_frame(space)
     w_continulet_type = space.type(self)
     w_dict = self.getdict(space) or space.w_None
     args = [getunpickle(space),
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to