Apologies.   What a bogus post!   I must have been really tripping....

On Tue, Sep 6, 2016 at 9:26 PM, Ben Coman <b...@openinworld.com> wrote:
> I thought I was starting to get a grip on how finalization work.  I
> made this example...
>
>     Object subclass: #MyObject
>         instanceVariableNames: ''
>         classVariableNames: ''
>         package: 'Play'
>
>     MyObject>>autoRelease
>        ^ self class finalizationRegistry add: self
>
>     MyObject>>finalize
>         Transcript crShow: 'Finalizing MyObject'
>
>     o := MyObject new autoRelease.
>     o := nil.
>     Smalltalk garbageCollect.   ==> 'Finalizing MyObject'
>
> So far so good.  Extrapolating... I would *expect* this...
>
>     oc := OrderedCollection new.
>     10 timesRepeat: [ oc add: Libclang getClangVersion ].
>     oc removeAll.
>     oc := nil.
>     Smalltalk garbageCollect.
>
> ...to print 'Finalizing MyObject' ten times, but it does nothing!!
>

Duh! I didn't send autorelease inside the timesRepeat above...

Duh^2 !!  that example didn't even refer to MyObject!!!!!

Of course fixing those two things to get...
    10 timesRepeat: [ oc add: MyObject new autoRelease. ].
works perfectly!

> Such a simple example feeds my naive presumption that the system seems
> broken. So could someone help me interpret this result ?

Sorry for the noise.  Pure PIBKAM**.  Couldn't see the trees for the forest.

cheers -ben


**problem is between keyboard and mouse.

Reply via email to