示例#1
0
文件: arena.cpp 项目: aclysma/Helium
void arena::close_arena () {
#if !__TBB_STATISTICS_EARLY_DUMP
    GATHER_STATISTIC( dump_arena_statistics() );
#endif
    my_market->detach_arena( *this );
    free_arena();
}
示例#2
0
void arena::close_arena () {
#if !__TBB_STATISTICS_EARLY_DUMP
    GATHER_STATISTIC( dump_arena_statistics() );
#endif
    my_market->detach_arena( *this );
    __TBB_ASSERT( is_alive(my_guard), NULL );
    free_arena();
}
示例#3
0
static void rebuild_cache()
{
    free_arena(&cache_arena);
    init_arena(&cache_arena, 1024);
    rebuild_uid_cache();
    rebuild_gid_cache();
    qsort(uid_cache, uid_cache_size, sizeof(struct uid_cache_entry), uid_cache_uid_sortcmp);
    qsort(gid_cache, gid_cache_size, sizeof(struct gid_cache_entry), gid_cache_gid_sortcmp);
}
示例#4
0
void MemoryManager::_free_arenas(Arena *a)
{
    while(a != NULL) {
        Arena* last = a;
        a = a->next_arena;
#ifdef JIT_MEM_CHECK
        checkPointsMutex.lock();
        _check_arena_paddings(last);
        CheckPointsByArena::iterator it = checkPointsByArena.find(last);
        m_assert(it!=checkPointsByArena.end());
        std::vector<size_t>* v = it->second;
        checkPointsByArena.erase(it);
        delete v;
        checkPointsMutex.unlock();
#endif
        free_arena(last);
    }
}
示例#5
0
void
free_chunk_arenas()
{
    ChunkArenaPtr arena;
    int i, rc;

    for(i = 0; i < numArenas; i++) {
        arena = &(chunkArenas[i]);
        if(arena->bitmap == EMPTY_BITMAP && arena->chunks) {
            rc = free_arena(arena->chunks, CHUNK_SIZE * ARENA_CHUNKS);
            if(rc < 0) {
                do_log_error(L_ERROR, errno, "Couldn't unmap memory");
                continue;
            }
            arena->chunks = NULL;
        }
    }
    if(currentArena && currentArena->chunks == NULL)
        currentArena = NULL;
}
示例#6
0
static void pfree(struct pool* p) {
  free_arena(&p->a);
}