chore: remove trailing whitespace from all source files in src/ directory
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
#ifndef RAVA_GC_H
|
||||
#define RAVA_GC_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#define RAVA_GC_BLOCK_SIZE (32 * 1024)
|
||||
#define RAVA_GC_LINE_SIZE 128
|
||||
#define RAVA_GC_LINES_PER_BLOCK (RAVA_GC_BLOCK_SIZE / RAVA_GC_LINE_SIZE)
|
||||
|
||||
#define RAVA_GC_GRAY_STACK_SIZE 4096
|
||||
|
||||
#define RAVA_GC_INITIAL_THRESHOLD (1024 * 1024)
|
||||
|
||||
#define RAVA_ALIGN(size, align) (((size) + (align) - 1) & ~((align) - 1))
|
||||
|
||||
struct RavaGCHeader;
|
||||
typedef struct RavaGCHeader RavaGCHeader_t;
|
||||
|
||||
typedef struct RavaGCBlock {
|
||||
uint8_t line_marks[RAVA_GC_LINES_PER_BLOCK];
|
||||
uint8_t flags;
|
||||
uint16_t free_lines;
|
||||
struct RavaGCBlock *next;
|
||||
struct RavaGCBlock *prev;
|
||||
uint8_t data[RAVA_GC_BLOCK_SIZE];
|
||||
} RavaGCBlock_t;
|
||||
|
||||
#define RAVA_GC_BLOCK_FLAG_EVACUATE 0x01
|
||||
#define RAVA_GC_BLOCK_FLAG_FULL 0x02
|
||||
|
||||
typedef struct RavaGCHeap {
|
||||
RavaGCBlock_t *all_blocks;
|
||||
RavaGCBlock_t *current_block;
|
||||
uint8_t *bump_ptr;
|
||||
uint8_t *block_limit;
|
||||
RavaGCBlock_t *free_blocks;
|
||||
RavaGCBlock_t *recyclable_blocks;
|
||||
size_t total_allocated;
|
||||
size_t live_bytes;
|
||||
size_t gc_threshold;
|
||||
RavaGCHeader_t *all_objects;
|
||||
} RavaGCHeap_t;
|
||||
|
||||
typedef struct RavaGCStats {
|
||||
size_t total_collections;
|
||||
size_t objects_allocated;
|
||||
size_t objects_freed;
|
||||
size_t bytes_allocated;
|
||||
size_t bytes_freed;
|
||||
size_t current_live_objects;
|
||||
size_t current_live_bytes;
|
||||
size_t peak_live_bytes;
|
||||
} RavaGCStats_t;
|
||||
|
||||
typedef struct RavaGCState {
|
||||
RavaGCHeader_t *gray_stack[RAVA_GC_GRAY_STACK_SIZE];
|
||||
size_t gray_count;
|
||||
bool gc_active;
|
||||
bool gc_enabled;
|
||||
size_t objects_marked;
|
||||
size_t bytes_marked;
|
||||
} RavaGCState_t;
|
||||
|
||||
void rava_gc_init(void);
|
||||
void rava_gc_shutdown(void);
|
||||
|
||||
void* rava_gc_alloc(size_t size, uint8_t type);
|
||||
void rava_gc_free(void *ptr);
|
||||
|
||||
void rava_gc_collect(void);
|
||||
void rava_gc_collect_if_needed(void);
|
||||
|
||||
void rava_gc_enable(void);
|
||||
void rava_gc_disable(void);
|
||||
bool rava_gc_is_enabled(void);
|
||||
|
||||
void rava_gc_pin(void *ptr);
|
||||
void rava_gc_unpin(void *ptr);
|
||||
|
||||
RavaGCStats_t rava_gc_get_stats(void);
|
||||
void rava_gc_print_stats(void);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user