PointerFinder & PointerExplorer

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

PointerFinder & PointerExplorer

Johan Brichau
Issue #156 (http://code.google.com/p/pharo/issues/detail?id=156) states that PointerFinder and PointerExplorer both have issues leaving out some pointers.

Andy and I have been looking at the implementation of PointerFinder and PointerExplorer in Pharo1.1 to fix this.

We came to the decision to throw out PointerFinder, replace its uses to uses of PointerExplorer and move PointerFinder's #pointersTo* class methods to ProtoObject because:
- PointerFinder's (instance) behavior seems to be really old code that was not using the pointsTo: (primitive) method, while its #pointersTo* class methods were using the pointsTo: (primitive) method
- It also seems the instance behavior of PointerFinder was wrong (it did not give us all pointers *at all*)
- PointerExplorer offers the same functionality using a tree view and eventually used the #pointersTo* class methods of PointerFinder...

The fix is in SLICE-PointerFinderRemove-AndyKellens.1 and should be for 1.2

Maybe anyone has another opinion?

----------------------------
Johan Brichau
[hidden email]





_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: PointerFinder & PointerExplorer

Stéphane Ducasse
thanks.

Stef

On Jun 12, 2010, at 10:33 AM, Johan Brichau wrote:

> Issue #156 (http://code.google.com/p/pharo/issues/detail?id=156) states that PointerFinder and PointerExplorer both have issues leaving out some pointers.
>
> Andy and I have been looking at the implementation of PointerFinder and PointerExplorer in Pharo1.1 to fix this.
>
> We came to the decision to throw out PointerFinder, replace its uses to uses of PointerExplorer and move PointerFinder's #pointersTo* class methods to ProtoObject because:
> - PointerFinder's (instance) behavior seems to be really old code that was not using the pointsTo: (primitive) method, while its #pointersTo* class methods were using the pointsTo: (primitive) method
> - It also seems the instance behavior of PointerFinder was wrong (it did not give us all pointers *at all*)
> - PointerExplorer offers the same functionality using a tree view and eventually used the #pointersTo* class methods of PointerFinder...
>
> The fix is in SLICE-PointerFinderRemove-AndyKellens.1 and should be for 1.2
>
> Maybe anyone has another opinion?
>
> ----------------------------
> Johan Brichau
> [hidden email]
>
>
>
>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: PointerFinder & PointerExplorer

Mariano Martinez Peck
In reply to this post by Johan Brichau
Hi Johan. Very nice you started with this. Once, I took that issue and understood what Mattew did in squeak:  http://bugs.squeak.org/view.php?id=7158

I liked his solution but I was not completly agree, I don't remember why, thus. Did you look at it?  any thoughts about that?

cheers

Mariano

On Sat, Jun 12, 2010 at 10:33 AM, Johan Brichau <[hidden email]> wrote:
Issue #156 (http://code.google.com/p/pharo/issues/detail?id=156) states that PointerFinder and PointerExplorer both have issues leaving out some pointers.

Andy and I have been looking at the implementation of PointerFinder and PointerExplorer in Pharo1.1 to fix this.

We came to the decision to throw out PointerFinder, replace its uses to uses of PointerExplorer and move PointerFinder's #pointersTo* class methods to ProtoObject because:
- PointerFinder's (instance) behavior seems to be really old code that was not using the pointsTo: (primitive) method, while its #pointersTo* class methods were using the pointsTo: (primitive) method
- It also seems the instance behavior of PointerFinder was wrong (it did not give us all pointers *at all*)
- PointerExplorer offers the same functionality using a tree view and eventually used the #pointersTo* class methods of PointerFinder...

The fix is in SLICE-PointerFinderRemove-AndyKellens.1 and should be for 1.2

Maybe anyone has another opinion?

----------------------------
Johan Brichau
[hidden email]





_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: PointerFinder & PointerExplorer

Stéphane Ducasse
Yes they did and we talked a lot about it. It took us 3-4 hours :)

On Jun 12, 2010, at 3:29 PM, Mariano Martinez Peck wrote:

> Hi Johan. Very nice you started with this. Once, I took that issue and understood what Mattew did in squeak:  http://bugs.squeak.org/view.php?id=7158
>
> I liked his solution but I was not completly agree, I don't remember why, thus. Did you look at it?  any thoughts about that?
>
> cheers
>
> Mariano
>
> On Sat, Jun 12, 2010 at 10:33 AM, Johan Brichau <[hidden email]> wrote:
> Issue #156 (http://code.google.com/p/pharo/issues/detail?id=156) states that PointerFinder and PointerExplorer both have issues leaving out some pointers.
>
> Andy and I have been looking at the implementation of PointerFinder and PointerExplorer in Pharo1.1 to fix this.
>
> We came to the decision to throw out PointerFinder, replace its uses to uses of PointerExplorer and move PointerFinder's #pointersTo* class methods to ProtoObject because:
> - PointerFinder's (instance) behavior seems to be really old code that was not using the pointsTo: (primitive) method, while its #pointersTo* class methods were using the pointsTo: (primitive) method
> - It also seems the instance behavior of PointerFinder was wrong (it did not give us all pointers *at all*)
> - PointerExplorer offers the same functionality using a tree view and eventually used the #pointersTo* class methods of PointerFinder...
>
> The fix is in SLICE-PointerFinderRemove-AndyKellens.1 and should be for 1.2
>
> Maybe anyone has another opinion?
>
> ----------------------------
> Johan Brichau
> [hidden email]
>
>
>
>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: PointerFinder & PointerExplorer

Johan Brichau
In reply to this post by Mariano Martinez Peck
Hi Mariano,

Indeed, we intended to adopt that fix at first. Here's what we saw:

PointerFinder works by following pointers forward from the global dictionary.
PointerExplorer works by following pointers backward from the inspected object, using #pointsTo:

Matthew's fix includes an adaptation of #pointsTo: to include the 'pointer' from instances to their class, and renames the original #pointsTo: to #instVarsInclude:
In essence, this means:

(#bar pointsTo: Symbol) == true
(#bar instVarInclude: Symbol) == false

But:

PointerFinder on: Symbol
        -> opens an empty window...

Which makes the two tools pretty inconsistent, imho. In addition, PointerFinder is rather weird in usage: showing you a single path at a time. So, we would rather prefer to keep the instance-to-class pointer out of the #pointsTo: implementation alltogether and only use PointerExplorer.

Thinking a bit more about this, it would make sense to improve PointerExplorer such that the ideal use-case for PointerFinder is better supported: i.e. 'open all paths to global dictionary'.
I hope I'm making sense here :-)

Johan

On 12 Jun 2010, at 15:29, Mariano Martinez Peck wrote:

> Hi Johan. Very nice you started with this. Once, I took that issue and understood what Mattew did in squeak:  http://bugs.squeak.org/view.php?id=7158
>
> I liked his solution but I was not completly agree, I don't remember why, thus. Did you look at it?  any thoughts about that?
>
> cheers
>
> Mariano
>
> On Sat, Jun 12, 2010 at 10:33 AM, Johan Brichau <[hidden email]> wrote:
> Issue #156 (http://code.google.com/p/pharo/issues/detail?id=156) states that PointerFinder and PointerExplorer both have issues leaving out some pointers.
>
> Andy and I have been looking at the implementation of PointerFinder and PointerExplorer in Pharo1.1 to fix this.
>
> We came to the decision to throw out PointerFinder, replace its uses to uses of PointerExplorer and move PointerFinder's #pointersTo* class methods to ProtoObject because:
> - PointerFinder's (instance) behavior seems to be really old code that was not using the pointsTo: (primitive) method, while its #pointersTo* class methods were using the pointsTo: (primitive) method
> - It also seems the instance behavior of PointerFinder was wrong (it did not give us all pointers *at all*)
> - PointerExplorer offers the same functionality using a tree view and eventually used the #pointersTo* class methods of PointerFinder...
>
> The fix is in SLICE-PointerFinderRemove-AndyKellens.1 and should be for 1.2
>
> Maybe anyone has another opinion?
>
> ----------------------------
> Johan Brichau
> [hidden email]
>
>
>
>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

----------------------------
Johan Brichau
[hidden email]





_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: PointerFinder & PointerExplorer

Stéphane Ducasse
could you open a ticket for the next iteration (now that you have the idea fresh in your mind).
I want that we get a really nice pointerExplorer tools.

Stef
On Jun 12, 2010, at 9:54 PM, Johan Brichau wrote:

> Hi Mariano,
>
> Indeed, we intended to adopt that fix at first. Here's what we saw:
>
> PointerFinder works by following pointers forward from the global dictionary.
> PointerExplorer works by following pointers backward from the inspected object, using #pointsTo:
>
> Matthew's fix includes an adaptation of #pointsTo: to include the 'pointer' from instances to their class, and renames the original #pointsTo: to #instVarsInclude:
> In essence, this means:
>
> (#bar pointsTo: Symbol) == true
> (#bar instVarInclude: Symbol) == false
>
> But:
>
> PointerFinder on: Symbol
> -> opens an empty window...
>
> Which makes the two tools pretty inconsistent, imho. In addition, PointerFinder is rather weird in usage: showing you a single path at a time. So, we would rather prefer to keep the instance-to-class pointer out of the #pointsTo: implementation alltogether and only use PointerExplorer.
>
> Thinking a bit more about this, it would make sense to improve PointerExplorer such that the ideal use-case for PointerFinder is better supported: i.e. 'open all paths to global dictionary'.
> I hope I'm making sense here :-)
>
> Johan
>
> On 12 Jun 2010, at 15:29, Mariano Martinez Peck wrote:
>
>> Hi Johan. Very nice you started with this. Once, I took that issue and understood what Mattew did in squeak:  http://bugs.squeak.org/view.php?id=7158
>>
>> I liked his solution but I was not completly agree, I don't remember why, thus. Did you look at it?  any thoughts about that?
>>
>> cheers
>>
>> Mariano
>>
>> On Sat, Jun 12, 2010 at 10:33 AM, Johan Brichau <[hidden email]> wrote:
>> Issue #156 (http://code.google.com/p/pharo/issues/detail?id=156) states that PointerFinder and PointerExplorer both have issues leaving out some pointers.
>>
>> Andy and I have been looking at the implementation of PointerFinder and PointerExplorer in Pharo1.1 to fix this.
>>
>> We came to the decision to throw out PointerFinder, replace its uses to uses of PointerExplorer and move PointerFinder's #pointersTo* class methods to ProtoObject because:
>> - PointerFinder's (instance) behavior seems to be really old code that was not using the pointsTo: (primitive) method, while its #pointersTo* class methods were using the pointsTo: (primitive) method
>> - It also seems the instance behavior of PointerFinder was wrong (it did not give us all pointers *at all*)
>> - PointerExplorer offers the same functionality using a tree view and eventually used the #pointersTo* class methods of PointerFinder...
>>
>> The fix is in SLICE-PointerFinderRemove-AndyKellens.1 and should be for 1.2
>>
>> Maybe anyone has another opinion?
>>
>> ----------------------------
>> Johan Brichau
>> [hidden email]
>>
>>
>>
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>> _______________________________________________
>> Pharo-project mailing list
>> [hidden email]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
> ----------------------------
> Johan Brichau
> [hidden email]
>
>
>
>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project