Do not disable parallel mark for WRAP_MARK_SOME
authorIvan Maidanski <ivmai@mail.ru>
Mon, 25 Sep 2017 21:52:49 +0000 (00:52 +0300)
committerIvan Maidanski <ivmai@mail.ru>
Mon, 25 Sep 2017 21:52:49 +0000 (00:52 +0300)
commitf487f27c72ab054e8f9101c0696c24836a18eb9b
tree1e414ec1b5512326aef8d0a4fdbe9b0970d73049
parentceef8a5a09692a09266eaa2f201f90a6456c62d0
Do not disable parallel mark for WRAP_MARK_SOME

Issue #179 (bdwgc).

Now, if there is a chance of unmapping of root segments, the latter
ones are scanned immediately by GC_push_roots thus preventing memory
protection faults in GC_mark_local.

* include/private/gc_priv.h (GC_PUSH_CONDITIONAL): Move definition to
mark_rts.c.
* include/private/gcconfig.h [WRAP_MARK_SOME && PARALLEL_MARK]
(PARALLEL_MARK): Do not undefine; remove TODO item.
* mark.c [WRAP_MARK_SOME && PARALLEL_MARK] (GC_push_conditional_eager):
New internal function; add TODO item.
* mark_rts.c [WRAP_MARK_SOME && PARALLEL_MARK]
(GC_push_conditional_eager): Declare function.
* mark_rts.c [WRAP_MARK_SOME && PARALLEL_MARK] (GC_PUSH_CONDITIONAL):
Define to GC_push_conditional_eager if GC_parallel.
include/private/gc_priv.h
include/private/gcconfig.h
mark.c
mark_rts.c