[squeak-dev] Why is #String->String an Alias?

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Wed Dec 18 01:35:07 UTC 2013


Bingo, by instrumenting basicNew with self name == #Alias ifTrue: [self
haltOnce], I got my first Alias during update 228, with previous version of
Association>>asBinding: (said like that it sounds like sexually transmitted
infection).
Once in the references, an Alias is sticky. If you recompile, you just
propagate the Alias in each and every reference to the global...



2013/12/18 Nicolas Cellier <nicolas.cellier.aka.nice at gmail.com>

> Previous version of Association>>asBinding: could have created the Alias...
>
> By evaluating this:
>
> Smalltalk globals instVarNamed: 'references' put: IdentityDictionary new.
> Symbol rehash. "Argh this should not be necessary but I got two instances
> of the same Symbol"
> Compiler recompileAll.
> Smalltalk garbageCollect.
> Alias allInstances size.
>
> the number of Alias felt from 45 to 6 in my image, presumably some closure.
>
>
>
> 2013/12/17 Frank Shearar <frank.shearar at gmail.com>
>
>> On 17 December 2013 22:27, Chris Muller <asqueaker at gmail.com> wrote:
>> > I wrote:
>> >
>> > On Sat, Dec 14, 2013 at 4:33 PM, Chris Muller <ma.chris.m at gmail.com>
>> wrote:
>> >>
>> >> I'm trying to get a picture of our state of quality (for release) in
>> >> terms of our tests.
>> >>
>> >> Here are failing tests in Trunk (as debuggable expressions):
>> >> ... snip...
>> >>
>> >> 5.  (MethodHighlightingTests selector: #testMethodHighlighting) debug.
>> >
>> > Working on this one today.  The root cause of the test breakage seems
>> > to be the fact that the variable binding for String is now an Alias,
>> > which responds "true" to #isSpecialReadBinding.
>> >
>> > This causes LiteralVariableNode>>#sizeCodeForValue: to bypass the
>> > guard at the top of that method, calculating a different value than it
>> > otherwise would.
>> >
>> > What should be done?
>>
>> (right arrow, enter)
>>
>> Right. I'm not sure what should be done, but we've seen Aliases
>> causing trouble elsewhere. IIRC I chased a semi-wild goose finding out
>> that #String -> Alias -> ClassBinding pointing to String isn't the
>> same as a ClassBinding pointing to String.
>>
>> Colin right asked why we have Aliases at all (because at the moment we
>> only have one Environment, hence no imports, hence no need for any
>> Aliases). We don't know where they came from. Attempting to Compiler
>> recompileAll doesn't get right of them.
>>
>> frank
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20131218/811a6887/attachment.htm


More information about the Squeak-dev mailing list