summaryrefslogtreecommitdiffstatshomepage
path: root/py/gc.c
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2014-06-05 22:48:02 +0300
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2014-06-05 22:48:02 +0300
commit755a55f5070c442a7e2bacf976a73359d1da68a2 (patch)
tree8aa5dc52c5753a2984c879ec2f8086d06052c0fc /py/gc.c
parentd4c2bddd0c768da12d0cefd3c405b10e75fa5aa9 (diff)
downloadmicropython-755a55f5070c442a7e2bacf976a73359d1da68a2.tar.gz
micropython-755a55f5070c442a7e2bacf976a73359d1da68a2.zip
modgc: Implement return value for gc.collect(), enable on Unix.
Diffstat (limited to 'py/gc.c')
-rw-r--r--py/gc.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/py/gc.c b/py/gc.c
index 87c458f82c..7fab0409a9 100644
--- a/py/gc.c
+++ b/py/gc.c
@@ -231,7 +231,14 @@ STATIC void gc_deal_with_stack_overflow(void) {
}
}
+#if MICROPY_PY_GC_COLLECT_RETVAL
+uint gc_collected;
+#endif
+
STATIC void gc_sweep(void) {
+ #if MICROPY_PY_GC_COLLECT_RETVAL
+ gc_collected = 0;
+ #endif
// free unmarked heads and their tails
int free_tail = 0;
for (machine_uint_t block = 0; block < gc_alloc_table_byte_len * BLOCKS_PER_ATB; block++) {
@@ -254,6 +261,9 @@ STATIC void gc_sweep(void) {
}
#endif
free_tail = 1;
+ #if MICROPY_PY_GC_COLLECT_RETVAL
+ gc_collected++;
+ #endif
// fall through to free the head
case AT_TAIL: