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.