franz/alloc.c
/* xsbrk allocates space in large chunks (currently 16 pages)
 * xsbrk(1)  returns a pointer to a page
 * xsbrk(0)  returns a pointer to the next page we will allocate (like sbrk(0))
 */
xsbrk allocates space in large chunks (currently 16 pages)
xsbrk(1)  returns a pointer to a page
xsbrk(0)  returns a pointer to the next page we will allocate (like sbrk(0))
xsbrk allocates space in large chunks ( currently 16 pages ) xsbrk ( 1 ) returns a pointer to a page xsbrk ( 0 ) returns a pointer to the next page we will allocate ( like sbrk ( 0 ))
char *
xsbrk(n)
	{
	static char *xx;	
	extern int xcycle;	
	lispval u;			
	if( (xcycle--) <= 0 )
		{
		xcycle = 15;
		xx = sbrk(16*LBPG);	
		if( (int)xx== -1 )
			lispend("For sbrk from lisp: no space... Goodbye!");
		}
	else xx += LBPG;
	if(n == 0)
	{
	    xcycle++;	
	    xx -= LBPG;
	    return(xx);	
	}
	if( (u = (lispval)(xx+LBPG))  > datalim ) datalim = u;
	return(xx);
	}
char * xsbrk ( n ) { static char * xx ; extern int xcycle ; lispval u ; if ( ( xcycle -- ) <= 0 ) { xcycle = 15 ; xx = sbrk ( 16 * LBPG ) ; if ( ( int ) xx == -1 ) lispend ( " " ) ; } else xx += LBPG ; if ( n == 0 ) { xcycle ++ ; xx -= LBPG ; return ( xx ) ; } if ( ( u = ( lispval ) ( xx + LBPG ) ) > datalim ) datalim = u ; return ( xx ) ; }
xsbrk allocates space in large chunks (currently 16 pages)
 xsbrk(1)  returns a pointer to a page
 xsbrk(0)  returns a pointer to the next page we will allocate (like sbrk(0))
xsbrk allocates space in large chunks ( currently 16 pages ) xsbrk ( 1 ) returns a pointer to a page xsbrk ( 0 ) returns a pointer to the next page we will allocate ( like sbrk ( 0 ))
/*  pointer to next available blank page  */ /*  number of blank pages available  */ /*  used to compute limits of bit table  */ /*  get pages 16 at a time  */ /* don't allocate the page */ /* just return its address */