CedarMicrocode.mesa
Paul Rovner, November 10, 1983 4:04 pm
Bob Hagmann, May 11, 1984 4:11:40 pm PDT
Russ Atkinson (RRA) February 1, 1985 12:49:11 pm PST
Beach, February 22, 1985 2:53:32 pm PST
Doug Wyatt, February 24, 1985 9:28:26 pm PST
Defines the interface between the CedarRuntime software and the CedarRuntime microcode
DIRECTORY
Allocator USING [NHeaderP],
Collector USING [Disposition],
PrincOps USING [zMISC, zWCDBL, alpha],
SafeStorage USING [Type],
ZCT USING [ZeroCountTable];
CedarMicrocode: DEFINITIONS
= BEGIN
Types
microcodeVersion: CARDINAL = 4;
microcode version number that corresponds to this CedarRuntime system
alpha: TYPE = PrincOps.alpha;
aRECLAIMEDREF: alpha = 140B;
used by the reclaimer when it finds a REF to be nilified in an object being reclaimed
aENABLEMICROCODE: alpha = 141B;
aDISABLEMICROCODE: alpha = 142B;
aCREATEREF: alpha = 143B;
used to establish a newly allocated object as such (sets refcount to logical 0)
aRECLAIMABLEREF: alpha = 144B;
used by the collector to examine each ZCT entry
aALLOCATEOBJECT: alpha = 145B;
aFREEOBJECT: alpha = 146B;
aGETCANONICALREFERENTTYPE: alpha = 72B;
used (e.g.) by compiled code for NARROW
aRTMOVESTATUS: alpha = 63B; -- A VESTIGE, for compatibility in the interim
Support for the allocator
aALLOCATEHEAPNODE: alpha = 74B;
aFREEOBJECT: alpha = 75B;
aFREEPREFIXEDNODE: alpha = 77B;
Machine Code Procedures
ASSIGNREF: PROC[refNew: REF, refPtr: LONG POINTER TO REF] =
MACHINE CODE { PrincOps.zWCDBL, 0 };
CREATEREF: PROC[nhp: Allocator.NHeaderP] =
MACHINE CODE { PrincOps.zMISC, aCREATEREF };
RECLAIMABLEREF: PROC[nhp: Allocator.NHeaderP] RETURNS[Collector.Disposition] =
MACHINE CODE { PrincOps.zMISC, aRECLAIMABLEREF };
RECLAIMEDREF: PROC[ref: REF] RETURNS[REF] =
MACHINE CODE { PrincOps.zMISC, aRECLAIMEDREF };
ENABLEMICROCODE: PROC[zct: ZCT.ZeroCountTable] RETURNS [ucVersion: NAT] =
MACHINE CODE { PrincOps.zMISC, aENABLEMICROCODE };
DISABLEMICROCODE: PROC[zct: ZCT.ZeroCountTable] =
MACHINE CODE { PrincOps.zMISC, aDISABLEMICROCODE };
ALLOCATE: PROC[size: CARDINAL, type: SafeStorage.Type] RETURNS[r: REFNIL] =
MACHINE CODE { PrincOps.zMISC, aALLOCATEOBJECT };
FREEPLEASE: PROC[nhp: Allocator.NHeaderP] RETURNS[success: BOOL] =
MACHINE CODE { PrincOps.zMISC, aFREEOBJECT };
GETCANONICALREFERENTTYPE: PROC[ref: REF] RETURNS[SafeStorage.Type] =
MACHINE CODE { PrincOps.zMISC, aGETCANONICALREFERENTTYPE };
RTMOVESTATUS: PROC[msOperation: CARDINAL, gcStateBank: CARDINAL ← 0] RETURNS[CARDINAL] =
MACHINE CODE { PrincOps.zMISC, aRTMOVESTATUS };
A VESTIGE, for compatibility in the interim
END.