The part about the variable dictionary doesn't make any sense at all. The context where the line is being traced doesn't really provide any useful information. The guard start is a combination of the guard state of all the stack frames for a given activity. Since methods are guarded by default, for any call stack, there are going to be many frames in a guarded state on potentially many objects and scopes, including nesting. This does NOT belong as part of tracing. It seriously clutters stuff up and doesn't really provide information that is needed on a statement-by-statement basis.
Rick On Mon, Jan 22, 2024 at 11:32 AM Rony G. Flatscher <rony.flatsc...@wu.ac.at> wrote: > Here an ooRexx implementation of the proposed TraceObject class in today's > "Proposal for multithreaded trace prefix" class: > > /* ========================================================================= > */::class "TraceObject" subclass StringTable public > /* ------------------------------------------------------------------------- > */::attribute mtPrefix class -- if .true causes the mtPrefix to > be created/* > ------------------------------------------------------------------------- > */::method MAKESTRING > if self~class~mtPrefix<>.true then -- do not show multithreaded prefix > return self["TRACELINE"] -- return standard trace line mb = > .MutableBuffer~new -- for performance reasons mb~append("[") > mb~append("R", adjLeft(self["INSTANCE"] ,3), " ") -- R_exx interpreter > instance mb~append("T", adjLeft(self["THREAD"] ,3), " ") -- > T_hread/activity mb~append("I", adjLeft(self["INVOCATION"],3) ) -- > I_nvocation/activation vd=self["VARIABLEDICTIONARY"] > if vd<>0 then -- an object's variable dictionary in hand, we are in a > method do > mb~append(" ") > mb~append(self["ISGUARDED"]~?("G","U") , " ") -- G_uarded or > U_unguarded mb~append("V", adjLeft(vd ,3), " ") -- > V_ariable dictionary pool mb~append("L", adjLeft(self["LOCKCOUNT"],3), " > ") -- L ... lock reserve count mb~append(self["ISLOCKED"]~?("*"," ")) > -- asterisk to indicate holding object lock (can execute) end > mb~append("] ", self["TRACELINE"]) > return mb~string -- return trace line with mtPrefixadjLeft: procedure > -- left adjust, but make sure we show all chars use arg value, width > if value~length>=width then -- no left adjustment return value > return value~left(width) -- left adjust with given width > > ---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