I'm documenting what I'm learning in a format for a blog post that might be the basis for something.
cheers -ben On Wed, Sep 7, 2016 at 3:40 AM, stepharo <steph...@free.fr> wrote: > Ben > > no stress. Now what I would love is an example that we can put in the uFFI > chapter :) > > Stef > > > Le 6/9/16 à 17:32, Ben Coman a écrit : > >> 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. >> >> > >