mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-09 15:10:29 +02:00
The collector now has an abstract interface onto the embedder. The embedder has to supply some functionality, such as tracing and forwarding. This is a pretty big change in terms of lines but it's supposed to have no functional or performance change.
21 lines
548 B
C
21 lines
548 B
C
#ifndef SIMPLE_ALLOCATOR_H
|
|
#define SIMPLE_ALLOCATOR_H
|
|
|
|
#include "simple-tagging-scheme.h"
|
|
#include "gc-api.h"
|
|
|
|
static inline void*
|
|
gc_allocate_with_kind(struct mutator *mut, enum alloc_kind kind, size_t bytes) {
|
|
void *obj = gc_allocate(mut, bytes);
|
|
*tag_word(obj) = tag_live(kind);
|
|
return obj;
|
|
}
|
|
|
|
static inline void*
|
|
gc_allocate_pointerless_with_kind(struct mutator *mut, enum alloc_kind kind, size_t bytes) {
|
|
void *obj = gc_allocate_pointerless(mut, bytes);
|
|
*tag_word(obj) = tag_live(kind);
|
|
return obj;
|
|
}
|
|
|
|
#endif // SIMPLE_ALLOCATOR_H
|