Author: Nicolas Truessel <ntrues...@njsm.de> 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 pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit