On Tue, 2 Mar 2010, Alexandre Bergel wrote:

>> Well it seems rather special purpose. What are you using it for?
>> Why is the cost impacting your work?
>
> There is an excellent paper at oopsla'09 that shows the method call
> graph can be effectively inferred using the method call stack depth: 
> http://www-plan.cs.colorado.edu/klipto/mytkowicz-oopsla09.pdf
>
> Executing "[ running sender notNil ] whileTrue: [ running := running
> sender. depth := depth + 1]" before each method execution of my
> application terribly slows it down.

This is more than twice as fast, though it may be still too slow for your 
needs:

        | depth running |
        running := thisContext.
        depth := 1.
        [ (running := running instVarAt: 1) == nil ]
                whileFalse: [ depth := depth + 1 ].
        depth


Levente

>
> Cheers,
> Alexandre
>
>>
>> On 2010-03-02, at 4:06 PM, Alexandre Bergel wrote:
>>
>>> Will it be of any use for you? If yes, then I will do it.
>>>
>>> Alexandre
>>>
>>>
>>> On 2 Mar 2010, at 21:00, John M McIntosh wrote:
>>>
>>>> Maybe you could write a plugin/primitive to do the work?
>>>>
>>>> On 2010-03-02, at 3:50 PM, Alexandre Bergel wrote:
>>>>
>>>>> Dear List,
>>>>>
>>>>> I was wondering whether there is a fast way to know the method call
>>>>> stack depth. Something like what follows does the job:
>>>>>
>>>>> -=-=-=-=-=-=-=-=-=-=-=-=
>>>>> | depth running |
>>>>> depth := 0.
>>>>> running := thisContext.
>>>>> [ running sender notNil ] whileTrue: [ running := running sender.
>>>>> depth := depth + 1].
>>>>> depth
>>>>> -=-=-=-=-=-=-=-=-=-=-=-=
>>>>>
>>>>> But it is rather slow. Anyone has a suggestion?
>>>>>
>>>>> Cheers,
>>>>> Alexandre
>>>>> -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
>>>>> Alexandre Bergel  http://www.bergel.eu
>>>>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>>
>> --
>> =
>> =
>> =
>> =
>> =
>> ======================================================================
>> John M. McIntosh <john...@smalltalkconsulting.com>   Twitter:
>> squeaker68882
>> Corporate Smalltalk Consulting Ltd.  http://
>> www.smalltalkconsulting.com
>> =
>> =
>> =
>> =
>> =
>> ======================================================================
>>
>>
>>
>>
>
> -- 
> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> Alexandre Bergel  http://www.bergel.eu
> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>
>
>
>
>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project@lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>

_______________________________________________
Pharo-project mailing list
Pharo-project@lists.gforge.inria.fr
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

Reply via email to