Committed with [r12834] <https://sourceforge.net/p/oorexx/code-0/12834/> (code) and [r12835]
<https://sourceforge.net/p/oorexx/code-0/12835/> (unit tests) after running the entire test suite.
---rony
On 21.04.2024 20:47, Rony G. Flatscher wrote:
Thinking about this problem, the best understandable solution would probably be to insert an
invocation exit traceline in the thread right before starting to spawn in RexxActivation.
A test implementation would show the following output:
1 *-* .traceObject~option="T" -- from now on display thread id in
prefix
2 *-1* t=.test~new
3 *-1* t~test_reply
*>I1>* Method "TEST_REPLY" with scope "TEST" in package
"G:\test\orx\trace\test_reply.rex".
7 *-1* say "before reply ..."
before reply ...
8 *-1* reply
*<I1< *Method "TEST_REPLY" with scope "TEST" in package
"G:\test\orx\trace\test_reply.rex".
>I2> Method "TEST_REPLY" with scope "TEST" in package
"G:\test\orx\trace\test_reply.rex".
9 *-2* say "after reply ..."
after reply ...
*<I2<* Method "TEST_REPLY" with scope "TEST" in package
"G:\test\orx\trace\test_reply.rex".
As can be seen the invocation enter and exit tracelines now match, also with respect to the
respective thread ids.
---rony
On 20.04.2024 13:59, Rony G. Flatscher wrote:
Given the following program:
.traceObject~option="T" -- from now on display thread id in prefix
t=.test~new
t~test_reply
::class test
::method test_reply
say "before reply ..."
reply
say "after reply ..."
::options trace all
Running it will yield:
1 *-* .traceObject~option="T" -- from now on display thread id
2 *-1* t=.test~new
3 *-1* t~test_reply
>I1> Method "TEST_REPLY" with scope "TEST" in package
"G:\test\orx\trace\test_reply.rex".
7 *-1* say "before reply ..."
before reply ...
8 *-1* reply
*>I2> Method "TEST_REPLY" with scope "TEST" in package
"G:\test\orx\trace\test_reply.rex".*
9 *-2* say "after reply ..."
after reply ...
<I2< Method "TEST_REPLY" with scope "TEST" in package
"G:\test\orx\trace\test_reply.rex".
The ">I2>" traceline after line # 8 is probably caused by spawning a new activity to process the
remainder of the method's code.
However, this is a little bit misleading for the Rexx programmer as there is /no /new invocation
taking place, rather it is a continuation of the remainder on a new thread/activity. (In the
current form there is also no matching "<I1<" trace line.)
How about either removing ">I2>" or inserting an "<I1<" right before it or changing ">I2>" to
">T2>" (">T>") a new prefix indicating that the remainder gets executed on a new
thread/activity), if possible?
What do you think?
---rony
_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel
--
--
__________________________________________________________________________________
Prof. Dr. Rony G. Flatscher
Department Wirtschaftsinformatik und Operations Management
Institut für Wirtschaftsinformatik und Gesellschaft
D2c 2.086
WU Wien
Welthandelsplatz 1
A-1020 Wien/Vienna, Austria/Europe
http://www.wu.ac.at
__________________________________________________________________________________
_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel