mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 11:30:18 +00:00
some fix
This commit is contained in:
parent
f93aefdbe5
commit
381e2d5b9a
@ -11,7 +11,6 @@ typedef struct pk_ManagedHeap{
|
|||||||
|
|
||||||
int gc_threshold;
|
int gc_threshold;
|
||||||
int gc_counter;
|
int gc_counter;
|
||||||
int gc_lock_counter;
|
|
||||||
pk_VM* vm;
|
pk_VM* vm;
|
||||||
|
|
||||||
void (*_gc_on_delete)(pk_VM*, PyObject*);
|
void (*_gc_on_delete)(pk_VM*, PyObject*);
|
||||||
@ -21,9 +20,6 @@ typedef struct pk_ManagedHeap{
|
|||||||
void pk_ManagedHeap__ctor(pk_ManagedHeap* self, pk_VM* vm);
|
void pk_ManagedHeap__ctor(pk_ManagedHeap* self, pk_VM* vm);
|
||||||
void pk_ManagedHeap__dtor(pk_ManagedHeap* self);
|
void pk_ManagedHeap__dtor(pk_ManagedHeap* self);
|
||||||
|
|
||||||
void pk_ManagedHeap__push_lock(pk_ManagedHeap* self);
|
|
||||||
void pk_ManagedHeap__pop_lock(pk_ManagedHeap* self);
|
|
||||||
|
|
||||||
void pk_ManagedHeap__collect_if_needed(pk_ManagedHeap* self);
|
void pk_ManagedHeap__collect_if_needed(pk_ManagedHeap* self);
|
||||||
int pk_ManagedHeap__collect(pk_ManagedHeap* self);
|
int pk_ManagedHeap__collect(pk_ManagedHeap* self);
|
||||||
int pk_ManagedHeap__sweep(pk_ManagedHeap* self);
|
int pk_ManagedHeap__sweep(pk_ManagedHeap* self);
|
||||||
|
@ -8,7 +8,6 @@ void pk_ManagedHeap__ctor(pk_ManagedHeap *self, pk_VM *vm){
|
|||||||
|
|
||||||
self->gc_threshold = PK_GC_MIN_THRESHOLD;
|
self->gc_threshold = PK_GC_MIN_THRESHOLD;
|
||||||
self->gc_counter = 0;
|
self->gc_counter = 0;
|
||||||
self->gc_lock_counter = 0;
|
|
||||||
self->vm = vm;
|
self->vm = vm;
|
||||||
|
|
||||||
self->_gc_on_delete = NULL;
|
self->_gc_on_delete = NULL;
|
||||||
@ -28,17 +27,8 @@ void pk_ManagedHeap__dtor(pk_ManagedHeap *self){
|
|||||||
c11_vector__dtor(&self->gen);
|
c11_vector__dtor(&self->gen);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pk_ManagedHeap__push_lock(pk_ManagedHeap *self){
|
|
||||||
self->gc_lock_counter++;
|
|
||||||
}
|
|
||||||
|
|
||||||
void pk_ManagedHeap__pop_lock(pk_ManagedHeap *self){
|
|
||||||
self->gc_lock_counter--;
|
|
||||||
}
|
|
||||||
|
|
||||||
void pk_ManagedHeap__collect_if_needed(pk_ManagedHeap *self){
|
void pk_ManagedHeap__collect_if_needed(pk_ManagedHeap *self){
|
||||||
if(self->gc_counter < self->gc_threshold) return;
|
if(self->gc_counter < self->gc_threshold) return;
|
||||||
if(self->gc_lock_counter > 0) return;
|
|
||||||
self->gc_counter = 0;
|
self->gc_counter = 0;
|
||||||
pk_ManagedHeap__collect(self);
|
pk_ManagedHeap__collect(self);
|
||||||
self->gc_threshold = self->gen.count * 2;
|
self->gc_threshold = self->gen.count * 2;
|
||||||
@ -48,7 +38,6 @@ void pk_ManagedHeap__collect_if_needed(pk_ManagedHeap *self){
|
|||||||
}
|
}
|
||||||
|
|
||||||
int pk_ManagedHeap__collect(pk_ManagedHeap *self){
|
int pk_ManagedHeap__collect(pk_ManagedHeap *self){
|
||||||
assert(self->gc_lock_counter == 0);
|
|
||||||
pk_ManagedHeap__mark(self);
|
pk_ManagedHeap__mark(self);
|
||||||
int freed = pk_ManagedHeap__sweep(self);
|
int freed = pk_ManagedHeap__sweep(self);
|
||||||
return freed;
|
return freed;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user