|
|
1.1 ! root 1: #include "../h/rt.h" ! 2: #include "../h/gc.h" ! 3: int stkbase; ! 4: int stktop; ! 5: ! 6: /* ! 7: * ddump - dump a descriptor. Used only for debugging. ! 8: */ ! 9: ! 10: ddump(desc) ! 11: struct descrip *desc; ! 12: { ! 13: printf("%08x: ",desc); ! 14: if (isptr(desc)) ! 15: if (VAR(*desc)) ! 16: printf("%15s","interior ptr."); ! 17: else ! 18: printf("%15s",blkname[(desc->type)&TYPEMASK]); ! 19: else ! 20: if (QUAL(*desc)) ! 21: printf("%15s","str. qualifier"); ! 22: else ! 23: printf("%15s","integer"); ! 24: printf(" %08x %08x\n",desc->type,desc->value.integr); ! 25: } ! 26: ! 27: ! 28: /* ! 29: * mdump - dump the heap. Used only for debugging. ! 30: */ ! 31: ! 32: mdump() ! 33: { ! 34: register char *blk; ! 35: register int type, size, fdesc; ! 36: register struct descrip *ndesc; ! 37: ! 38: printf("\nDump of heap. base:%08x free:%08x max:%08x\n", ! 39: hpbase,hpfree,maxheap); ! 40: printf(" loc type size contents\n"); ! 41: ! 42: for (blk = hpbase; blk < hpfree; blk += getsize(blk)) { ! 43: type = blktype(blk); ! 44: size = getsize(blk); ! 45: printf(" %08x %15s %4d\n",blk,blkname[type],size); ! 46: if ((fdesc = firstd[type]) > 0) ! 47: for (ndesc = (struct descrip *) (blk + fdesc); ! 48: ndesc < (struct descrip *) (blk + size);ndesc++) { ! 49: printf(" "); ! 50: ddump(ndesc); ! 51: } ! 52: printf("\n"); ! 53: } ! 54: printf("end of heap.\n"); ! 55: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.