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

Reply via email to