- 重命名和重构了多个文件,包括 lexer、parser 和 AST 相关代码 - 添加了日志功能,使用 LOG_* 宏替代原有的 error 和 warn 函数 - 优化了错误处理和内存分配方式 - 调整了代码结构,提高了模块化和可读性
37 lines
905 B
C
37 lines
905 B
C
#ifndef __SMCC_RT_ALLOC_H__
|
|
#define __SMCC_RT_ALLOC_H__
|
|
|
|
#include "std/rt_api_def.h"
|
|
// Simple or Static Allocator
|
|
|
|
void* salloc_alloc(int size);
|
|
void* salloc_realloc(void* ptr, int size);
|
|
void salloc_free(void* ptr);
|
|
|
|
typedef struct fixed_alloc {
|
|
void* page_list;
|
|
void* free_list;
|
|
int block_size;
|
|
int blocks_per_page;
|
|
} fixed_alloc_t;
|
|
void falloc_init(fixed_alloc_t* fa, int fixed_size, int init_size);
|
|
void* falloc_alloc(fixed_alloc_t* fa);
|
|
void falloc_free(fixed_alloc_t* fa, void* ptr);
|
|
void falloc_destroy(fixed_alloc_t* fa);
|
|
|
|
typedef struct long_block {
|
|
struct long_block* next;
|
|
int used;
|
|
} long_block_t;
|
|
|
|
typedef struct long_alloc {
|
|
long_block_t* current;
|
|
int block_size;
|
|
} long_alloc_t;
|
|
void lalloc_init(long_alloc_t* la);
|
|
void* lalloc_alloc(long_alloc_t* la, int size);
|
|
void lalloc_free(long_alloc_t* la, void* ptr);
|
|
void lalloc_destroy(long_alloc_t* la);
|
|
|
|
#endif
|