Author: Armin Rigo <[email protected]>
Branch: stmgc-c7
Changeset: r73999:abb8d87229ef
Date: 2014-10-17 16:46 +0200
http://bitbucket.org/pypy/pypy/changeset/abb8d87229ef/
Log: Add a light finalizer test (not passing yet)
diff --git a/rpython/translator/backendopt/finalizer.py
b/rpython/translator/backendopt/finalizer.py
--- a/rpython/translator/backendopt/finalizer.py
+++ b/rpython/translator/backendopt/finalizer.py
@@ -18,7 +18,7 @@
"""
ok_operations = ['ptr_nonzero', 'ptr_eq', 'ptr_ne', 'free', 'same_as',
'direct_ptradd', 'force_cast', 'track_alloc_stop',
- 'raw_free']
+ 'raw_free', 'debug_print']
def analyze_light_finalizer(self, graph):
result = self.analyze_direct_call(graph)
diff --git a/rpython/translator/stm/test/test_ztranslated.py
b/rpython/translator/stm/test/test_ztranslated.py
--- a/rpython/translator/stm/test/test_ztranslated.py
+++ b/rpython/translator/stm/test/test_ztranslated.py
@@ -523,11 +523,29 @@
X()
def main(argv):
+ x1 = X()
g()
rgc.collect()
print 'destructors called:', g_counter.num
+ objectmodel.keepalive_until_here(x1)
return 0
t, cbuilder = self.compile(main)
data = cbuilder.cmdexec('')
assert 'destructors called: 1\n' in data
+
+ def test_light_finalizer(self):
+ class X:
+ @rgc.must_be_light_finalizer
+ def __del__(self):
+ debug_print("<del>")
+ def g():
+ X()
+ def main(argv):
+ g()
+ rgc.collect(0)
+ return 0
+
+ t, cbuilder = self.compile(main)
+ data, err = cbuilder.cmdexec('', err=True)
+ assert '<del>' in err
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit