]> granicus.if.org Git - gc/commitdiff
Add GC_is_disabled new function to GC API
authorIvan Maidanski <ivmai@mail.ru>
Wed, 1 Feb 2012 17:25:44 +0000 (21:25 +0400)
committerIvan Maidanski <ivmai@mail.ru>
Wed, 1 Feb 2012 17:25:44 +0000 (21:25 +0400)
* include/gc.h (GC_dont_gc): Improve comment (add note for new client
code).
* include/gc.h (GC_is_disabled): New API function.
* misc.c (GC_is_disabled): Likewise.

include/gc.h
misc.c

index ddb363a48d866f165f0761d5f7d639fe7a1612a3..56024c85ffc192c43f194d4948b3a3c018815794 100644 (file)
@@ -195,9 +195,10 @@ GC_API int GC_dont_gc;  /* != 0 ==> Don't collect.  In versions 6.2a1+, */
                         /* Used as a counter, so that nested enabling   */
                         /* and disabling work correctly.  Should        */
                         /* normally be updated with GC_enable() and     */
-                        /* GC_disable() calls.                          */
-                        /* Direct assignment to GC_dont_gc is           */
-                        /* deprecated.                                  */
+                        /* GC_disable() calls.  Direct assignment to    */
+                        /* GC_dont_gc is deprecated.  To check whether  */
+                        /* GC is disabled, GC_is_disabled() is          */
+                        /* preferred for new code.                      */
 
 GC_API int GC_dont_expand;
                         /* Don't expand the heap unless explicitly      */
@@ -590,6 +591,10 @@ GC_API void GC_CALL GC_get_heap_usage_safe(GC_word * /* pheap_size */,
 /* ineffective.                                                         */
 GC_API void GC_CALL GC_disable(void);
 
+/* Return non-zero (TRUE) if and only if garbage collection is disabled */
+/* (i.e., GC_dont_gc value is non-zero).  Does not acquire the lock.    */
+GC_API int GC_CALL GC_is_disabled(void);
+
 /* Re-enable garbage collection.  GC_disable() and GC_enable() calls    */
 /* nest.  Garbage collection is enabled if the number of calls to both  */
 /* both functions is equal.                                             */
diff --git a/misc.c b/misc.c
index 03011958325fb35c9bb0f82643024da32a9f5e65..5dadaab272d6fd296998ded917707a521046565e 100644 (file)
--- a/misc.c
+++ b/misc.c
@@ -1473,6 +1473,11 @@ GC_API void GC_CALL GC_disable(void)
     UNLOCK();
 }
 
+GC_API int GC_CALL GC_is_disabled(void)
+{
+    return GC_dont_gc != 0;
+}
+
 /* Helper procedures for new kind creation.     */
 GC_API void ** GC_CALL GC_new_free_list_inner(void)
 {