[pypy-commit] pypy py3.6-asyncgen: Store w_yf on the frame instead of the generator

rlamy pypy.commits at gmail.com
Thu Oct 3 13:15:42 EDT 2019


Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch: py3.6-asyncgen
Changeset: r97717:b1d846ebee27
Date: 2019-10-03 16:52 +0100
http://bitbucket.org/pypy/pypy/changeset/b1d846ebee27/

Log:	Store w_yf on the frame instead of the generator

diff --git a/pypy/interpreter/generator.py b/pypy/interpreter/generator.py
--- a/pypy/interpreter/generator.py
+++ b/pypy/interpreter/generator.py
@@ -11,8 +11,6 @@
 class GeneratorOrCoroutine(W_Root):
     _immutable_fields_ = ['pycode']
 
-    _w_yielded_from = None
-
     def __init__(self, frame, name=None, qualname=None):
         self.space = frame.space
         self.frame = frame     # turned into None when frame_finished_execution
@@ -180,10 +178,10 @@
             return r_uint(0)
 
     def get_delegate(self):
-        return self._w_yielded_from
+        return self.frame.w_yielding_from
 
     def set_delegate(self, w_delegate):
-        self._w_yielded_from = w_delegate
+        self.frame.w_yielding_from = w_delegate
 
     def next_yield_from(self, frame, w_yf, w_inputvalue_or_err):
         """Fetch the next item of the current 'yield from', push it on
diff --git a/pypy/interpreter/pyframe.py b/pypy/interpreter/pyframe.py
--- a/pypy/interpreter/pyframe.py
+++ b/pypy/interpreter/pyframe.py
@@ -68,6 +68,7 @@
     frame_finished_execution = False
     f_generator_wref         = rweakref.dead_ref  # for generators/coroutines
     f_generator_nowref       = None               # (only one of the two attrs)
+    w_yielding_from = None
     last_instr               = -1
     f_backref                = jit.vref_None
 


More information about the pypy-commit mailing list