[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: DEFSTRUCT and reclaimable storage
- To: BAK at MIT-AI, LISP-FORUM at MIT-AI
- Subject: Re: DEFSTRUCT and reclaimable storage
- From: Daniel L. Weinreb <dlw at MIT-AI>
- Date: Sun ,30 Nov 80 23:03:00 EDT
- Sender: dlw at CADR7 at MIT-AI
You needn't worry about intense philosophical disagreement from the Lisp
Machine system hacker community; while automatic freeing of storage is
nice, we all recognize that sometimes you don't need it and can gain a
lot of efficiency by using manual returning. In fact, there is
currently an installed Lisp Machine system feature called "resources"
that do something like what you want. You can define a new resource,
which gives the resource a name and says how to make a new object; then
you can say (with-resource (<resource-name> <var>) form1 form2 ...)
which will lambda-bind <var> to an object from the <resource-name>
resource. When you exit the special form (with a normal or THROW-type
exit), the item is returned to the resource pool.
So the way you would do what you want to do is to define a new resource
whose definition includes a defstruct constructor macro. This should
not be built into defstruct, since you might also want a resource of
objects that are not structures (arrays, flavor instances, 1000-long
lists, etc.).
I am not sure whether anyone has documented the functions and special
forms of the resource feature. If I find out that they are not
documented, I will document them.