static ERTS_INLINE lc_locked_lock_t *lc_alloc(lc_thread_t* thr) { lc_locked_lock_t *res; if (!thr->free_blocks) res = lc_core_alloc(thr); else { res = &thr->free_blocks->lock; thr->free_blocks = thr->free_blocks->next; } return res; }
static ERTS_INLINE void *lc_alloc(void) { void *res; lc_lock(); if (!free_blocks) res = lc_core_alloc(); else { res = (void *) free_blocks; free_blocks = free_blocks->next; } lc_unlock(); return res; }