]> granicus.if.org Git - gc/commit
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>
Thu, 28 Sep 2017 22:12:54 +0000 (01:12 +0300)
commit1d68e088f6966fb6290ba87353986fd23c6ab828
tree01efd2c246bc38d67a8bce51d2bf7c4b1cc60cce
parentddb3b12c798feabdf87305a36d4398dd0ec42cdf
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