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

Reply via email to