From: "Matthew Heaney" <matthew_heaney@acm.org>
Subject: Re: garbage collection
Date: 1999/08/20
Date: 1999-08-20T00:00:00+00:00 [thread overview]
Message-ID: <37be0c85@news1.us.ibm.net> (raw)
In-Reply-To: yecwvuqhrkx.fsf@king.cts.com
In article <yecwvuqhrkx.fsf@king.cts.com> , Keith Thompson <kst@cts.com>
wrote:
> Specifying the 'Storage_Pool attribute is a very powerful and
> under-used feature, IMHO. The biggest obstacle to its use, I suspect,
> is the need to implement the Storage_Pool operations.
One thing I miss is not having a set of nameable, pre-defined storage pools.
You have that in GNAT, but it's not really portable because of certain
low-level calls (to a C routine called "_gnat__allocate", or something like
that).
> If System.Storage_Pools also provided routines for dereferencing
> access values (perhaps one each for reading and writing), and perhaps
> also for initialization and finalization of access objects, it would
> be even more powerful. I haven't entirely thought this through, so it
> may be a bad idea for some reason.
That's one nice thing about C++. You can implement a pointer abstraction
that has a syntax identical to a built-in pointer. In Ada95, you have to
implement a "handle" type that provides a dereference operator:
type T (<>) is limited private;
type T_Access is access all T;
type T_Handle is private;
function "+" (Handle : T_Handle) return T_Access;
All the primitive operations of T take access parameters, since we're always
dealing with pointers to T:
procedure Op (O : access T);
function Get_Attribute (O : access T) return Attr_T;
You also have constructor(s) that return a handle object:
function New_T return T_Handle; -- not T_Access
All the actual garbage collection is associated with T_Handle, since there's
no way to do that with the access type T_Access directly. (Which is how
Ada95 differs from C++.)
I use this technique to implement reference-counting for on-the-heap
abstractions, so that when the count drops to zero the memory is
automatically reclaimed. See the patterns archives for lots of examples.
<http://www.acm.org/archives/patterns.html>
The only trap door in this scheme is that there's no way to prevent the
client from manipulating the access object directly, say, by making a copy.
It has to be understood by users that that is something you never do with a
handle-based abstraction.
It would be swell if the language were amended to make access types limited;
this would prevent any problems engendered by accidental copying of access
objects.
--
Matt
It is impossible to feel great confidence in a negative theory which has
always rested its main support on the weak points of its opponent.
Joseph Needham, "A Mechanistic Criticism of Vitalism"
next prev parent reply other threads:[~1999-08-20 0:00 UTC|newest]
Thread overview: 83+ messages / expand[flat|nested] mbox.gz Atom feed top
1999-08-18 0:00 garbage collection Ronald Ayoub
1999-08-18 0:00 ` tmoran
1999-08-18 0:00 ` Keith Thompson
1999-08-19 0:00 ` Tucker Taft
1999-08-19 0:00 ` Robert Dewar
1999-08-19 0:00 ` Robert Dewar
1999-08-20 0:00 ` tmoran
1999-08-20 0:00 ` Keith Thompson
1999-08-20 0:00 ` Matthew Heaney [this message]
1999-08-20 0:00 ` Keith Thompson
1999-08-21 0:00 ` Robert Dewar
1999-08-21 0:00 ` Matthew Heaney
1999-08-21 0:00 ` Matthew Heaney
1999-08-21 0:00 ` Robert Dewar
1999-08-21 0:00 ` garbage collection [storage pools] Robert Dewar
1999-08-21 0:00 ` Simon Wright
1999-08-21 0:00 ` garbage collection Brian Rogoff
1999-08-21 0:00 ` Robert Dewar
1999-08-21 0:00 ` Default Storage Pool (was Re: garbage collection) Simon Wright
1999-08-23 0:00 ` Robert A Duff
1999-08-18 0:00 ` garbage collection Robert I. Eachus
1999-08-19 0:00 ` Gautier
1999-08-19 0:00 ` Robert I. Eachus
1999-08-20 0:00 ` Keith Thompson
1999-08-20 0:00 ` Robert Dewar
1999-08-18 0:00 ` Pascal MALAISE
1999-08-20 0:00 ` David Botton
1999-08-18 0:00 ` Gisle S�lensminde
-- strict thread matches above, loose matches on Subject: below --
1996-10-24 0:00 Garbage Collection H Brett Bolen
1989-01-10 19:16 Erland Sommarskog
1989-01-11 16:10 ` William Thomas Wolfe,2847,
1989-01-06 22:17 Erland Sommarskog
1989-01-08 18:40 ` William Thomas Wolfe,2847,
1989-01-09 3:56 ` Barry Margolin
1989-01-09 16:22 ` William Thomas Wolfe,2847,
1989-01-09 19:00 ` Barry Margolin
1989-01-10 2:50 ` William Thomas Wolfe,2847,
1989-01-11 9:22 ` Barry Margolin
1989-01-11 16:01 ` William Thomas Wolfe,2847,
1989-01-11 18:21 ` Barry Margolin
1989-01-12 2:43 ` William Thomas Wolfe,2847,
1989-01-15 7:14 ` Barry Margolin
1989-01-05 23:26 Erland Sommarskog
1988-12-31 0:04 Erland Sommarskog
1989-01-05 8:13 ` William Thomas Wolfe,2847,
1988-12-28 19:20 Erland Sommarskog
1988-12-30 0:52 ` Bill Wolfe
1988-12-26 23:37 Erland Sommarskog
1988-12-27 21:24 ` William Thomas Wolfe,2847,
1988-12-28 16:09 ` Snorri Agnarsson
1988-12-30 0:46 ` Bill Wolfe
1988-12-27 22:24 ` Bob Hathaway
1988-12-18 20:12 Erland Sommarskog
1988-12-20 19:04 ` Bill Wolfe
1988-12-13 20:07 Erland Sommarskog
1988-12-15 19:13 ` William Thomas Wolfe,2847,
1988-12-07 15:22 Collective response to := messa ron
1988-12-11 19:11 ` Garbage Collection William Thomas Wolfe,2847,
1988-12-12 5:29 ` John Gateley
1988-12-12 18:19 ` William Thomas Wolfe,2847,
1988-12-13 1:02 ` Alexander Klaiber
1988-12-13 18:37 ` William Thomas Wolfe,2847,
1988-12-13 23:36 ` Alexander Klaiber
1988-12-14 3:26 ` William Thomas Wolfe,2847,
1988-12-14 17:16 ` Stephe Leake
1988-12-15 14:43 ` Thomas P. Morris
1988-12-14 23:30 ` John Gateley
1988-12-15 19:25 ` William Thomas Wolfe,2847,
1988-12-19 16:12 ` John Gateley
1988-12-20 19:34 ` Bill Wolfe
1988-12-13 20:22 ` William Thomas Wolfe,2847,
1988-12-14 6:40 ` Richard A. O'Keefe
1988-12-14 17:43 ` William Thomas Wolfe,2847,
1989-01-02 17:51 ` ryer
1989-01-05 8:31 ` William Thomas Wolfe,2847,
1989-01-06 16:58 ` ryer
1989-01-08 19:24 ` William Thomas Wolfe,2847,
[not found] <145@krafla.rhi.hi.is>
[not found] ` <272@fang.ATT.COM>
1988-03-29 13:47 ` From Modula to Oberon Denis Fortin
1988-03-30 15:32 ` Lawrence Crowl
1988-03-30 22:41 ` Hans Boehm
1988-03-31 6:27 ` Garbage Collection Richard Harter
1988-03-31 19:49 ` Hans Boehm
1988-04-01 5:43 ` Richard Harter
1988-04-01 18:43 ` Hans Boehm
1988-04-04 23:14 ` 00704a-Liber
1986-03-16 22:24 Garbage collection "Alexander L. Wolf"
[not found] <1979@mit-eddi.UUCP>
[not found] ` <2144@mit-eddie.UUCP>
1984-06-18 19:28 ` Abstraction In Ada Jon Mauney
1984-06-22 7:47 ` Doug Alan
1984-06-25 2:15 ` brad
1984-07-17 10:34 ` garbage collection Eric Smith
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox