#ifndef MJS_MM_H_
#define MJS_MM_H_
#include "mjs_internal.h"
#if defined(__cplusplus)
extern "C" {
#endif
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;
size_t cell_size;
#if MJS_MEMORY_STATS
unsigned long allocations;
unsigned long garbage;
unsigned long alive;
#endif
gc_cell_destructor_t destructor;
};
#if defined(__cplusplus)
}
#endif
#endif