Apologies. What a bogus post! I must have been really tripping....
On Tue, Sep 6, 2016 at 9:26 PM, Ben Coman <[email protected]> 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.