unleashed-firmware/lib/mjs/mjs_mm.h

45 lines
860 B
C
Raw Normal View History

/*
* Copyright (c) 2014-2016 Cesanta Software Limited
* All rights reserved
*/
#ifndef MJS_MM_H_
#define MJS_MM_H_
#include "mjs_internal.h"
#if defined(__cplusplus)
extern "C" {
#endif /* __cplusplus */
struct mjs;
typedef void (*gc_cell_destructor_t)(struct mjs* mjs, void*);
struct gc_block {
struct gc_block* next;
struct gc_cell* base;
size_t size;
};
struct gc_arena {
struct gc_block* blocks;
size_t size_increment;
struct gc_cell* free; /* head of free list */
size_t cell_size;
#if MJS_MEMORY_STATS
unsigned long allocations; /* cumulative counter of allocations */
unsigned long garbage; /* cumulative counter of garbage */
unsigned long alive; /* number of living cells */
#endif
gc_cell_destructor_t destructor;
};
#if defined(__cplusplus)
}
#endif /* __cplusplus */
#endif /* MJS_MM_H_ */