/[guile]/guile/guile-core/libguile/futures.c
ViewVC logotype

Diff of /guile/guile-core/libguile/futures.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by mdj, Thu Jan 23 16:13:13 2003 UTC revision 1.2 by mdj, Thu Jan 23 20:31:38 2003 UTC
# Line 290  cleanup_undead () Line 290  cleanup_undead ()
290            scm_cond_signal (SCM_FUTURE_COND (next));            scm_cond_signal (SCM_FUTURE_COND (next));
291            scm_mutex_unlock (SCM_FUTURE_MUTEX (next));            scm_mutex_unlock (SCM_FUTURE_MUTEX (next));
292          next:          next:
293              SCM_SET_GC_MARK (next);
294            nextloc = SCM_FUTURE_NEXTLOC (next);            nextloc = SCM_FUTURE_NEXTLOC (next);
295            next = *nextloc;            next = *nextloc;
296          }          }
# Line 309  mark_futures (SCM futures) Line 310  mark_futures (SCM futures)
310  {  {
311    while (!SCM_NULLP (futures))    while (!SCM_NULLP (futures))
312      {      {
       scm_gc_mark (SCM_FUTURE_DATA (futures));  
313        SCM_SET_GC_MARK (futures);        SCM_SET_GC_MARK (futures);
314        futures = SCM_FUTURE_NEXT (futures);        futures = SCM_FUTURE_NEXT (futures);
315      }      }
# Line 329  scan_futures (void *dummy1, void *dummy2 Line 329  scan_futures (void *dummy1, void *dummy2
329        young = SCM_EOL;        young = SCM_EOL;
330        last_switch = now;        last_switch = now;
331      }      }
332      else
333        mark_futures (young);    
334    
335    next = futures;    next = futures;
336    nextloc = &futures;    nextloc = &futures;
# Line 352  scan_futures (void *dummy1, void *dummy2 Line 354  scan_futures (void *dummy1, void *dummy2
354        {        {
355          SCM future;          SCM future;
356          UNLINK (next, future);          UNLINK (next, future);
357            SCM_SET_GC_MARK (future);
358          LINK (young, future);          LINK (young, future);
359        }        }
360      }      }
361    *nextloc = SCM_EOL;    *nextloc = SCM_EOL;
362   exit:   exit:
363    cleanup_undead ();    cleanup_undead ();
   mark_futures (young);  
364    mark_futures (old);    mark_futures (old);
   mark_futures (undead);  
365    return 0;    return 0;
366  }  }
367    

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26