StackTrace.mesa
Copyright Ó 1990, 1991 by Xerox Corporation. All rights reserved.
Linda Howe, February 9, 1990 1:06:40 pm PST
Bill Jackson (bj) February 15, 1990 6:20:34 pm PST
Last changed by Pavel on April 30, 1990 6:16 pm PDT
Spreitze, December 20, 1990 11:09 am PST
~
BEGIN
FramePointer: TYPE ~ POINTER TO Frame;
Frame: TYPE;
ProgramCounter: TYPE ~ POINTER TO Instruction;
Instruction: TYPE;
FrameInfo: TYPE ~ REF FrameInfoBody;
FrameInfoBody:
TYPE ~
RECORD [
index: NAT,
pc: ProgramCounter,
fp: FramePointer,
sp: FramePointer
];
Names: TYPE ~ REF NamesBody;
NamesBody:
TYPE ~
RECORD [
loadedFileName: Rope.ROPE,
loadedTextStart, embeddedTextStart: CARD,
embeddedDotONames: LIST OF Rope.ROPE,
procName: Rope.ROPE
];
FrameProc: TYPE ~ PROC [frame: FrameInfo, names: Names] RETURNS [quit: BOOL];
NoStack:
ERROR [msg: Rope.
ROPE];
Either thread doesn't exist, or runtime support failed.
Trace:
PROC [thread:
CARD32, callback: FrameProc];
Enumerate thread's stack from hottest to coldest frame.