Author: Nicolas Truessel <[email protected]>
Branch: quad-color-gc
Changeset: r86983:30fd102afbe9
Date: 2016-09-10 15:35 +0200
http://bitbucket.org/pypy/pypy/changeset/30fd102afbe9/
Log: Add teardown method to codegen
diff --git a/rpython/translator/c/gc.py b/rpython/translator/c/gc.py
--- a/rpython/translator/c/gc.py
+++ b/rpython/translator/c/gc.py
@@ -40,6 +40,9 @@
def gc_startup_code(self):
return []
+ def gc_teardown_code(self):
+ return []
+
def struct_setup(self, structdefnode, rtti):
return None
@@ -477,6 +480,12 @@
for i in s:
yield i
+ def gc_teardown_code(self):
+ yield 'qcgc_destroy();'
+ s = list(super(QcgcFrameworkGcPolicy, self).gc_teardown_code())
+ for i in s:
+ yield i
+
name_to_gcpolicy = {
'boehm': BoehmGcPolicy,
'ref': RefcountingGcPolicy,
diff --git a/rpython/translator/c/genc.py b/rpython/translator/c/genc.py
--- a/rpython/translator/c/genc.py
+++ b/rpython/translator/c/genc.py
@@ -823,6 +823,15 @@
print >> f, '}'
+def gen_teardowncode(f, database):
+ # generate tear-down code and put it into a function (empty except for
qcgc)
+ print >> f, 'void RPython_TeardownCode(void) {'
+
+ for line in database.gcpolicy.gc_teardown_code():
+ print >> f, "\t" + line
+
+ print >> f, '}'
+
def commondefs(defines):
from rpython.rlib.rarithmetic import LONG_BIT, LONGLONG_BIT
defines['PYPY_LONG_BIT'] = LONG_BIT
@@ -887,6 +896,7 @@
headers_to_precompile.insert(0, incfilename)
gen_startupcode(f, database)
+ gen_teardowncode(f, database)
f.close()
if 'PYPY_INSTRUMENT' in defines:
diff --git a/rpython/translator/c/src/entrypoint.c
b/rpython/translator/c/src/entrypoint.c
--- a/rpython/translator/c/src/entrypoint.c
+++ b/rpython/translator/c/src/entrypoint.c
@@ -109,6 +109,7 @@
RPyGilRelease();
#endif
+ RPython_TeardownCode();
return exitcode;
memory_out:
diff --git a/rpython/translator/c/src/entrypoint.h
b/rpython/translator/c/src/entrypoint.h
--- a/rpython/translator/c/src/entrypoint.h
+++ b/rpython/translator/c/src/entrypoint.h
@@ -9,5 +9,6 @@
#endif
RPY_EXTERN void RPython_StartupCode(void);
+RPY_EXTERN void RPython_TeardownCode(void);
RPY_EXPORTED int PYPY_MAIN_FUNCTION(int argc, char *argv[]);
#endif /* PYPY_STANDALONE */
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit