Hi guys. Levente recommended us to integrate the new version of #pointsTo:,
and I did it. But not I think I found a bug. The method is:
pointsTo: anObject
"Answers true if I hold a reference to anObject, or false otherwise. Or
stated another way:
Answers true if the garbage collector would fail to collect anObject
because I hold a reference to it, or false otherwise"
^ (self instVarsInclude: anObject)
or: [self class == anObject]
The problem is that if the receiver is an instance of a compact class, this
method answers true to:
'aaa' pointsTo: ByteString
and I think that's incorrect. Moreoever, you can read the comment of the
method "Or stated another way: Answers true if the garbage collector would
fail to collect anObject because I hold a reference to it, or false
otherwise"
That's not true for compact classes.
With this change:
pointsTo: anObject
"Answers true if I hold a reference to anObject, or false otherwise. Or
stated another way:
Answers true if the garbage collector would fail to collect anObject
because I hold a reference to it, or false otherwise"
^ (self instVarsInclude: anObject)
or: [(self class indexIfCompact = 0) and: [self class == anObject] ]
it works fine.
Do you agree with the change?
cheers
--
Mariano
http://marianopeck.wordpress.com