66 struct FREEB *b_next_size;
71#define MinBlockSize (sizeof(BlockHeader)+sizeof(YAP_SEG_SIZE))
72#define MaxBlockSize 0xffffff
73#define InUseFlag 0x80000000
75#define MaxTmp(USES_REGS1) (MaxBlockSize+1)
82#define YAP_ALIGNMASK ((CELL)(-4))
85#define YAP_ALIGNMASK ((CELL)(-8))
88#define AdjustSize(X) ((X+YAP_ALIGN) & YAP_ALIGNMASK)
91#define ALIGN_SIZE(X,SIZE) (((CELL)(X)+((SIZE)-1)) & ~((SIZE)-1))
94#if defined(_WIN32) || defined(__CYGWIN__)
96#define YAP_ALLOC_SIZE (64*1024)
97#define LGPAGE_SIZE YAP_ALLOC_SIZE
100#define YAP_ALLOC_SIZE Yap_page_size
101#define LGPAGE_SIZE (16*Yap_page_size)
104#define AdjustPageSize(X) (((X)+ (YAP_ALLOC_SIZE-1))/YAP_ALLOC_SIZE)*YAP_ALLOC_SIZE;
105#define AdjustLargePageSize(X) (((X)+ (LGPAGE_SIZE-1))/LGPAGE_SIZE)*LGPAGE_SIZE;
107#define BlockTrailer(b) ((YAP_SEG_SIZE *)b)[((BlockHeader *) b)->b_size]
110extern size_t Yap_page_size;
112extern void Yap_InitHeap(
void *);
113extern UInt Yap_ExtendWorkSpaceThroughHole(UInt);
114extern void Yap_AllocHole(UInt, UInt);
115extern size_t Yap_HeapUsed(
void);
117#if USE_SYSTEM_MMAP && ! defined(__CYGWIN__)
119#include <sys/types.h>
128#if (defined(__svr4__) || defined(__SVR4))
131#include <sys/types.h>
135typedef unsigned size_t;
137extern MALLOC_T malloc(
size_t);
138extern void free(MALLOC_T);
139extern MALLOC_T realloc(MALLOC_T,
size_t);
140extern MALLOC_T calloc(
size_t,
size_t);
150void Yap_add_memory_hole(ADDR, ADDR);
152#define SCRATCH_START_SIZE K64
153#define SCRATCH_INC_SIZE K64
178extern bool Yap_get_scratch_buf(
scratch_struct_t *handle,
size_t nof,
size_t each);
195extern void *
Malloc(
size_t sz USES_REGS);
196extern void *Realloc(
void *buf,
size_t sz USES_REGS);
197extern void Free(
void *buf USES_REGS);
199extern void *MallocAtLevel(
size_t sz,
int atL USES_REGS);
200#define BaseMalloc(sz) MallocAtLevel(sz, 1)
201extern const void *MallocExportAsRO(
const void *blk);
204#define MBYTE (1024 * 1024)
207extern int AllocLevel(
void);
210#define push_text_stack() \
211 ( fprintf(stderr, " + *** %d %s:%s:%d\n", AllocLevel(), \
212 __FILE__, __FUNCTION__, __LINE__), \
213 push_text_stack__(PASS_REGS1))
215 #define pop_text_stack(lvl) \
216 ( fprintf(stderr, " - *** %d %s:%s:%d\n", AllocLevel()-1, __FILE__, \
217 __FUNCTION__, __LINE__), \
218 pop_text_stack__(lvl PASS_REGS))
220 #define pop_output_text_stack(lvl,p) \
221 (fprintf(stderr, "<- *** %d %s:%s:%d\n", AllocLevel()-1, __FILE__, \
222 __FUNCTION__, __LINE__), \
223 pop_output_text_stack__(lvl,p))
225#define push_text_stack() push_text_stack__(PASS_REGS1)
226#define pop_text_stack(lvl) pop_text_stack__(lvl PASS_REGS)
227#define pop_output_text_stack(lvl,p) pop_output_text_stack__(lvl,p PASS_REGS)
230extern int push_text_stack__(USES_REGS1);
231extern int pop_text_stack__(
int lvl USES_REGS);
234extern void *pop_output_text_stack__(
int lvl,
const void *ox USES_REGS);
bool is_thread_scratch_buf
the goods
size_t n_of
are we using Local_ScratchBuf for this
CELL YAP_SEG_SIZE
definitions required by saver/restorer and memory manager
struct scratch_buf_struct_t scratch_sys_struct_t
thread view of the scratch buffer
struct scratch_user_buf_struct_t scratch_struct_t
user view of the scratch buffer
thread view of the scratch buffer
user view of the scratch buffer
void * Malloc(size_t sz USES_REGS)
allocate a temporary text block