]> granicus.if.org Git - gc/commitdiff
Prevent WARN of incompatible incremental GC if default or manual VDB
authorIvan Maidanski <ivmai@mail.ru>
Thu, 29 Aug 2019 21:46:43 +0000 (00:46 +0300)
committerIvan Maidanski <ivmai@mail.ru>
Thu, 29 Aug 2019 21:48:02 +0000 (00:48 +0300)
Incremental GC based on mprotect is considered incompatible with /proc
roots but the default and manual VDB modes are OK.

* mark.c [WRAP_MARK_SOME && !MSWIN32 && !MSWINCE] (GC_mark_some):
Do not WARN about incompatibility of incremental GC with /proc roots
if DEFAULT_VDB or GC_auto_incremental is false (i.e. manual VDB is on).

mark.c

diff --git a/mark.c b/mark.c
index 77d6b0b5051fa351d7020e45255c433369094e60..8cd13f501103c4734827e1810760b46bb5ad8ec6 100644 (file)
--- a/mark.c
+++ b/mark.c
@@ -544,10 +544,12 @@ static void alloc_mark_stack(size_t);
       /* thread that is in the process of exiting, and disappears       */
       /* while we are marking it.  This seems extremely difficult to    */
       /* avoid otherwise.                                               */
-      if (GC_incremental) {
-        WARN("Incremental GC incompatible with /proc roots\n", 0);
-        /* I'm not sure if this could still work ...    */
-      }
+#     ifndef DEFAULT_VDB
+        if (GC_auto_incremental) {
+          WARN("Incremental GC incompatible with /proc roots\n", 0);
+          /* I'm not sure if this could still work ...  */
+        }
+#     endif
       GC_setup_temporary_fault_handler();
       if(SETJMP(GC_jmp_buf) != 0) goto handle_ex;
       ret_val = GC_mark_some_inner(cold_gc_frame);