1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-09 15:10:29 +02:00
guile/gc-stack.h
Andy Wingo 053dbf0b61 Pass heap to tracer functions
This will allow conservative intra-heap edges.  Hopefully no overhead?
2022-10-25 14:25:55 +02:00

33 lines
873 B
C

#ifndef GC_STACK_H
#define GC_STACK_H
#ifndef GC_IMPL
#error internal header file, not part of API
#endif
#include "gc-inline.h"
#include <setjmp.h>
struct gc_stack_addr {
uintptr_t addr;
};
struct gc_stack {
struct gc_stack_addr cold;
struct gc_stack_addr hot;
jmp_buf registers;
};
struct gc_heap;
GC_INTERNAL void gc_stack_init(struct gc_stack *stack,
struct gc_stack_addr *base);
GC_INTERNAL void gc_stack_capture_hot(struct gc_stack *stack);
GC_INTERNAL void gc_stack_visit(struct gc_stack *stack,
void (*visit)(uintptr_t low, uintptr_t high,
struct gc_heap *heap,
void *data),
struct gc_heap *heap,
void *data);
#endif // GC_STACK_H