[V3dot9] Fwd: Solution for condenseChanges problem
stéphane ducasse
ducasse at iam.unibe.ch
Mon Aug 28 19:51:04 UTC 2006
Begin forwarded message:
> From: Adrian Lienhard <alienhard at netstyle.ch>
> Date: 28 août 2006 15:54:41 HAEC
> To: Stéphane Ducasse <stephane.ducasse at univ-savoie.fr>
> Subject: Solution for condenseChanges problem
>
> Hi Stef
>
> I found the problem...
> [Explanation: It originates in the update from 7048 to 7049 where
> some classes are recompiled. This also recompiles the trait methods
> in those classes. This breaks the assumption in #moveChangesTo:
> that a method needs to be moved to the new changes file only if it
> is not from a trait or if it is from a trait but with a supersend
> (this is assumed to be the only case for which traits methods are
> not identical with the original method in the trait). Since this is
> not the case after the recompilation, now there are some old
> methods not moved to the new changes and hence they still have old
> pointers].
>
> To fix the problem, the cleanest thing is to take a 7035 image, and
> evaluate the following code, before condenseChanges:
>
> Smalltalk allClassesAndTraits do: [:t |
> (t methodDict keys select: [:s | t includesLocalSelector: s]) do:
> [:s |
> t notifyUsersOfChangedSelectors: {s}].
> (t classSide methodDict keys select: [:s | t classSide
> includesLocalSelector: s]) do: [:s |
> t classSide notifyUsersOfChangedSelectors: {s}]]
>
> This is the same like in ScriptLoader>>#updateFrom7039.
>
> I didn't check whether condensing sources works afterwards, but
> accessing the versions seems to be ok.
>
> Adrian
More information about the V3dot9
mailing list