I also want to point out this was something I pointed out previously when I
said that the lock count was not a very useful piece of information in the
original trace proposal. What is really needed is the combination of
"object instance (perhaps the identity hash)" + "method scope (to identify
the variable pool in question)" + "the lock count for the activity".

That will uniquely identify what the scope lock situation is.

Rick

On Wed, Mar 27, 2024 at 9:10 AM Rony G. Flatscher <rony.flatsc...@wu.ac.at>
wrote:

> Consider the following short program that defines a class and an instance
> method and uses them:
>
> .TraceObject~option='N'
> .test~clzHi    -- class method will be invoked
> .test~new~hi   -- instance method will be invoked
>
> ::class test
> ::method clzHi class
>   say self": clzHi, scope:" .context~executable~scope
> ::method hi
>   say self": Hi,    scope:" .context~executable~scope
>
> ::options trace all
>
> Running it yields the following output:
>
>      1 *-* .TraceObject~option='N'
>      2 *-* .test~clzHi    -- class method will be invoked
>       * >I> Method "CLZHI" with scope "TEST" in package 
> "G:\test\orx\trace\examples4docs\hmm\test_scope.rex".*
>      7 *-* say self": clzHi, scope:" .context~executable~scope
> The TEST class: clzHi, scope: The TEST class
>      3 *-* .test~new~hi   -- instance method will be invoked
>       * >I> Method "HI" with scope "TEST" in package 
> "G:\test\orx\trace\examples4docs\hmm\test_scope.rex".*
>      9 *-* say self": Hi,    scope:" .context~executable~scope
> a TEST: Hi,    scope: The TEST class
>
> The ">I>" trace line hints that both methods share the same scope "TEST"
> which is not the case as the class method and the instance method should
> have different scopes, which is also indicated by the following variant
> (full debug information):
>
> .TraceObject~option='*F*'
> .test~clzHi    -- class method will be invoked
> .test~new~hi   -- instance method will be invoked
>
> ::class test
> ::method clzHi class
>   say self": clzHi, scope:" .context~executable~scope
> ::method hi
>   say self": Hi,    scope:" .context~executable~scope
>
> ::options trace all
>
> which yields the following output:
>
>      1 *-* .TraceObject~option='F'
> [R1   T1   I1   ]                     2 *-* .test~clzHi    -- class method 
> will be invoked
> [R1   T1   I2    G *A1*    L0    ]        *>I> Method "CLZHI" with scope 
> "TEST" in package "G:\test\orx\trace\examples4docs\hmm\test_scope.rex".*
> [R1   T1   I2    G *A1*    L1   *]      7 *-* say self": clzHi, scope:" 
> .context~executable~scope
> The TEST class: clzHi, scope: The TEST class
> [R1   T1   I1   ]                     3 *-* .test~new~hi   -- instance method 
> will be invoked
> [R1   T1   I3    G *A2*    L0    ]       * >I> Method "HI" with scope "TEST" 
> in package "G:\test\orx\trace\examples4docs\hmm\test_scope.rex".*
> [R1   T1   I3    G *A2*    L1   *]      9 *-* say self": Hi,    scope:" 
> .context~executable~scope
> a TEST: Hi,    scope: The TEST class
>
> As can be seen the attribute (object variable) pool is different as the
> scope is really different ("A1" versus "A2").
>
> Method's scope() method returns the same class object. The TRACE ">I>"
> output also does not allow for differentiating between the two scopes.
>
> Maybe the ">I>" output could add something like '... scope "TEST" *at the
> class level *...' in the case of a class method?
>
> Also, it would be helpful to learn whether from a method object (if
> .context~executable~isA(.method) then...) whether its scope is at the class
> level (the method is a class method) or at the instance level. Maybe some
> method isClassMethod or so?
>
> Would that be a feasible extension?
>
> ---rony
>
> _______________________________________________
> Oorexx-devel mailing list
> Oorexx-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/oorexx-devel
>
_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to