JS_InitArenaPool(JSArenaPool *pool, const char *name, size_t size, size_t align, size_t *quotap) { if (align == 0) align = JS_ARENA_DEFAULT_ALIGN; pool->mask = JS_BITMASK(JS_CeilingLog2(align)); pool->first.next = NULL; pool->first.base = pool->first.avail = pool->first.limit = JS_ARENA_ALIGN(pool, &pool->first + 1); pool->current = &pool->first; pool->arenasize = size; pool->quotap = quotap; #ifdef JS_ARENAMETER memset(&pool->stats, 0, sizeof pool->stats); pool->stats.name = strdup(name); pool->stats.next = arena_stats_list; arena_stats_list = &pool->stats; #endif }
JS_InitArenaPool(JSArenaPool *pool, const char *name, size_t size, size_t align) { #ifdef JS_THREADSAFE /* Must come through here once in primordial thread to init safely! */ if (!arena_freelist_lock) { arena_freelist_lock = JS_NEW_LOCK(); JS_ASSERT(arena_freelist_lock); } #endif if (align == 0) align = JS_ARENA_DEFAULT_ALIGN; pool->mask = JS_BITMASK(JS_CeilingLog2(align)); pool->first.next = NULL; pool->first.base = pool->first.avail = pool->first.limit = JS_ARENA_ALIGN(pool, &pool->first + 1); pool->current = &pool->first; pool->arenasize = size; #ifdef JS_ARENAMETER memset(&pool->stats, 0, sizeof pool->stats); pool->stats.name = strdup(name); pool->stats.next = arena_stats_list; arena_stats_list = &pool->stats; #endif }