diff options
author | Andy Wingo <wingo@pobox.com> | 2025-04-11 14:10:41 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2025-04-11 14:10:41 +0200 |
commit | db181e67ff482ab08cbdb0c1a88997b3a886f900 (patch) | |
tree | 6d16fbca515ae3cf506a9d16dbc89c472446e5d9 /libguile/whippet/benchmarks/quads-embedder.h | |
parent | af96820e072d18c49ac03e80c6f3466d568dc77d (diff) | |
parent | f909438596f63ecd44c5b9a28385260714857361 (diff) | |
download | guile-db181e67ff482ab08cbdb0c1a88997b3a886f900.tar.gz |
Merged Whippet into libguile/whippet
Diffstat (limited to 'libguile/whippet/benchmarks/quads-embedder.h')
-rw-r--r-- | libguile/whippet/benchmarks/quads-embedder.h | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/libguile/whippet/benchmarks/quads-embedder.h b/libguile/whippet/benchmarks/quads-embedder.h new file mode 100644 index 000000000..1d9d3f71c --- /dev/null +++ b/libguile/whippet/benchmarks/quads-embedder.h @@ -0,0 +1,37 @@ +#ifndef QUADS_EMBEDDER_H +#define QUADS_EMBEDDER_H + +#include <stddef.h> + +#include "quads-types.h" + +struct gc_heap; + +#define DEFINE_METHODS(name, Name, NAME) \ + static inline size_t name##_size(Name *obj) GC_ALWAYS_INLINE; \ + static inline void visit_##name##_fields(Name *obj,\ + void (*visit)(struct gc_edge edge, \ + struct gc_heap *heap, \ + void *visit_data), \ + struct gc_heap *heap, \ + void *visit_data) GC_ALWAYS_INLINE; +FOR_EACH_HEAP_OBJECT_KIND(DEFINE_METHODS) +#undef DEFINE_METHODS + +static inline size_t quad_size(Quad *obj) { + return sizeof(Quad); +} + +static inline void +visit_quad_fields(Quad *quad, + void (*visit)(struct gc_edge edge, struct gc_heap *heap, + void *visit_data), + struct gc_heap *heap, + void *visit_data) { + for (size_t i = 0; i < 4; i++) + visit(gc_edge(&quad->kids[i]), heap, visit_data); +} + +#include "simple-gc-embedder.h" + +#endif // QUADS_EMBEDDER_H |