|
|
1.1 ! root 1: /* ! 2: * Definitions and declarations used for storage management. ! 3: */ ! 4: ! 5: #define F_Mark 0100000 /* high-order bit for gc marking */ ! 6: #define Sqlinc 128 /* increment for qualifier pointer space */ ! 7: ! 8: /* ! 9: * External definitions. ! 10: */ ! 11: ! 12: extern char *currend; /* current end of memory region */ ! 13: extern uword blkneed; /* stated need for block space */ ! 14: extern uword strneed; /* stated need for string space */ ! 15: extern uword statneed; ! 16: extern struct descrip *globals; /* start of global variables */ ! 17: extern struct descrip *eglobals; /* end of global variables */ ! 18: extern struct descrip *gnames; /* start of global variable names */ ! 19: extern struct descrip *egnames; /* end of global variable names */ ! 20: extern struct descrip *statics; /* start of static variables */ ! 21: extern struct descrip *estatics; /* end of static variables */ ! 22: extern struct descrip tended[]; /* tended descriptors, used by doasgn */ ! 23: extern struct descrip etended[]; /* end of tended descriptors */ ! 24: extern struct descrip **quallist; /* beginning of qualifier list */ ! 25: extern struct descrip **qualfree; /* qualifier list free pointer */ ! 26: extern struct descrip **equallist; /* end of qualifier list */ ! 27: ! 28: /* ! 29: * Get type of block pointed at by x. ! 30: */ ! 31: #define BlkType(x) (*(word *)x) ! 32: ! 33: /* ! 34: * BlkSize(x) takes the block pointed to by x and if the size of ! 35: * the block as indicated by bsizes[] is non-zero it returns the ! 36: * indicated size, otherwise it returns the second word in the ! 37: * block which should be the size. ! 38: */ ! 39: #define BlkSize(x) (bsizes[*(word *)x & ~F_Mark] ? \ ! 40: bsizes[*(word *)x & ~F_Mark] : *((word *)x + 1)) ! 41: ! 42: /* ! 43: * If memory monitoring is not enabled, redefine function calls ! 44: * to do nothing. ! 45: */ ! 46: #ifndef MemMon ! 47: #define MMAlc(n) ! 48: #define MMBGC() ! 49: #define MMEGC() ! 50: #define MMInit() ! 51: #define MMMark(b,t) ! 52: #define MMStr(n) ! 53: #define MMSMark(a,n) ! 54: #define MMType(t) ! 55: #endif MemMon
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.