comp.lang.ada
 help / color / mirror / Atom feed
From: Brian Rogoff <bpr@shell5.ba.best.com>
Subject: Re: Language Challenge 2000 - Update
Date: 2000/02/07
Date: 2000-02-07T00:00:00+00:00	[thread overview]
Message-ID: <Pine.BSF.4.21.0002071222500.26194-100000@shell5.ba.best.com> (raw)
In-Reply-To: 87fo89$aqm1@news.cis.okstate.edu

On 4 Feb 2000, David Starner wrote:
> On Fri, 4 Feb 2000 15:35:02 -0800, Brian Rogoff <bpr@shell5.ba.best.com> wrote:
> >On 4 Feb 2000, David Starner wrote:
> >
> >> On Fri, 4 Feb 2000 07:53:54 -0800, Brian Rogoff <bpr@shell5.ba.best.com> wrote:
> >> >What is the opposite/dual of a "conservative" garbage collector?
> >> One that collects stuff that's in use? (-: 
> >
> >The opposite/dual of a "conservative" garbage collector is a "precise" or
> >"accurate" garbage collector.
> 
> Yes, I knew that. Hence the smiley. Sorry.

Actually, I should apologize; I gathered you knew when I read the rest of
your message, but somehow my fingers were too quick on the draw. Sorry I 
sounded snotty.

> >A conservative garbage collector (and really 
> >garbage collector should be in quotes) is not guaranteed to collect all 
> >garbage. Does that help a little? 
> 
> Sure, but a generational GC won't collect all the garbage each time
> it does garbage collection, either. And most GC's will overlook a 
> technically live pointer that won't get used again.

True, but I put that in a different category (missing on a sweep versus
just permanently missing) than conservative GC. Besides, there are lots of 
precise GC variants besides generational GC. 

One thing I'd like in a language would be a more sophisticated interface
to memory pools than what we have in storage pools right now. This has
been discussed before, and probably the cabal behind Ada 0X is considering 
this.

> Anyway, how would you implement a "precise" garbage collector in
> pure Ada? 

You could restrict yourself to a subset of Ada. Do the Ada ==> JVM
compilers allow you to munge addresses using the functionality in the 
System hierarchy? 

> The only way I can see working is by manually adding roots,
> like GCC (2.96)'s internal GC does. But that's a pain that's also
> mistake-prone. I probably don't understand storage pools well enough
> for this, though.

For full blown Ada, a reasonable substitute for GC sometimes is manual
region management, where by "region" I mean something like a mark release 
pool a-la the Rationale. Its not quite as nice as GC but its usually
better than trying to free individual objects.

-- Brian





  reply	other threads:[~2000-02-07  0:00 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <38991E72.293907A4@sdynamix.com>
     [not found] ` <38992ADB.AC8748A8@mail.utexas.edu>
     [not found]   ` <87bbro$9281@news.cis.okstate.edu>
2000-02-03  0:00     ` Language Challenge 2000 - Update Brian Rogoff
2000-02-03  0:00       ` David Starner
2000-02-03  0:00         ` David Emery
2000-02-03  0:00         ` Brian Rogoff
2000-02-03  0:00           ` David Starner
2000-02-04  0:00             ` Brian Rogoff
2000-02-04  0:00               ` David Starner
2000-02-04  0:00                 ` Brian Rogoff
2000-02-04  0:00                   ` David Starner
2000-02-07  0:00                     ` Brian Rogoff [this message]
2000-02-03  0:00 bvoh
2000-02-04  0:00 ` Gautier
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox