MimP5S.mesa
Copyright Ó 1985, 1986, 1987, 1988, 1991 by Xerox Corporation. All rights reserved.
Sweet, May 28, 1986 11:30:00 am PDT
Satterthwaite, 31-Dec-81 10:40:31
Russ Atkinson (RRA) November 28, 1989 9:19:35 am PST
DIRECTORY
IntCodeDefs USING [Node, Var],
MimCode USING [CodeList, StoreOptions],
Symbols USING [nullType, Type, typeANY],
Tree USING [Index, Link];
MimP5S: DEFINITIONS
= BEGIN OPEN IntCodeDefs, MimCode, Symbols;
TreeIndex: TYPE = Tree.Index;
from MimStore
DIndex: PROC [node: TreeIndex] RETURNS [Node];
Index: PROC [node: TreeIndex] RETURNS [Node];
SeqIndex: PROC [node: TreeIndex] RETURNS [Node];
GetCategory: SAFE PROC [n: Node] RETURNS [Category];
Category: TYPE = {constant, constLocal, local, constGlobal, global, other};
WillEvalToConst: PROC [t: Tree.Link, noLocals: BOOL ¬ FALSE] RETURNS [BOOL];
from MimCalls
Call: PROC [node: TreeIndex] RETURNS [Node];
Create: PROC [node: TreeIndex] RETURNS [Node];
ForkExp: PROC [node: TreeIndex] RETURNS [Node];
Free: PROC [node: TreeIndex] RETURNS [Node];
Join: PROC [node: TreeIndex] RETURNS [Node];
ProcCheck: PROC [node: TreeIndex] RETURNS [Node];
Restart: PROC [node: TreeIndex] RETURNS [Node];
SigErr: PROC [node: TreeIndex, error: BOOL, stmt: BOOL] RETURNS [Node];
Start: PROC [node: TreeIndex] RETURNS [Node];
Stop: PROC [node: TreeIndex] RETURNS [Node];
SysErrExp: PROC [node: TreeIndex] RETURNS [Node];
Unlock: PROC [node: TreeIndex] RETURNS [Node];
from MimDriver
Lock: PROC [node: TreeIndex] RETURNS [Node];
Result: PROC [node: TreeIndex] RETURNS [Node];
Resume: PROC [node: TreeIndex] RETURNS [Node];
Return: PROC [node: TreeIndex] RETURNS [Node];
RetWithError: PROC [node: TreeIndex] RETURNS [Node];
StringInit: PROC [node: TreeIndex] RETURNS [Node];
Subst: PROC [node: TreeIndex, resultType: Type ¬ nullType] RETURNS [Node];
from MimFlow
CatchMark: PROC [node: TreeIndex] RETURNS [Node];
Continue: PROC RETURNS [Node];
Exit: PROC RETURNS [Node];
GoTo: PROC [node: TreeIndex] RETURNS [Node];
LabelStmt: PROC [node: TreeIndex] RETURNS [Node];
Loop: PROC RETURNS [Node];
Retry: PROC RETURNS [Node];
SplitArith: PROC [n: Node] RETURNS [exp: Node, const: CARD];
from MimStore
Assign: PROC [node: TreeIndex] RETURNS [Node];
AssignExp: PROC [node: TreeIndex] RETURNS [Node];
ComAssign: PROC [t1, t2: Tree.Link, options: StoreOptions] RETURNS [Node];
EvalToTemp: PROC [cl: CodeList, t: Tree.Link] RETURNS [Tree.Link];
This routine evaluates the expression given by t into a temporary, with any side effects generating code into cl, and returns a link for the temporary.
Extract: PROC [node: TreeIndex] RETURNS [Node];
ExtractExp: PROC [node: TreeIndex] RETURNS [Node];
ExtendValue: PROC [node: Node, dstType, srcType: Type, bits: INT] RETURNS [Node];
Extends the given value according to the assumed source and destination types. If they are not arithmetic, then assume the given # of bits.
Temporize: PROC [cl: CodeList, n: Node, type: Type ¬ typeANY] RETURNS [Var];
Puts the node n into a temporary declared in cl, with the given type. The resulting temporary is not permitted to be modified.
END.