<> <> <> <> 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; <> <<"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>> 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.