There are a few older systems which have had features that are a
bit like those people are describing for the "free" operator.
Let me describe two of them.
OS/360 and the PL/I language had the idea of "subpools". Many
small objects could be allocated in a subpool, and all freed
with one call, a high performance way of freeing storage.
Neither of these systems actually NULLed existing pointers, so
it was easy to make programming errors.
The KeyKOS (aka Gnosis) [1,2] depended on explicit freeing of
objects for storage reclamation. As an OS, object lifetimes
ranged from milliseconds to years. The reason of having an
explicit free was to allow an accounting entity paying for
storage to stop paying, regardless of whether others were using
that storage. When the "free" call returned, all references to
the storage were changed to null.
The experience in KeyKOS was that after an object had been
shared for a few months, the effects of freeing it could not be
predicted easily. This made it hard to decide to free an object.
A combination of garbage collection and explicit free might have
worked well, but was never implemented.
The naive program, using a freed object would crash. These
crashes can be caught by a "keeper" object which can clean up
and report failure to callers.
[1] <http://www.cis.upenn.edu/~KeyKOS/agorics/KeyKos/Gnosis/>
[2] <http://cap-lore.com/CapTheory/KK/Kernel/>
Cheers - Bill
---------------------------------------------------------------------------
Bill Frantz | "I wish there was a knob on the TV to turn
up the
408-356-8506 | intelligence. There's a knob called
"brightness", but
www.pwpconsult.com | it doesn't work. -- Gallagher
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss