DIRECTORY CirioBreakAccess USING[CirioBreakSet], CirioNubAccess USING[Handle], CirioTargets USING[Target], CirioTypes USING[CompilerContext, Node], IO USING[STREAM], LoadStateAccess USING[LoadStateHandle], NewAmpersandProcs USING[Handle], NewRMTW USING[CedarModuleSet, RemoteMimosaTargetWorld], OneCasabaParser USING[ParserTable], PFSNames USING [PATH], Rope USING[ROPE], SourceFileOpsExtras USING [noPosition, Position, ShowProc], SystemInterface USING[FileSet]; StackCirio: CEDAR DEFINITIONS = BEGIN CC: TYPE = CirioTypes.CompilerContext; Stack: TYPE = REF StackBody; StackBody: TYPE; OpenStack: PROC[ ampersandContext1: CirioTypes.Node, ampersandContext2: CirioTypes.Node, cc: CC, rmtw: NewRMTW.RemoteMimosaTargetWorld, cedarModules: NewRMTW.CedarModuleSet, nub: CirioNubAccess.Handle, target: CirioTargets.Target, fileSet: SystemInterface.FileSet, breaks: CirioBreakAccess.CirioBreakSet, lsh: LoadStateAccess.LoadStateHandle, aph: NewAmpersandProcs.Handle, cParserTable: OneCasabaParser.ParserTable, hotFramePC: CARD, hotFrameSP: CARD, skipKFrames: CARD, ShowSource: SourceFileOpsExtras.ShowProc, reports: IO.STREAM] RETURNS[Stack]; OpenDummyStack: PROC[ ampersandContext1: CirioTypes.Node, ampersandContext2: CirioTypes.Node, cc: CC, rmtw: NewRMTW.RemoteMimosaTargetWorld, cedarModules: NewRMTW.CedarModuleSet, nub: CirioNubAccess.Handle, target: CirioTargets.Target, fileSet: SystemInterface.FileSet, breaks: CirioBreakAccess.CirioBreakSet, lsh: LoadStateAccess.LoadStateHandle, aph: NewAmpersandProcs.Handle, cParserTable: OneCasabaParser.ParserTable, ShowSource: SourceFileOpsExtras.ShowProc, reports: IO.STREAM] RETURNS[Stack]; ShowQuickSummary: PROC[stack: Stack, stopFlag: REF BOOLEAN, on: IO.STREAM, long: BOOL]; QuickGenPossibleModuleNames: PROC[stack: Stack, for: PROC[name: PFSNames.PATH] RETURNS[--stop-- BOOLEAN], reports: IO.STREAM]; NoteFileCacheFlush: PROC[stack: Stack]; Disassemble: PROC[stack: Stack, text: Rope.ROPE, reports: IO.STREAM, stop: REF BOOL _ NIL]; ResetStack: PROC[stack: Stack, reports: IO.STREAM] RETURNS[newFrameIndex: CARD]; WalkStack: PROC[stack: Stack, movement: INT, reports: IO.STREAM] RETURNS[actualMovement: INT, newFrameIndex: CARD]; WalkStackCedarFrames: PROC[stack: Stack, nCedarFrames: INT, reports: IO.STREAM] RETURNS[actualNCedarFrames: INT, newFrameIndex: CARD]; WalkStackToCProcedure: PROC[stack: Stack, partialProcName: Rope.ROPE, moduleName: Rope.ROPE, reports: IO.STREAM] RETURNS[BOOLEAN]; GetBannerForDotOofCurrentFrame: PROC[stack: Stack, reports: IO.STREAM] RETURNS[Rope.ROPE]; GetCurrentFrameBanner: PROC[stack: Stack, reports: IO.STREAM] RETURNS[Rope.ROPE]; ShowCurrentFrame: PROC[stack: Stack, reports: IO.STREAM] RETURNS[Rope.ROPE]; ShowSourcePosition: PROC[stack: Stack, reports: IO.STREAM, stop: REF BOOL _ NIL]; InterpretTextLine: PROC[stack: Stack, text: Rope.ROPE, reports: IO.STREAM] RETURNS[Rope.ROPE]; SetDesiredLanguage: PROC [stack: Stack, lang: Language, reports: IO.STREAM]; Language: TYPE ~ {C, Cedar, Machine}; ReportDesiredLanguage: PROC [stack: Stack, reports: IO.STREAM _ NIL] RETURNS [Language]; FormatPrompt: PROC [stack: Stack, counter: INT] RETURNS [Rope.ROPE]; ClearBreakPoint: PROC[stack: Stack, reports: IO.STREAM]; ClearIthBreakPoint: PROC [stack: Stack, i: INT, reports: IO.STREAM]; ClearAllBreakPoints: PROC[stack: Stack, reports: IO.STREAM]; ClearBreakPointAtPosition: PUBLIC PROC[stack: Stack, pos: SourceFileOpsExtras.Position, reports: IO.STREAM]; ClearBreakPointAtAddress: PUBLIC PROC[stack: Stack, addr: CARD, reports: IO.STREAM]; GetAbsPC: PROC[stack: Stack] RETURNS[CARD]; FrameDiagnosticInfo: PROC[stack: Stack, reports: IO.STREAM]; ListBreakPoints: PROC[stack: Stack, reports: IO.STREAM]; SetBreakPointAtPosition: PUBLIC PROC[stack: Stack, pos: SourceFileOpsExtras.Position, reports: IO.STREAM, stopAll: BOOLEAN] RETURNS [whereSet: SourceFileOpsExtras.Position _ SourceFileOpsExtras.noPosition]; SetBreakPointAtAddress: PUBLIC PROC[stack: Stack, addr: CARD, reports: IO.STREAM, stopAll: BOOLEAN]; END.. Φ StackCirio.mesa Copyright Σ 1990, 1991, 1992, 1993 by Xerox Corporation. All rights reserved. Sturgis, March 26, 1990 10:16:07 am PST Coolidge, July 18, 1990 10:15 am PDT Last tweaked by Mike Spreitzer on July 23, 1992 2:06 pm PDT Philip James, August 27, 1991 4:50 pm PDT Udagawa, February 12, 1991 6:59 pm PST Laurie Horton, September 18, 1991 5:57 pm PDT Katsuyuki Komatsu January 22, 1993 12:39 pm PST Types Stacks the generated names include the funny generated names. The client should ignore case. All text from the first dot to the end of the name has been removed. This is intended to be used when searching for a thread by "context". We also generate the containing dotO name. Stack examination Focuses on the hottest frame. This procedure should be called before any frame manipulation procedure. Moves focus to a different frame. Positive movements are from hot frames to cold frames. Does not move beyond the hottest or coldest frame. Colder frames have higher frameIndices. Moves focus to a different frame. Positive movements are from hot frames to cold frames. Does not move beyond the hottest or coldest frame. Colder frames have higher frameIndices. Counts Cedar Frames rather than just any old frame. moves focus to first frame whose associated procedure name begins with the characters in partialProcName. Returned Boolean is TRUE iff the search was successful. Returns a terse text description of the DotO containing the embeddedDotO of the current frame. Returns a text description of the current frame. Shows the content of the current frame. opens a viewer on mesa file containing the current pc in the current frame. Sets a feedback selection on the source position corresponding to the pc. The text line will be interpreted in the context of the current frame. Writes a message (\n terminated) on reports if given. Clears the break (if any) at the absPC of the current frame in stack. i is as reported in ListBreakPoints. returns the absPC of the current frame in stack. This is used by the ClearBreakPoint procedure of RemoteCirioImpl. prints diagnostic info about the current frame on reports breakpoints are here for the moment, so that they need not be in both RemoteCirioImpl and LocalCirioImpl Κf•NewlineDelimiter ™codešœ™KšœN™NKšœ'™'K™$K™;K™)K™&K™-K™/K™—K˜šΟk ˜ Kšœœ˜&Kšœœ ˜Kšœ œ ˜Kšœ œ˜(Kšœœœ˜Kšœœ˜'Kšœœ ˜ Kšœœ*˜7Kšœœ˜#Kšœ œœ˜Kšœœœ˜Kšœœ"˜;Kšœœ ˜—K˜K˜K˜šΟn œœ œ˜ Kš˜K˜Kšœœ˜&K˜K™™Kšœœœ ˜Kšœ œ˜K˜—K˜K™K™™šž œœ˜Kšœ#˜#Kšœ#˜#Kšœœ˜Kšœ&˜&Kšœ%˜%Kšœ˜Kšœ˜Kšœ!˜!Kšœ'˜'K˜Kšœ%˜%K˜Kšœ*˜*K˜Kšœ œ˜Kšœ œ˜K˜Kšœ œ˜K˜Kšž œ˜)Kšœ œœœ˜#—K˜šžœœ˜Kšœ#˜#Kšœ#˜#Kšœœ˜Kšœ&˜&Kšœ%˜%Kšœ˜Kšœ˜Kšœ!˜!Kšœ'˜'Kšœ%˜%K˜Kšœ*˜*Kšž œ˜)Kšœ œœœ˜#—K™—˜K˜Kšžœœœœœœœ˜WK˜šžœœœœœΟcœœ œœ˜~K™—K˜Kšžœœ˜'K˜Kšž œœœ œœœœœ˜[K˜—K™K™™K™K˜š ž œœœœœœ˜PKšœg™g—K˜šž œœœ œœœœœ˜sKšœΆ™Ά—K˜šžœœœ œœœœœ˜†Kšœλ™λ—K˜šžœœ%œœ œœœœ˜‚K™’—K˜š žœœœœœœ˜ZKšœ`™`—K˜š žœœœœœœ˜QKšœ0™0—K˜š žœœœœœœ˜LKšœ'™'—K˜šžœœœœœœœ˜QK™–—K˜šžœœœ œœœœ˜^KšœF™F—K˜šžœœ)œœ˜LKšœ œ˜%—K˜š žœœœœœœ ˜XK™5—K˜Kš ž œœœœœ˜DK˜šžœœœœ˜8K™E—K˜š žœœœ œœ˜DK™$—K˜Kšžœœœœ˜