mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-09 15:10:29 +02:00
Add gc_collect(mutator) API
This commit is contained in:
parent
1b3bc2f3b5
commit
44f37a373c
4 changed files with 11 additions and 1 deletions
2
bdw.c
2
bdw.c
|
@ -116,7 +116,7 @@ void* gc_allocate_pointerless(struct gc_mutator *mut,
|
|||
return GC_malloc_atomic(size);
|
||||
}
|
||||
|
||||
static inline void collect(struct gc_mutator *mut) {
|
||||
void gc_collect(struct gc_mutator *mut) {
|
||||
GC_gcollect();
|
||||
}
|
||||
|
||||
|
|
2
gc-api.h
2
gc-api.h
|
@ -57,6 +57,8 @@ GC_API_ void* gc_call_without_gc(struct gc_mutator *mut, void* (*f)(void*),
|
|||
void *data) GC_NEVER_INLINE;
|
||||
GC_API_ void gc_print_stats(struct gc_heap *heap);
|
||||
|
||||
GC_API_ void gc_collect(struct gc_mutator *mut);
|
||||
|
||||
static inline void gc_clear_fresh_allocation(struct gc_ref obj,
|
||||
size_t size) GC_ALWAYS_INLINE;
|
||||
static inline void gc_clear_fresh_allocation(struct gc_ref obj,
|
||||
|
|
4
semi.c
4
semi.c
|
@ -171,6 +171,10 @@ static void collect(struct gc_mutator *mut) {
|
|||
// fprintf(stderr, "%zd bytes copied\n", (space->size>>1)-(space->limit-space->hp));
|
||||
}
|
||||
|
||||
void gc_collect(struct gc_mutator *mut) {
|
||||
collect(mut);
|
||||
}
|
||||
|
||||
static void collect_for_alloc(struct gc_mutator *mut, size_t bytes) {
|
||||
collect(mut);
|
||||
struct semi_space *space = mutator_semi_space(mut);
|
||||
|
|
|
@ -1992,6 +1992,10 @@ static void trigger_collection(struct gc_mutator *mut) {
|
|||
heap_unlock(heap);
|
||||
}
|
||||
|
||||
void gc_collect(struct gc_mutator *mut) {
|
||||
trigger_collection(mut);
|
||||
}
|
||||
|
||||
void* gc_allocate_large(struct gc_mutator *mut, size_t size) {
|
||||
struct gc_heap *heap = mutator_heap(mut);
|
||||
struct large_object_space *space = heap_large_object_space(heap);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue