blueloveTH a9ead56505 ...
2025-01-23 14:35:40 +08:00

32 lines
784 B
C

#pragma once
#include "pocketpy/common/vector.h"
#include "pocketpy/common/str.h"
#define kPoolArenaSize (120 * 1024)
#define kMultiPoolCount 5
#define kPoolMaxBlockSize (32*kMultiPoolCount)
typedef struct PoolArena {
int block_size;
int block_count;
int unused_length;
int* unused;
char data[kPoolArenaSize];
} PoolArena;
typedef struct Pool {
c11_vector /* PoolArena* */ arenas;
c11_vector /* PoolArena* */ no_free_arenas;
int block_size;
} Pool;
typedef struct MultiPool {
Pool pools[kMultiPoolCount];
} MultiPool;
void* MultiPool__alloc(MultiPool* self, int size);
int MultiPool__sweep_dealloc(MultiPool* self);
void MultiPool__ctor(MultiPool* self);
void MultiPool__dtor(MultiPool* self);
c11_string* MultiPool__summary(MultiPool* self);