[Vm-dev] Finding pointers via heap walking and contexts
Eliot Miranda
eliot.miranda at gmail.com
Thu Aug 29 16:34:20 UTC 2013
On Thu, Aug 29, 2013 at 8:54 AM, Igor Stasenko <siguctua at gmail.com> wrote:
>
> Hello,
>
> i tried to implement a simple algorithm to find nearest common roots for
> some object(s)..
> see the attached code.
>
> The problem i discovered that the last assertion of my test fails:
> =====
> testArrayShouldBeRootOfItsElements
>
> | obj1 obj2 array arrayToTest roots |
>
> obj1 := 'ObjectA' copy.
> obj2 := 'ObjectB' copy.
>
> array := { obj1. obj2 }.
> arrayToTest := { obj1. obj2 }.
>
> roots := CommonRootsFinder new findCommonRootsOf: arrayToTest.
>
> self assert: (roots identityIncludes: array).
> self assert: (roots identityIncludes: arrayToTest) not.
> self assert: (roots identityIncludes: thisContext). "- sometimes
> works , sometimes not "
> ========
>
> but, when i restart the method in debugger and step down through it,
> assertion DOES NOT fails.
> This means that memory scan does not reveals this context as it should be.
>
> (maybe because it stops at the object which located before location of
> thisContext)?
>
That would make sense. For debugging, why don't you record the objects
visited in an OrderedCollection, and then you can look at what order the
pointer finder found them.
>
> any suggestions/comments/ideas , how to make sure that assert will never
> fail?
>
Doesn't that depend on how you've implemented CommonRootsFinder?
> --
> Best regards,
> Igor Stasenko.
>
>
--
best,
Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20130829/d6c9e78c/attachment.htm
More information about the Vm-dev
mailing list