[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