On Wed, Jan 18, 2012 at 8:30 AM, Stéphane Ducasse <stephane.duca...@inria.fr > wrote:
> Thanks. > Mariano I remember that with marcus we got the same impression: that the > copyFrom: trick to avoid > a full scan was the cause of the trouble. > But I remember that you said that you had still a problem. > I notice that the compact/rehash of CompiledMethod is involved to reproduce this problem, but also I notice that the problem happens with the old version of #compact/#rehash > > > Here's the fix: > > > > I reverted MethodDictionary>>#compact to its previous version: > > > > compact > > "Make sure that I have the highest possible load factor (at least > 50%)." > > > > self become: self compactWithoutBecome > > > > > > The non-working version was: > > > > compact > > "Make sure that I have the highest possible load factor (between > 37.5% and 75%)." > > > > | newInstance | > > newInstance := self compactWithoutBecome. > > newInstance capacity = self capacity > > ifTrue: [ self copyFrom: newInstance ] > > ifFalse: [ self becomeForward: newInstance ] > > > > After reverting, #cleanUpForRelease worked without problem. > > > > > > > -- Mariano http://marianopeck.wordpress.com