]> granicus.if.org Git - gc/commitdiff
correct handing of mark-stack overflow in ephemeron processing
authorMatthew Flatt <mflatt@racket-lang.org>
Wed, 2 Aug 2006 18:37:21 +0000 (18:37 +0000)
committerIvan Maidanski <ivmai@mail.ru>
Sun, 3 Nov 2013 09:06:19 +0000 (13:06 +0400)
svn: r3934

mark.c

diff --git a/mark.c b/mark.c
index 8c88c905db8a6d3f4a9772ad3b4fc28cca7c6a38..b583a517a4026c9558f85ece86ae378b5c9b7ec4 100644 (file)
--- a/mark.c
+++ b/mark.c
@@ -604,7 +604,11 @@ void GC_mark_from_mark_stack(void)
 {
   MARK_FROM_MARK_STACK();
 }
-
+void GC_mark_overflow_recover(void *p)
+{
+  GC_set_mark_bit(p);
+  while (!GC_mark_some((ptr_t)0));
+}
 
 /*
  * Mark objects pointed to by the regions described by