Copyright (C) 1994, Digital Equipment Corp.
UNSAFE INTERFACEThis interface defines the low-level routines and data structures used by the exception runtime.RTExRep ; IMPORT Csetjmp;
----------------------------------------- compiler generated descriptors --
TYPE
ScopeKind = { Except, ExceptElse,
Finally, FinallyProc,
Raises, RaisesNone,
Lock };
TYPE
Frame = UNTRACED REF EF;
TYPE (* RaisesNone *)
EF = RECORD
next : Frame;
class : INTEGER; (* ORD(ScopeKind) *)
END;
TYPE (* Except, ExceptElse, Finally *)
PF1 = UNTRACED REF EF1;
EF1 = RECORD
next : Frame;
class : INTEGER; (* ORD(ScopeKind) *)
handles : ADDRESS; (* NIL-terminated list of exceptions handled *)
exception : ADDRESS; (* current exception being dispatched *)
arg : ADDRESS; (* current argument *)
jmpbuf : Csetjmp.jmp_buf;
END;
TYPE (* FinallyProc *)
PF2 = UNTRACED REF EF2;
EF2 = RECORD
next : Frame;
class : INTEGER; (* ORD(ScopeKind) *)
handler : ADDRESS; (* the procedure *)
frame : ADDRESS; (* static link for the handler *)
END;
TYPE (* Raises *)
PF3 = UNTRACED REF EF3;
EF3 = RECORD
next : Frame;
class : INTEGER; (* ORD(ScopeKind) *)
raises : ADDRESS; (* NIL-terminated list of exceptions allowed *)
END;
TYPE (* Lock *)
PF4 = UNTRACED REF EF4;
EF4 = RECORD
next : Frame;
class : INTEGER; (* ORD(ScopeKind) *)
mutex : MUTEX; (* the locked mutex *)
END;
END RTExRep.