From 8c1c7488b223b37d1aa169edeb208f054d6b74c3 Mon Sep 17 00:00:00 2001
From: Damien George <damien.p.george@gmail.com>
Date: Thu, 8 May 2014 23:04:49 +0100
Subject: [PATCH] Add gc.enable, gc.disable; remove pyb.gc.

---
 py/modgc.c         | 14 ++++++++++++++
 py/qstrdefs.h      |  2 ++
 stmhal/gccollect.h |  2 --
 stmhal/modpyb.c    |  1 -
 4 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/py/modgc.c b/py/modgc.c
index e569d290b..de6ecd586 100644
--- a/py/modgc.c
+++ b/py/modgc.c
@@ -43,9 +43,23 @@ STATIC mp_obj_t py_gc_collect(void) {
 }
 MP_DEFINE_CONST_FUN_OBJ_0(gc_collect_obj, py_gc_collect);
 
+STATIC mp_obj_t gc_disable(void) {
+    gc_lock();
+    return mp_const_none;
+}
+MP_DEFINE_CONST_FUN_OBJ_0(gc_disable_obj, gc_disable);
+
+STATIC mp_obj_t gc_enable(void) {
+    gc_unlock();
+    return mp_const_none;
+}
+MP_DEFINE_CONST_FUN_OBJ_0(gc_enable_obj, gc_enable);
+
 STATIC const mp_map_elem_t mp_module_gc_globals_table[] = {
     { MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_gc) },
     { MP_OBJ_NEW_QSTR(MP_QSTR_collect), (mp_obj_t)&gc_collect_obj },
+    { MP_OBJ_NEW_QSTR(MP_QSTR_disable), (mp_obj_t)&gc_disable_obj },
+    { MP_OBJ_NEW_QSTR(MP_QSTR_enable), (mp_obj_t)&gc_enable_obj },
 };
 
 STATIC const mp_obj_dict_t mp_module_gc_globals = {
diff --git a/py/qstrdefs.h b/py/qstrdefs.h
index 29b3cc33b..30fad4413 100644
--- a/py/qstrdefs.h
+++ b/py/qstrdefs.h
@@ -352,6 +352,8 @@ Q(getvalue)
 #if MICROPY_ENABLE_MOD_GC
 Q(gc)
 Q(collect)
+Q(disable)
+Q(enable)
 #endif
 
 #if MICROPY_ENABLE_PROPERTY
diff --git a/stmhal/gccollect.h b/stmhal/gccollect.h
index df563d389..c2955b929 100644
--- a/stmhal/gccollect.h
+++ b/stmhal/gccollect.h
@@ -39,5 +39,3 @@ extern uint32_t _estack;
 extern uint32_t _ram_end;
 
 void gc_collect(void);
-
-MP_DECLARE_CONST_FUN_OBJ(gc_collect_obj);
diff --git a/stmhal/modpyb.c b/stmhal/modpyb.c
index c8d9a5d80..81dc92117 100644
--- a/stmhal/modpyb.c
+++ b/stmhal/modpyb.c
@@ -305,7 +305,6 @@ STATIC const mp_map_elem_t pyb_module_globals_table[] = {
     { MP_OBJ_NEW_QSTR(MP_QSTR_info), (mp_obj_t)&pyb_info_obj },
     { MP_OBJ_NEW_QSTR(MP_QSTR_unique_id), (mp_obj_t)&pyb_unique_id_obj },
     { MP_OBJ_NEW_QSTR(MP_QSTR_freq), (mp_obj_t)&pyb_freq_obj },
-    { MP_OBJ_NEW_QSTR(MP_QSTR_gc), (mp_obj_t)&gc_collect_obj },
     { MP_OBJ_NEW_QSTR(MP_QSTR_repl_info), (mp_obj_t)&pyb_set_repl_info_obj },
 
     { MP_OBJ_NEW_QSTR(MP_QSTR_wfi), (mp_obj_t)&pyb_wfi_obj },
-- 
GitLab