Пример #1
0
static Arena*
find_arena(GCObjectPtr ptr)
{
    void* arena_ptr = PTR_TO_ARENA(ptr);
    Arena* local_arenas[MAX_ARENAS];
    int local_num_arenas;

    LOCK_ARENAS();
    local_num_arenas = num_arenas;
    memmove (local_arenas, heap_arenas, local_num_arenas*sizeof(Arena*));
    UNLOCK_ARENAS();

    void* rv = bsearch (&arena_ptr, local_arenas, local_num_arenas, sizeof(Arena*), compare_ptrs);
    if (!rv) return NULL;
    return *(Arena**)rv;
}
Пример #2
0
void* ptr_to_arena(void* ptr) { return PTR_TO_ARENA(ptr); }