Author: Carl Friedrich Bolz <[email protected]>
Branch: unpickle-coroutine-trampoline
Changeset: r44129:273826c0e576
Date: 2011-05-13 15:21 +0200
http://bitbucket.org/pypy/pypy/changeset/273826c0e576/
Log: more things working by doing nothing
diff --git a/pypy/module/_stackless/interp_coroutine.py
b/pypy/module/_stackless/interp_coroutine.py
--- a/pypy/module/_stackless/interp_coroutine.py
+++ b/pypy/module/_stackless/interp_coroutine.py
@@ -205,8 +205,6 @@
if isinstance(thunk, _AppThunk):
w_args, w_kwds = thunk.args.topacked()
w_thunk = nt([thunk.w_func, w_args, w_kwds])
- elif isinstance(thunk, _ResumeThunk):
- raise NotImplementedError
else:
w_thunk = space.w_None
diff --git a/pypy/module/_stackless/test/test_pickle.py
b/pypy/module/_stackless/test/test_pickle.py
--- a/pypy/module/_stackless/test/test_pickle.py
+++ b/pypy/module/_stackless/test/test_pickle.py
@@ -84,6 +84,43 @@
finally:
del sys.modules['mod']
+ def test_pickle_again(self):
+
+ import new, sys
+
+ mod = new.module('mod')
+ sys.modules['mod'] = mod
+ try:
+ exec '''
+output = []
+import _stackless
+def f(coro, n, x):
+ if n == 0:
+ coro.switch()
+ return
+ f(coro, n-1, 2*x)
+ output.append(x)
+
+def example():
+ main_coro = _stackless.coroutine.getcurrent()
+ sub_coro = _stackless.coroutine()
+ sub_coro.bind(f, main_coro, 5, 1)
+ sub_coro.switch()
+
+ import pickle
+ pckl = pickle.dumps(sub_coro)
+ new_coro = pickle.loads(pckl)
+ pckl = pickle.dumps(new_coro)
+ newer_coro = pickle.loads(pckl)
+
+ newer_coro.switch()
+
+example()
+assert output == [16, 8, 4, 2, 1]
+''' in mod.__dict__
+ finally:
+ del sys.modules['mod']
+
def test_kwargs(self):
import new, sys
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit