1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-02 02:10:19 +02:00

Merge remote-tracking branch 'whippet/main' into wip-whippet

This commit is contained in:
Andy Wingo 2025-05-15 11:39:48 +02:00
commit 173adcfe09
5 changed files with 31 additions and 2 deletions

View file

@ -53,12 +53,14 @@ GC_API_ void gc_heap_set_extern_space(struct gc_heap *heap,
GC_API_ struct gc_mutator* gc_init_for_thread(struct gc_stack_addr base,
struct gc_heap *heap);
GC_API_ void gc_finish_for_thread(struct gc_mutator *mut);
GC_API_ void gc_deactivate(struct gc_mutator *mut);
GC_API_ void gc_reactivate(struct gc_mutator *mut);
GC_API_ void* gc_deactivate_for_call(struct gc_mutator *mut,
void* (*f)(struct gc_mutator*, void*),
void *data) GC_NEVER_INLINE;
void *data);
GC_API_ void* gc_reactivate_for_call(struct gc_mutator *mut,
void* (*f)(struct gc_mutator*, void*),
void *data) GC_NEVER_INLINE;
void *data);
GC_API_ void gc_collect(struct gc_mutator *mut,
enum gc_collection_kind requested_kind);

View file

@ -668,6 +668,9 @@ static void* call_with_mutator (void *p) {
return data->proc(data->mutator, data->data);
}
void gc_deactivate(struct gc_mutator *mut) {};
void gc_reactivate(struct gc_mutator *mut) {};
void* gc_deactivate_for_call(struct gc_mutator *mut,
void* (*f)(struct gc_mutator *, void*),
void *data) {

View file

@ -1297,6 +1297,16 @@ reactivate_mutator(struct gc_heap *heap, struct gc_mutator *mut) {
heap_unlock(heap);
}
void gc_deactivate(struct gc_mutator *mut) {
GC_ASSERT(mut->active);
deactivate_mutator(mutator_heap(mut), mut);
}
void gc_reactivate(struct gc_mutator *mut) {
GC_ASSERT(!mut->active);
reactivate_mutator(mutator_heap(mut), mut);
}
void*
gc_deactivate_for_call(struct gc_mutator *mut,
void* (*f)(struct gc_mutator*, void*),

View file

@ -1383,6 +1383,16 @@ static void reactivate_mutator(struct gc_heap *heap, struct gc_mutator *mut) {
heap_unlock(heap);
}
void gc_deactivate(struct gc_mutator *mut) {
GC_ASSERT(mut->active);
deactivate_mutator(mutator_heap(mut), mut);
}
void gc_reactivate(struct gc_mutator *mut) {
GC_ASSERT(!mut->active);
reactivate_mutator(mutator_heap(mut), mut);
}
void* gc_deactivate_for_call(struct gc_mutator *mut,
void* (*f)(struct gc_mutator*, void*),
void *data) {

View file

@ -763,6 +763,10 @@ struct gc_mutator* gc_init_for_thread(struct gc_stack_addr base,
void gc_finish_for_thread(struct gc_mutator *space) {
}
void gc_deactivate(struct gc_mutator *mut) {}
void gc_reactivate(struct gc_mutator *mut) {}
void* gc_deactivate_for_call(struct gc_mutator *mut,
void* (*f)(struct gc_mutator *, void*),
void *data) {