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
DIRECTORY
Allocator USING [NHeaderP],
Collector USING [Disposition],
PrincOps USING [zMISC, zWCDBL, alpha],
SafeStorage USING [Type],
ZCT USING [ZeroCountTable];
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:
REF ←
NIL] =
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