24#define CACHE_BUCKETS 1021
41static uint64_t
_cache_hash(
const char * sig,
void * target_fn,
bool is_safe) {
45 h = ((h << 5) + h) + c;
46 h ^= (uint64_t)(uintptr_t)target_fn;
48 h ^= 0x123456789ABCDEF0ULL;
58 uint64_t h =
_cache_hash(signature, target_fn, is_safe);
63 if (entry->trampoline->target_fn == target_fn && entry->trampoline->is_safe == is_safe &&
64 strcmp(entry->trampoline->signature, signature) == 0) {
65 entry->trampoline->ref_count++;
67 return entry->trampoline;
char * p
Definition 904_registry_benchmark.c:25
void _infix_cache_release(infix_forward_t *trampoline)
Definition cache.c:166
static bool _cache_remove_no_lock(infix_forward_t *trampoline)
Definition cache.c:130
static infix_mutex_t g_cache_mutex
Definition cache.c:35
#define CACHE_BUCKETS
Definition cache.c:24
void _infix_cache_clear(void)
Definition cache.c:110
bool _infix_cache_remove(infix_forward_t *trampoline)
Definition cache.c:155
static _cache_entry_t * g_trampoline_cache[CACHE_BUCKETS]
Definition cache.c:33
static uint64_t _cache_hash(const char *sig, void *target_fn, bool is_safe)
Definition cache.c:41
infix_forward_t * _infix_cache_lookup(const char *signature, void *target_fn, bool is_safe)
Definition cache.c:57
void _infix_cache_insert(infix_forward_t *trampoline)
Definition cache.c:78
#define infix_free
A macro that can be defined to override the default free function.
Definition infix.h:383
#define infix_malloc
A macro that can be defined to override the default malloc function.
Definition infix.h:371
Internal data structures, function prototypes, and constants.
pthread_mutex_t infix_mutex_t
Definition infix_internals.h:161
#define INFIX_MUTEX_INITIALIZER
Definition infix_internals.h:162
#define INFIX_MUTEX_UNLOCK(m)
Definition infix_internals.h:164
INFIX_INTERNAL void _infix_forward_destroy_internal(infix_forward_t *trampoline)
Definition trampoline.c:701
#define INFIX_MUTEX_LOCK(m)
Definition infix_internals.h:163
infix_forward_t * trampoline
Definition cache.c:28
struct _cache_entry_t * next
Definition cache.c:29
Internal definition of a forward trampoline handle.
Definition infix_internals.h:90
void * target_fn
Definition infix_internals.h:99
size_t ref_count
Definition infix_internals.h:102
bool is_safe
Definition infix_internals.h:101
char * signature
Definition infix_internals.h:103