Stef On May 9, 2010, at 3:47 AM, Igor Stasenko wrote:
And the last thing... since new trailers using #becomeForward: no wonder that this loop turns into an infinite:
CompiledMethod allInstancesDo: [:e | e isInstalled ifFalse: [e destroySourcePointer]].
because #allInstancesDo: walks a heap, and assuming that there is no new instances of it created during walking. But destroySourcePointer creating a new instance, so it can never finish! :)
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). 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 Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project