DIRECTORY PrincOps USING[zMISC, zWCDBL, zICDBL, alpha ], RTRefCounts USING[ProbeIndex, rcoState, MSOperation], RTZones USING[PZone], SafeStorage USING[Type]; RTMicrocode: DEFINITIONS = BEGIN OPEN PrincOps; microcodeVersion: CARDINAL = 13B; aRECLAIMEDREF: alpha = 60B; aALTERCOUNT: alpha = 61B; aRSTKBits: alpha = 62B; aRTMOVESTATUS: alpha = 63B; aRCFINALIZECOUNT: alpha = 64B; aISPIRECLAIMABLE: alpha = 65B; aREADREGS: alpha = 66B; aCREATEREF: alpha = 67B; aDUMPINDEX: alpha = 70B; aGETCANONICALREFERENTTYPE: alpha = 72B; aALLOCATEHEAPNODE: alpha = 74B; aFREEOBJECT: alpha = 75B; aFREEPREFIXEDNODE: alpha = 77B; RECLAIMEDREF: PROC[ref: REF] RETURNS[REF] = MACHINE CODE { zMISC, aRECLAIMEDREF }; ALTERCOUNT: PROC[rcv: RTRefCounts.rcoState, ref: REF] = MACHINE CODE { zMISC, aALTERCOUNT }; RESETSTKBITS: PROC[pi: RTRefCounts.ProbeIndex] = MACHINE CODE { zMISC, aRSTKBits }; RTMOVESTATUS: PROC[msOperation: RTRefCounts.MSOperation, gcStateBank: CARDINAL _ 0] RETURNS[CARDINAL]= MACHINE CODE { zMISC, aRTMOVESTATUS }; RCFINALIZECOUNT: PROC RETURNS [CARDINAL] = MACHINE CODE { zMISC, aRCFINALIZECOUNT }; ISPIRECLAIMABLE: PROC[pi: RTRefCounts.ProbeIndex] RETURNS[fpi: RTRefCounts.ProbeIndex, npi: CARDINAL] = MACHINE CODE { zMISC, aISPIRECLAIMABLE }; READREGS: PROC RETURNS[CARDINAL] = MACHINE CODE { zMISC, aREADREGS }; CREATEREF: PROC[npr: RTRefCounts.rcoState, ref: REF] = MACHINE CODE { zMISC, aCREATEREF }; DUMPINDEX: PROC[pi: RTRefCounts.ProbeIndex] RETURNS[count: CARDINAL] = MACHINE CODE { zMISC, aDUMPINDEX }; GETCANONICALREFERENTTYPE: PROC[ref: REF] RETURNS[SafeStorage.Type] = MACHINE CODE { zMISC, aGETCANONICALREFERENTTYPE }; ALLOCATEHEAPNODE: PROC[zn: RTZones.PZone, size: CARDINAL, type: SafeStorage.Type] RETURNS[LONG POINTER] = MACHINE CODE { zMISC, aALLOCATEHEAPNODE }; FREEOBJECT: PROC[ptr: LONG POINTER] = MACHINE CODE { zMISC, aFREEOBJECT }; FREEPREFIXEDNODE: PROC[ptr: LONG POINTER, zn: RTZones.PZone] = MACHINE CODE { zMISC, aFREEPREFIXEDNODE }; PPALTERCOUNT: PROC[rcv: RTRefCounts.rcoState, ref: REF] = MACHINE CODE { zMISC, aALTERCOUNT}; ASSIGNREF: PROC[refNew: REF, refPtr: LONG POINTER TO REF] = MACHINE CODE { zWCDBL, 0 }; ASSIGNREFNEW: PROC[refNew: REF, refPtr: LONG POINTER TO REF] = MACHINE CODE { zICDBL, 0 }; END. èRTMicrocode.Mesa Defines the interface between the CedarRuntime software and the CedarRuntime microcode last edited 2-Feb-82 11:38:48 by Willie-Sue last edited May 11, 1983 10:43 am by Paul Rovner microcode version number that corresponds to this CedarRuntime system Stuff that will(?) be in PrincOps... used by the reclaimer when it finds a REF to be nilified in an object being reclaimed general, low-level access to refcount table entries; used by the collectors used by the collector to reset onStack bits at end of collection used in two ways, based on first arg (msOperation): "initialize" ... initialize CedarRuntime ucode "upDate" ... move info about overflow free list from microcode registers to memory and move other status info from memory to microcode registers used for statistics gathering, maybe someday to decide to collect used by the reclaimer to examine refcount table entries used for Cedar microcode debugging used to establish a newly allocated object as such (sets refcount to logical 0) NOTE copied in RTMicrocode to break DEFS circularity used for Cedar software debugging used (e.g.) by compiled code for NARROW Support for the allocator MACHINE CODE Procedures... NOTE copied in RTRefCounts to break DEFS circularity Ê#˜Jšœ™JšœV™VJšœ+™+Jšœ0™0˜šÏk ˜ Jšœ œ ˜.Jšœ œ$˜5Jšœœ˜Jšœ œ˜—J˜Jšœ ˜Jšœ œ˜J˜šœœ˜!JšœE™E—™J™—Jšœ$™$J˜šœ˜JšœU™U—šœ˜JšœL™L—šœ˜Jšœ@™@—šœ˜šœ3™3J™.J™——šœ˜JšœA™A—šœ˜Jšœ7™7—šœ˜Jšœ"™"—J˜šœ˜JšœO™OJšÏc4™4—J˜šœ˜Jšœ!™!—J˜šœ'˜'Jšœ'™'—˜Jšœ™—Jšœ˜Jšœ˜Jšœ˜J˜J™Jšœ™J™š œœœœœ˜+Jšœœ˜&—J˜š œœ!œ˜8Jšœœ˜$—J˜š œœ˜0Jšœœ˜"—J˜š œœ4œ˜SJšœœ˜Jšœœ˜&—J˜šœœœœ˜*Jšœœ˜)—J˜šœœ˜1Jšœ#œ˜6Jšœœ˜)—J˜šœœœœ˜#Jšœœ˜"J˜—Jšœ4™4š œœ!œ˜6Jšœœ˜#J˜—š œœœœ˜FJšœœ˜#—J˜šœœœœ˜DJšœœ&˜2—J˜šœ˜Jš œœœœœ˜WJšœœ˜*—J˜š œœœœ˜%Jšœœ˜$—J˜šœœœœ˜>Jšœœ˜*—J˜š œœ!œ˜:Jšœœ˜#—J˜š œœ œ œœœœ˜