]> granicus.if.org Git - gc/commitdiff
299.403
authorMatthew Flatt <mflatt@racket-lang.org>
Tue, 4 Oct 2005 21:02:37 +0000 (21:02 +0000)
committerIvan Maidanski <ivmai@mail.ru>
Sun, 3 Nov 2013 08:41:31 +0000 (12:41 +0400)
svn: r979

finalize.c

index e41e341cb715021aeb9a7bd11c9e3c6f7c7776d3..686f4992aef35beb339f8b12fdb30b1d8b288be9 100644 (file)
@@ -667,6 +667,13 @@ void GC_finalize()
     /* PLTSCHEME: for resetting the disapearing link */
     struct disappearing_link *done_dl = NULL, *last_done_dl = NULL;
 
+    /* PLTSCHEME: it's important to "push roots again" before
+       making disappearing links disappear, because this
+       step includes marking from ephemerons whose keys are
+       reachable. We want to mark before disappearing links
+       are disappeared. */
+    if (GC_push_last_roots_again) GC_push_last_roots_again();
+
     /* Make disappearing links disappear */
     /* PLTSCHEME: handle NULL real_link and remember old values */
     for (i = 0; i < dl_size; i++) {