*----------------------------------------------------------- Title[DMesaAGDefs...December 13, 1982 3:14 PM...WSH]; *----------------------------------------------------------- SetRMRegion[Region14]; rvn[rcv]; * RefCountValue at call time rvn[residue]; rvn[probe]; rvn[entry]; rvn[onStack]; rvn[oiPrev0]; rvn[oiPrev1]; rvn[gcTemp]; rvn[gcTemp2]; rvn[gLink]; rvn[oofNum]; * in case of OutOfOverflowTable, encodes doingAddref rvn[rcFnzCount]; * (rcFinalizeCount) to help know when to collect ** holds state information from GCState; mesa code calls RTSetup whenever *** this info changes; ONLY the microcode changes oiFreeList&nOiFree rvn[oiFreeList]; rvn[nOiFree]; rvn[gcStateMask]; rvn[gcProcNum]; *----------------------------------------------------------- BR[gcMapPiRce, 16]; BR[gcStateBR, 17]; *----------------------------------------------------------- ** the following must agree with declarations in RTRefCounts.mesa mc[UVersion, 13]; * to co-ordinate changes mc[WrongUVersion, 2]; * to co-ordinate incompatible changes mc[nrceMask, 77777]; * all fields except tag field mc[refCtMask, 77400]; * only ref Count Field mc[rceEmpty, 177777]; * an overflow entry that is odd mc[emptyRefCtMask, 175400]; * ref Count Field w/o rcAbsent bit mc[rcAbsent, 4]; mc[rcFinalize, 3]; mc[rcAbsentShifted, lshift[4,10]]; mc[rcFinalizeShifted, lshift[3,10]]; mc[becameEmpty, lshift[4,1]]; * right justified RefCt & Stk fields mc[AddRefCt, lshift[1,10]]; mc[DeleteRefCt, lshift[177,10]]; mc[reclaimedRefDelta, lshift[177,10]]; mc[lastRefCt, 177]; mc[gcRunningC, 200]; * running iff onStack is set mc[onStackBit, 200]; mc[undoStackBit, NOT [200]]; mc[rcFinalize1, or[lshift[3,1], 1]]; * lsh 1 because of onStack bit mc[lastProbeIndexM1, 77777]; ** assumes MapPiRce is 100000B long mc[mapPiRceOffset, 400]; * start one page beyond GCState mc[rceReclaimOffset, 200]; * start one-half page beyond GCState mc[dumpTableOffset, 300]; * start of area for dumping useful info M[RefCtField, ldf[#1, 7, 10]]; * extract RefCt field M[RefCtStkField, ldf[#1, 10, 7]]; * extract RefCt&onStack fields M[ResidueField, ldf[#1, 7, 0]]; * extract Residue field *----------------------------------------------------------- ** the following must agree with declarations in AllocZone.mesa **--------- RealZoneRec mc[zn.LOCK, 2]; msc[zn.MLOCK, 2]; mc[zn.mAsz, 24]; * hash mask for quantized zone mc[zn.pAsz, 26]; * SubZoneArray mc[zn.fnd, 22]; * free NodeHeader in RealZoneRec mc[zn.pfn, 30]; * prefixed node free list **--------- SubZoneRec msc[sz.type, 0]; msc[sz.size, 1]; msc[sz.fl, 2]; msc[sz.zi, 4]; msc[sz.Vacant, 5]; * msc[sz.szi, 5]; msc[obj.FreeList, 0]; msc[obj.FreeList1, 1]; **--------- PFreeNode msc[pnode.sizeLo, 0]; msc[pnode.sizeHi, 1]; msc[pnode.pfnNext, 2]; msc[pnode.pfnNextHi, 3]; msc[pnode.pfnPrev, 4]; msc[pnode.pfnPrevHi, 5]; **--------- Allocated PrefixedNode msc[pnode.type, 1]; msc[pnode.ref, 2]; * the node itself starts here mc[MinBlockSize, 4]; mc[FreeNodeSize, 6]; mc[pNodeOverhead, 2]; * need 1 word for the type, 1 for size mc[4MinBlockSize, 20]; *----------------------------------------------------------- ** entries in SD for errors, punts mc[SDCatastrophe, 171]; set[qiShift, 12]; * convert from pointer to quantumIndex msc[OiFreeListSc, 0]; * in GCState msc[nOiFreeSc, 1]; msc[reclaimStateSc, 2]; msc[collectorSc, 3]; msc[MapPtrMzOffset, 4]; msc[MapSziSzOffset, 6]; msc[MapZiZnOffset, 10]; msc[MapTiTdOffset, 12]; msc[eqvTypeSc, 0]; *----------------------------------------------------------- mc[ACZeroLo, 134]; mc[ACDecLo, 136]; mc[ACIncLo, 140]; mc[OTCDelLo, 142]; mc[OTCCrLo, 144]; mc[HTCDelLo, 146]; mc[HTCCrLo, 150]; mc[RONil, 172]; mc[RNNil, 174]; mc[ROeqN, 176];