File:  [Research Unix] / researchv10dc / cmd / icon / src / iconx / gc.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 17:21:34 2018 UTC (8 years, 3 months ago) by root
Branches: belllabs, MAIN
CVS tags: researchv10, HEAD
researchv10 Dan Cross

/*
 * Definitions and declarations used for storage management.
 */

#define F_Mark		0100000 	/* high-order bit for gc marking */
#define Sqlinc		    128 	/* increment for qualifier pointer space */

/*
 * External definitions.
 */

extern char *currend;			/* current end of memory region */
extern uword blkneed;			/* stated need for block space */
extern uword strneed;			/* stated need for string space */
extern uword statneed;
extern struct descrip *globals; 	/* start of global variables */
extern struct descrip *eglobals;	/* end of global variables */
extern struct descrip *gnames;		/* start of global variable names */
extern struct descrip *egnames; 	/* end of global variable names */
extern struct descrip *statics; 	/* start of static variables */
extern struct descrip *estatics;	/* end of static variables */
extern struct descrip tended[]; 	/* tended descriptors, used by doasgn */
extern struct descrip etended[];	/* end of tended descriptors */
extern struct descrip **quallist; 	/* beginning of qualifier list */
extern struct descrip **qualfree; 	/* qualifier list free pointer */
extern struct descrip **equallist;	/* end of qualifier list */

/*
 * Get type of block pointed at by x.
 */
#define BlkType(x)   (*(word *)x)

/*
 * BlkSize(x) takes the block pointed to by x and if the size of
 *  the block as indicated by bsizes[] is non-zero it returns the
 *  indicated size, otherwise it returns the second word in the
 *  block which should be the size.
 */
#define BlkSize(x) (bsizes[*(word *)x & ~F_Mark] ? \
		     bsizes[*(word *)x & ~F_Mark] : *((word *)x + 1))

/*
 * If memory monitoring is not enabled, redefine function calls
 * to do nothing.
 */
#ifndef MemMon
#define MMAlc(n)
#define MMBGC()
#define MMEGC()
#define MMInit()
#define MMMark(b,t)
#define MMStr(n)
#define MMSMark(a,n)
#define MMType(t)
#endif MemMon

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.