Alloc.mesa
Copyright © 1985 by Xerox Corporation. All rights reserved.
Sweet, 19-Aug-81 12:14:14
Satterthwaite, June 10, 1986 3:02:18 pm PDT
Rovner, September 19, 1983 9:36 pm
Russ Atkinson (RRA) January 31, 1985 1:05:54 pm PST
DIRECTORY
VM: TYPE USING[wordsPerPage];
Alloc:
DEFINITIONS = {
Selector:
TYPE =
CARDINAL;
Base: TYPE = LONG ORDERED BASE POINTER;
Index: TYPE = Base RELATIVE LONG POINTER;
OrderedIndex:
TYPE = Base
RELATIVE
LONG ORDERED
POINTER;
Handle: TYPE = REF InstanceData;
InstanceData: TYPE;
allocation from the tables as stacks
Words: PROC[h: Handle, table: Selector, size: CARDINAL] RETURNS[OrderedIndex];
Trim: PROC[h: Handle, table: Selector, size: CARD];
allocation from free list
defaultChunkType: Selector = Selector.FIRST;
GetChunk: PROC[h: Handle, size: CARDINAL, table: SelectorultChunkType] RETURNS[Index];
FreeChunk: PROC[h: Handle, index: Index, size: CARDINAL, table: SelectorultChunkType];
inquiries
Bounds: PROC[h: Handle, table: Selector] RETURNS[base: Base, size: CARD];
Top: PROC[h: Handle, table: Selector] RETURNS[OrderedIndex];
Bias:
PROC[h: Handle, table: Selector]
RETURNS[
CARD];
inquiries and notification of moving subtables
BaseSeq: TYPE = RECORD[SEQUENCE length: NAT OF Base];
Notifier: TYPE = PROC[base: REF BaseSeq];
AddNotify: PROC[h: Handle, proc: Notifier];
DropNotify: PROC[h: Handle, proc: Notifier];
initialization and termination
addrSpan: CARD = 1000000H; -- 24 bits of address
TableInfo:
TYPE =
RECORD[
tag: [0..100H), -- 8 bits of tag
initialPages: CARDINAL,
maxPages: CARDrSpan/VM.wordsPerPage -- and 24 bits of offset
Create: PROC[weights: DESCRIPTOR FOR ARRAY OF TableInfo] RETURNS[Handle];
Destroy: PROC[Handle];
Reset: PROC[Handle];
Chunkify:
PROC[
h: Handle, table: SelectorultChunkType,
firstSmall: NAT𡤅, nSmall: NAT𡤄];
UnChunkify: PROC[h: Handle, table: Selector];
ResetChunk: PROC[h: Handle, table: Selector];
ResetTable: PROC[h: Handle, table: Selector, info: TableInfo];
Failure: ERROR[h: Handle, table: Selector];
Overflow: SIGNAL[h: Handle, table: Selector] RETURNS[extra: CARD];
}.