On Wed, Jan 18, 2012 at 8:30 AM, Stéphane Ducasse <stephane.ducasse@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