On Jan 9, 2012, at 8:46 06PM, Levente Uzonyi wrote:
> On Mon, 9 Jan 2012, Mariano Martinez Peck wrote:
>
>>>
>>>>>
>>>>> So..I am puzzle again. I said "In which scenario can � � (self
>>>> instVarsInclude: anObject) �answer true, but the loop false? "
>>>> you answered: "The scenario happens when the receiver has weak slots and
>>>> the argument is referenced from one of those weak slots, but not from the
>>>> other slots."
>>>> Imagine the receiver has a weak slot XXX that points to anObject. So (self
>>>> instVarsInclude: anObject) answers true. � How can the loop answer false
>>>> without a GC?
>>>> why would XXX stop pointing to anObject if there is not GC in the middle ?
>>>>
>>>
>>> The loop doesn't iterate over the indexable slots, only named ones.
>>>
>>>
>> grrr you are right!
>>
>> Ok, so I finally got it. So previously pointersTo: would answer true even
>> if the slots were weak. Now it would answer false, and that's why you have
>> changed the method comment.
>> Now I am thinking if this should be the default behavior of #pointsTo:. If
>> I just read the selector #pointsTo: �I would guess weak references are also
>> taken into account. �So that's why I am not completely sure. Aren't there
>> any other impact of the system because of this change?
>> what about having #stronglyPointsTo: with this new version and have another
>> one #pointsTo: which considers weak also?
>> does it make sense? �or it is better to directly avoid weak by defualt in
>> #pointsTo?
>
> I wasn't sure about this, that's why it's not in Squeak yet. Ignoring weak references is okay as long as these methods are only used for pointer tracing.
>
>
> Levente
Even with a good comment, the naming starts to make little sense, imho�