Add while loops, GC mark-and-sweep, and malloc block reuse
- Lexer: add INDENT/DEDENT tokens, <, >, : operators, while keyword, closing DEDENT emission, include guards - Parser: add NODE_WHILE with while_loop union, parse while/cond/body blocks, include guards - Eval: add while loop evaluation, GC integration with roots from env, debug and gc flags, <, > comparison operators - GC: implement mark-and-sweep collector with 3 stages (mark roots, sweep unmarked, join free blocks) - Allocator: block reuse via first-fit search with splitting, exponential heap growth, NULL check on malloc, include guards, marked field in metadata - Object: add include guards, fix include to use allocator.h
This commit is contained in:
@@ -1,5 +1,9 @@
|
||||
#ifndef JLANG_OBJECT_H
|
||||
#define JLANG_OBJECT_H
|
||||
|
||||
#include "../memory/allocator.h"
|
||||
|
||||
|
||||
#define JLANG_RESOLVE(alloc, offset) \
|
||||
((void *)(((JLANG_memory_allocator *)(alloc))->memory + (offset)))
|
||||
|
||||
@@ -137,3 +141,5 @@ void obj_print(void *allocator, size_t offset, const char *preffix) {
|
||||
break;
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user