[squeak-dev] Weird transient Traits test error

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Sun May 5 15:06:13 UTC 2013


Previous versions did not move the binding to undeclared. They did just
remove it.
The binding did still point to the obsolete class, and that is what is
tested in testMethodClass.

I don't know what the correct Behaviour is...
I can just tell that it has changed.

In VW, there is a direct pointer from a CompiledMethod to the class because
become is cheap.
In Squeak, the pointer is indirect thru the binding, so IMO it's an
implementation detail.

Since we still have the binding name though, I wonder if it's really
interesting to have the value pointing to obsolete class...
If not, we can eventually change the test.


2013/5/4 Colin Putney <colin at wiresong.com>

>
>
>
> On Fri, May 3, 2013 at 1:18 PM, Nicolas Cellier <
> nicolas.cellier.aka.nice at gmail.com> wrote:
>
>> Yes but Environments are not stabilized yet.
>> Look for example at CompiledMethodTest>>#testMethodClass
>> It is failing because Environment>>#forgetClass:logged: moves the class
>> binding in undeclared (Dictionary>>#declare:from: ), but then overwrite the
>> value with nil.
>> Thus the references to AnObsoleteTUTU are then nilled out...
>>
>
> Isn't that the correct behaviour? Direct references to the class by name
> should be nil, but any variables that refer to the class object still have
> a reference to the obsolete class, and instances still have their state but
> don't understand messages because their class is obsolete.
>
> If that's not the correct behaviour, what is?
>
> Colin
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20130505/79476618/attachment.htm


More information about the Squeak-dev mailing list