This commit is contained in:
blueloveTH 2024-07-06 01:07:31 +08:00
parent f93aefdbe5
commit 381e2d5b9a
2 changed files with 0 additions and 15 deletions

View File

@ -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);

View File

@ -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;