[squeak-dev] Three questions

Mateusz Grotek unoduetre at poczta.onet.pl
Sat Aug 4 07:51:39 UTC 2012


Eliot Miranda pisze:
> On Sun, Jul 29, 2012 at 7:56 AM, Mateusz Grotek <unoduetre at poczta.onet.pl>wrote:
> 
>> Hi
>> I have the following 3 questions:
>> 1. Why there is ContextPart>>releaseTo: ? What will happen if I don't
>> use it?
>>
> 
> releaseTo: simulates the effect of doing a method return from a block, i.e.
> when a return exits more than the top context.  It sends singleRelease to
> each context exited, which sets the pc and sender to nil (and nils the
> stack, but this is excess to requirements).  releaseTo: is actually used
> when a method return from a block encounters an unwind-protect and control
> passes up to the image to run the unwind.  You don't need to use it.  It is
> used automatically as part of running unwinds.  In what situation do you
> think you do need to use it?
> 
> 
I'm trying to implement backtracking as described in the paper:
"Building a backtracking facility in Smalltalk without kernel support"
by W. LaLonde and M. Van Gulik

They commented their use of releaseTo: in this way:

"aContext releaseTo: oldContext
Release (by setting the temporaries in the context stack to nil) all
contexts from the receiver, its sender, its sender's sender etc. up to
but excluding oldContext. It is a superflous method that helps the
garbage collector."

I wondered if this is an artifact of the version of Smalltalk they used
when writing the paper, or it really helps the garbage collector in some
way. As far as I understand it contexts are collected just like normal
objects, when there are no references to them. So i don't see a point in
using this method, but I'm not an expert and maybe i miss something, so
I asked this question.

Thank you for the anwer.


More information about the Squeak-dev mailing list