On 9 May 2010 13:29, Alain Plantec <[email protected]> wrote:
> Hi all,
>>>
>>> i just replaced it with following:
>>>
>>> (CompiledMethod allInstances reject: #isInstalled) do: [:e | e
>>> isInstalled ifFalse: [e destroySourcePointer]].
>>>
>>
>> Yes clearly a conceptual bug.
>> But with the solution alain proposed ie not destroying while iterating on
>> methods does not work
>> (yes it condenses well but accessing some methods is broken).
>>
>
> yes but Igor solution is a little bit different because 'e isInstalled' is
> tested twice,
> one for the reject: and the second in the do: block.

This was a result of lack of attention, not my real intent. :)

In bug entry for this issue i added a method which does just:
(CompiledMethod allInstances reject: #isInstalled) do: #destroySourcePointer.

there's no way how method can become installed when you changin its trailer.
So, a single test #isInstalled is sufficient.
A more faster way is to use a mass-become.
But i think this is not a place where you need to care too much about
performance.

> But unfortunately, this solution seems to be broken to. It works one time,
> but while trying to
> condenseChanges again several time, my squeak process is killed without
> flushing any log.

You mean running #condenseChanges multiple times in a row, or
interrupting it and then start over again?
You should know, that it is important to not interrupt it in the
middle, because when you doing that,
part of your methods having old source pointers, while rest part
having new ones,
and there is no way to tell, which one is correct.

> Alain
>>
>> Lukas did a cool test that checks whether the we can parse the method.
>>
>>
>>
>>>
>>> and made it to the end.. took about 5 minutes to wait. (12k methods +
>>> become on every method is a little time consuming ;)
>>>
>>> --
>>> Best regards,
>>> Igor Stasenko AKA sig.
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> [email protected]
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [email protected]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>>
>
>
> _______________________________________________
> Pharo-project mailing list
> [email protected]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>



-- 
Best regards,
Igor Stasenko AKA sig.

_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

Reply via email to