Re: Ada GC and a bunch of other stuff

boehm@parc.xerox.com (Hans Boehm)
14 Feb 1996 21:29:44 -0500

          From comp.compilers

Related articles
Re: Ada GC and a bunch of other stuff hbaker@netcom.com (1996-02-03)
Re: Ada GC and a bunch of other stuff chase@centerline.com (1996-02-09)
Re: Ada GC and a bunch of other stuff ncohen@watson.ibm.com (1996-02-09)
Re: Ada GC and a bunch of other stuff dave@occl-cam.demon.co.uk (Dave Lloyd) (1996-02-13)
Re: Ada GC and a bunch of other stuff hosking@cs.purdue.edu (1996-02-13)
Re: Ada GC and a bunch of other stuff boehm@parc.xerox.com (1996-02-14)
Re: Ada GC and a bunch of other stuff dave@occl-cam.demon.co.uk (Dave Lloyd) (1996-02-16)
Re: Ada GC and a bunch of other stuff hbaker@netcom.com (1996-02-17)
Re: Ada GC and a bunch of other stuff boehm@parc.xerox.com (1996-02-21)
Re: Ada GC and a bunch of other stuff boehm@parc.xerox.com (1996-02-21)
Re: Ada GC and a bunch of other stuff dave@occl-cam.demon.co.uk (Dave Lloyd) (1996-02-23)
Re: Ada GC and a bunch of other stuff boehm@parc.xerox.com (1996-02-27)
| List of all articles for this month |

From: boehm@parc.xerox.com (Hans Boehm)
Newsgroups: comp.compilers
Date: 14 Feb 1996 21:29:44 -0500
Organization: Xerox Palo Alto Research Center
References: 96-02-113
Keywords: GC, parallel

Dave Lloyd <dave@occl-cam.demon.co.uk> writes:


>I should point out that many of David Chase's observations on the
>interactions between a GC and an optimiser are borne of the way
>conservative GCs go to work.


...


>Preemptive multi-threading is hairier still depending on one's
>strategy. We chose to use semaphores to force all processes to
>synchronise before a GC. This may cause a longer latency in the
>process that triggered the GC but there is a gap in the process's view
>of synchronisation with the GC in which compute which doesn't interact
>with the GC or GC-owned pointers can be hidden (e.g. a vector product
>of reals). The analysis is tractable for many useful cases in Algol 68
>and PCF-Fortran, but I have yet to get this far.


I don't understand this. Clearly you can't mean that you wait for all
other threads to try to acquire a lock? Even if you handle threads
blocked on IO correctly, this leaves you with a completely unbounded
wait for compute-bound threads that don't synchronize, negating much
of the advantage of preemptive multi-threading.


One of the nice properties of a collector using a conservative stack
traversal is that, assuming cheaply enforcable safety properties on
the generated code, you can stop threads at any point for GC purposes.
With a nonconservative collector, you need to set up GC safe points
inside every loop. This may still be cheap if you have a facility for
single- stepping threads.


Hans-J. Boehm
(boehm@parc.xerox.com)
--


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.