[pypy-commit] pypy gc-del: Fix generator.

arigo noreply at buildbot.pypy.org
Fri Apr 26 12:11:55 CEST 2013


Author: Armin Rigo <arigo at tunes.org>
Branch: gc-del
Changeset: r63634:a242524f2ed4
Date: 2013-04-26 12:11 +0200
http://bitbucket.org/pypy/pypy/changeset/a242524f2ed4/

Log:	Fix generator.

diff --git a/pypy/interpreter/generator.py b/pypy/interpreter/generator.py
--- a/pypy/interpreter/generator.py
+++ b/pypy/interpreter/generator.py
@@ -13,6 +13,7 @@
         self.frame = frame     # turned into None when frame_finished_execution
         self.pycode = frame.pycode
         self.running = False
+        self.register_finalizer()
 
     def descr__repr__(self, space):
         code_name = self.pycode.co_name
@@ -142,7 +143,7 @@
         code_name = self.pycode.co_name
         return space.wrap(code_name)
 
-    def __del__(self):
+    def invoke_finalizer(self):
         # Only bother enqueuing self to raise an exception if the frame is
         # still not finished and finally or except blocks are present.
         self.clear_all_weakrefs()
@@ -150,9 +151,9 @@
             block = self.frame.lastblock
             while block is not None:
                 if not isinstance(block, LoopBlock):
-                    self.enqueue_for_destruction(self.space,
-                                                 GeneratorIterator.descr_close,
-                                                 "interrupting generator of ")
+                    self.finalizer_perform(self.space,
+                                           "interrupting generator of ",
+                                           self.descr_close)
                     break
                 block = block.previous
 


More information about the pypy-commit mailing list