21 #ifndef ELM_ALLOC_SIMPLEGC_H_
22 #define ELM_ALLOC_SIMPLEGC_H_
24 #include <elm/util/BitVector.h>
25 #include <elm/stree/Tree.h>
26 #include <elm/genstruct/SLList.h>
27 #include <elm/alloc/DefaultAllocator.h>
39 inline void free(
void *block) { }
46 virtual void endGC(
void);
50 void *allocFromFreeList(
t::size size);
52 typedef struct block_t {
56 typedef struct chunk_t {
61 genstruct::SLList<chunk_t *> chunks;
65 typedef stree::Tree<void *, chunk_t *> tree_t;
68 static inline t::size round(
t::size size) {
return (size +
sizeof(block_t) - 1) & ~(
sizeof(block_t) - 1); }
virtual ~SimpleGC(void)
Definition: alloc_SimpleGC.cpp:61
virtual void beginGC(void)
Definition: alloc_SimpleGC.cpp:159
void clear(void)
Definition: alloc_SimpleGC.cpp:68
void * allocate(t::size size)
Definition: alloc_SimpleGC.cpp:106
virtual void endGC(void)
Definition: alloc_SimpleGC.cpp:185
void doGC(void)
Definition: alloc_SimpleGC.cpp:77
uint32 size
Definition: int.h:41
SimpleGC(t::size size=4096)
Definition: alloc_SimpleGC.cpp:40
virtual void collect(void)=0
Definition: DefaultAllocator.h:31
uint8_t uint8
Definition: int.h:31
void free(void *block)
Definition: SimpleGC.h:39
Definition: SimpleGC.h:31
bool mark(void *data, t::size size)
Definition: alloc_SimpleGC.cpp:136
uint32 intptr
Definition: int.h:44