mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-24 21:40:16 +00:00
34 lines
870 B
C
34 lines
870 B
C
#include "pocketpy/objects/object.h"
|
|
#include "pocketpy/common/config.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef struct pk_ManagedHeap{
|
|
c11_vector no_gc;
|
|
c11_vector gen;
|
|
|
|
int gc_threshold;
|
|
int gc_counter;
|
|
pk_VM* vm;
|
|
|
|
void (*gc_on_delete)(pk_VM*, PyObject*);
|
|
} pk_ManagedHeap;
|
|
|
|
void pk_ManagedHeap__ctor(pk_ManagedHeap* self, pk_VM* vm);
|
|
void pk_ManagedHeap__dtor(pk_ManagedHeap* self);
|
|
|
|
void pk_ManagedHeap__collect_if_needed(pk_ManagedHeap* self);
|
|
int pk_ManagedHeap__collect(pk_ManagedHeap* self);
|
|
int pk_ManagedHeap__sweep(pk_ManagedHeap* self);
|
|
|
|
PyObject* pk_ManagedHeap__new(pk_ManagedHeap* self, py_Type type, int slots, int udsize);
|
|
PyObject* pk_ManagedHeap__gcnew(pk_ManagedHeap* self, py_Type type, int slots, int udsize);
|
|
|
|
// external implementation
|
|
void pk_ManagedHeap__mark(pk_ManagedHeap* self);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif |