mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-07 20:50:17 +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-api.h"
|
||||||
#include "gc-ephemeron.h"
|
#include "gc-ephemeron.h"
|
||||||
|
#include "gc-tracepoint.h"
|
||||||
|
|
||||||
#define GC_IMPL 1
|
#define GC_IMPL 1
|
||||||
#include "gc-internal.h"
|
#include "gc-internal.h"
|
||||||
|
@ -70,11 +71,16 @@ struct gc_mutator {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct gc_heap *__the_bdw_gc_heap;
|
struct gc_heap *__the_bdw_gc_heap;
|
||||||
#define HEAP_EVENT(event, ...) \
|
#define HEAP_EVENT(event, ...) do { \
|
||||||
__the_bdw_gc_heap->event_listener.event(__the_bdw_gc_heap->event_listener_data, ##__VA_ARGS__)
|
__the_bdw_gc_heap->event_listener.event(__the_bdw_gc_heap->event_listener_data, \
|
||||||
#define MUTATOR_EVENT(mut, event, ...) \
|
##__VA_ARGS__); \
|
||||||
__the_bdw_gc_heap->event_listener.event(mut->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) {
|
static inline size_t gc_inline_bytes_to_freelist_index(size_t bytes) {
|
||||||
return (bytes - 1U) / GC_INLINE_GRANULE_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 =
|
struct gc_mutator *ret =
|
||||||
GC_generic_malloc(sizeof(struct gc_mutator), mutator_gc_kind);
|
GC_generic_malloc(sizeof(struct gc_mutator), mutator_gc_kind);
|
||||||
ret->heap = heap;
|
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);
|
pthread_mutex_lock(&heap->lock);
|
||||||
ret->next = heap->mutators;
|
ret->next = heap->mutators;
|
||||||
|
|
14
src/mmc.c
14
src/mmc.c
|
@ -17,6 +17,7 @@
|
||||||
#include "gc-platform.h"
|
#include "gc-platform.h"
|
||||||
#include "gc-stack.h"
|
#include "gc-stack.h"
|
||||||
#include "gc-trace.h"
|
#include "gc-trace.h"
|
||||||
|
#include "gc-tracepoint.h"
|
||||||
#include "heap-sizer.h"
|
#include "heap-sizer.h"
|
||||||
#include "large-object-space.h"
|
#include "large-object-space.h"
|
||||||
#include "nofl-space.h"
|
#include "nofl-space.h"
|
||||||
|
@ -67,10 +68,15 @@ struct gc_heap {
|
||||||
void *event_listener_data;
|
void *event_listener_data;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define HEAP_EVENT(heap, event, ...) \
|
#define HEAP_EVENT(heap, event, ...) do { \
|
||||||
(heap)->event_listener.event((heap)->event_listener_data, ##__VA_ARGS__)
|
(heap)->event_listener.event((heap)->event_listener_data, ##__VA_ARGS__); \
|
||||||
#define MUTATOR_EVENT(mut, event, ...) \
|
GC_TRACEPOINT(event, ##__VA_ARGS__); \
|
||||||
(mut)->heap->event_listener.event((mut)->event_listener_data, ##__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 gc_mutator {
|
||||||
struct nofl_allocator allocator;
|
struct nofl_allocator allocator;
|
||||||
|
|
14
src/pcc.c
14
src/pcc.c
|
@ -17,6 +17,7 @@
|
||||||
#include "gc-inline.h"
|
#include "gc-inline.h"
|
||||||
#include "gc-platform.h"
|
#include "gc-platform.h"
|
||||||
#include "gc-trace.h"
|
#include "gc-trace.h"
|
||||||
|
#include "gc-tracepoint.h"
|
||||||
#include "heap-sizer.h"
|
#include "heap-sizer.h"
|
||||||
#include "large-object-space.h"
|
#include "large-object-space.h"
|
||||||
#if GC_PARALLEL
|
#if GC_PARALLEL
|
||||||
|
@ -74,10 +75,15 @@ struct gc_heap {
|
||||||
void *event_listener_data;
|
void *event_listener_data;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define HEAP_EVENT(heap, event, ...) \
|
#define HEAP_EVENT(heap, event, ...) do { \
|
||||||
(heap)->event_listener.event((heap)->event_listener_data, ##__VA_ARGS__)
|
(heap)->event_listener.event((heap)->event_listener_data, ##__VA_ARGS__); \
|
||||||
#define MUTATOR_EVENT(mut, event, ...) \
|
GC_TRACEPOINT(event, ##__VA_ARGS__); \
|
||||||
(mut)->heap->event_listener.event((mut)->event_listener_data, ##__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 gc_mutator {
|
||||||
struct copy_space_allocator allocator;
|
struct copy_space_allocator allocator;
|
||||||
|
|
14
src/semi.c
14
src/semi.c
|
@ -9,6 +9,7 @@
|
||||||
#include "gc-internal.h"
|
#include "gc-internal.h"
|
||||||
|
|
||||||
#include "gc-platform.h"
|
#include "gc-platform.h"
|
||||||
|
#include "gc-tracepoint.h"
|
||||||
#include "heap-sizer.h"
|
#include "heap-sizer.h"
|
||||||
#include "semi-attrs.h"
|
#include "semi-attrs.h"
|
||||||
#include "large-object-space.h"
|
#include "large-object-space.h"
|
||||||
|
@ -59,10 +60,15 @@ struct gc_mutator {
|
||||||
void *event_listener_data;
|
void *event_listener_data;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define HEAP_EVENT(heap, event, ...) \
|
#define HEAP_EVENT(heap, event, ...) do { \
|
||||||
(heap)->event_listener.event((heap)->event_listener_data, ##__VA_ARGS__)
|
(heap)->event_listener.event((heap)->event_listener_data, ##__VA_ARGS__); \
|
||||||
#define MUTATOR_EVENT(mut, event, ...) \
|
GC_TRACEPOINT(event, ##__VA_ARGS__); \
|
||||||
(mut)->heap->event_listener.event((mut)->event_listener_data, ##__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) {
|
static inline void clear_memory(uintptr_t addr, size_t size) {
|
||||||
memset((char*)addr, 0, size);
|
memset((char*)addr, 0, size);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue