mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-07 12:40:19 +02:00
Wire up tracepoints for event-listener interface
This commit is contained in:
parent
cca54736a0
commit
461efa98a0
4 changed files with 43 additions and 18 deletions
19
src/bdw.c
19
src/bdw.c
|
@ -5,6 +5,7 @@
|
|||
|
||||
#include "gc-api.h"
|
||||
#include "gc-ephemeron.h"
|
||||
#include "gc-tracepoint.h"
|
||||
|
||||
#define GC_IMPL 1
|
||||
#include "gc-internal.h"
|
||||
|
@ -70,11 +71,16 @@ struct gc_mutator {
|
|||
};
|
||||
|
||||
struct gc_heap *__the_bdw_gc_heap;
|
||||
#define HEAP_EVENT(event, ...) \
|
||||
__the_bdw_gc_heap->event_listener.event(__the_bdw_gc_heap->event_listener_data, ##__VA_ARGS__)
|
||||
#define MUTATOR_EVENT(mut, event, ...) \
|
||||
__the_bdw_gc_heap->event_listener.event(mut->event_listener_data, ##__VA_ARGS__)
|
||||
|
||||
#define HEAP_EVENT(event, ...) do { \
|
||||
__the_bdw_gc_heap->event_listener.event(__the_bdw_gc_heap->event_listener_data, \
|
||||
##__VA_ARGS__); \
|
||||
GC_TRACEPOINT(event, ##__VA_ARGS__); \
|
||||
} while (0)
|
||||
#define MUTATOR_EVENT(mut, event, ...) do { \
|
||||
__the_bdw_gc_heap->event_listener.event(mut->event_listener_data, \
|
||||
##__VA_ARGS__); \
|
||||
GC_TRACEPOINT(event, ##__VA_ARGS__); \
|
||||
} while (0)
|
||||
static inline size_t gc_inline_bytes_to_freelist_index(size_t bytes) {
|
||||
return (bytes - 1U) / GC_INLINE_GRANULE_BYTES;
|
||||
}
|
||||
|
@ -386,7 +392,8 @@ static inline struct gc_mutator *add_mutator(struct gc_heap *heap) {
|
|||
struct gc_mutator *ret =
|
||||
GC_generic_malloc(sizeof(struct gc_mutator), mutator_gc_kind);
|
||||
ret->heap = heap;
|
||||
ret->event_listener_data = HEAP_EVENT(mutator_added);
|
||||
ret->event_listener_data =
|
||||
heap->event_listener.mutator_added(heap->event_listener_data);
|
||||
|
||||
pthread_mutex_lock(&heap->lock);
|
||||
ret->next = heap->mutators;
|
||||
|
|
14
src/mmc.c
14
src/mmc.c
|
@ -17,6 +17,7 @@
|
|||
#include "gc-platform.h"
|
||||
#include "gc-stack.h"
|
||||
#include "gc-trace.h"
|
||||
#include "gc-tracepoint.h"
|
||||
#include "heap-sizer.h"
|
||||
#include "large-object-space.h"
|
||||
#include "nofl-space.h"
|
||||
|
@ -67,10 +68,15 @@ struct gc_heap {
|
|||
void *event_listener_data;
|
||||
};
|
||||
|
||||
#define HEAP_EVENT(heap, event, ...) \
|
||||
(heap)->event_listener.event((heap)->event_listener_data, ##__VA_ARGS__)
|
||||
#define MUTATOR_EVENT(mut, event, ...) \
|
||||
(mut)->heap->event_listener.event((mut)->event_listener_data, ##__VA_ARGS__)
|
||||
#define HEAP_EVENT(heap, event, ...) do { \
|
||||
(heap)->event_listener.event((heap)->event_listener_data, ##__VA_ARGS__); \
|
||||
GC_TRACEPOINT(event, ##__VA_ARGS__); \
|
||||
} while (0)
|
||||
#define MUTATOR_EVENT(mut, event, ...) do { \
|
||||
(mut)->heap->event_listener.event((mut)->event_listener_data, \
|
||||
##__VA_ARGS__); \
|
||||
GC_TRACEPOINT(event, ##__VA_ARGS__); \
|
||||
} while (0)
|
||||
|
||||
struct gc_mutator {
|
||||
struct nofl_allocator allocator;
|
||||
|
|
14
src/pcc.c
14
src/pcc.c
|
@ -17,6 +17,7 @@
|
|||
#include "gc-inline.h"
|
||||
#include "gc-platform.h"
|
||||
#include "gc-trace.h"
|
||||
#include "gc-tracepoint.h"
|
||||
#include "heap-sizer.h"
|
||||
#include "large-object-space.h"
|
||||
#if GC_PARALLEL
|
||||
|
@ -74,10 +75,15 @@ struct gc_heap {
|
|||
void *event_listener_data;
|
||||
};
|
||||
|
||||
#define HEAP_EVENT(heap, event, ...) \
|
||||
(heap)->event_listener.event((heap)->event_listener_data, ##__VA_ARGS__)
|
||||
#define MUTATOR_EVENT(mut, event, ...) \
|
||||
(mut)->heap->event_listener.event((mut)->event_listener_data, ##__VA_ARGS__)
|
||||
#define HEAP_EVENT(heap, event, ...) do { \
|
||||
(heap)->event_listener.event((heap)->event_listener_data, ##__VA_ARGS__); \
|
||||
GC_TRACEPOINT(event, ##__VA_ARGS__); \
|
||||
} while (0)
|
||||
#define MUTATOR_EVENT(mut, event, ...) do { \
|
||||
(mut)->heap->event_listener.event((mut)->event_listener_data, \
|
||||
##__VA_ARGS__); \
|
||||
GC_TRACEPOINT(event, ##__VA_ARGS__); \
|
||||
} while (0)
|
||||
|
||||
struct gc_mutator {
|
||||
struct copy_space_allocator allocator;
|
||||
|
|
14
src/semi.c
14
src/semi.c
|
@ -9,6 +9,7 @@
|
|||
#include "gc-internal.h"
|
||||
|
||||
#include "gc-platform.h"
|
||||
#include "gc-tracepoint.h"
|
||||
#include "heap-sizer.h"
|
||||
#include "semi-attrs.h"
|
||||
#include "large-object-space.h"
|
||||
|
@ -59,10 +60,15 @@ struct gc_mutator {
|
|||
void *event_listener_data;
|
||||
};
|
||||
|
||||
#define HEAP_EVENT(heap, event, ...) \
|
||||
(heap)->event_listener.event((heap)->event_listener_data, ##__VA_ARGS__)
|
||||
#define MUTATOR_EVENT(mut, event, ...) \
|
||||
(mut)->heap->event_listener.event((mut)->event_listener_data, ##__VA_ARGS__)
|
||||
#define HEAP_EVENT(heap, event, ...) do { \
|
||||
(heap)->event_listener.event((heap)->event_listener_data, ##__VA_ARGS__); \
|
||||
GC_TRACEPOINT(event, ##__VA_ARGS__); \
|
||||
} while (0)
|
||||
#define MUTATOR_EVENT(mut, event, ...) do { \
|
||||
(mut)->heap->event_listener.event((mut)->event_listener_data, \
|
||||
##__VA_ARGS__); \
|
||||
GC_TRACEPOINT(event, ##__VA_ARGS__); \
|
||||
} while (0)
|
||||
|
||||
static inline void clear_memory(uintptr_t addr, size_t size) {
|
||||
memset((char*)addr, 0, size);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue