示例#1
0
void ArenaRelease(ArenaPool *pool, char *mark)
{
    Arena *a;

    for (a = pool->first.next; a; a = a->next) {
        if (UPTRDIFF(mark, a->base) < UPTRDIFF(a->avail, a->base)) {
            a->avail = (uword)ARENA_ALIGN(pool, mark);
            FreeArenaList(pool, a, false);
            return;
        }
    }
}
__attribute__((visibility("default"))) void PL_ArenaRelease(PLArenaPool *pool, char *mark)
{
    PLArena *a;

    for (a = pool->first.next; a; a = a->next) {
        if (((PRUword)(mark) - (PRUword)(a->base)) < ((PRUword)(a->avail) - (PRUword)(a->base))) {
            a->avail = (PRUword)(((PRUword)(mark) + (pool)->mask) & ~(pool)->mask);
            FreeArenaList(pool, a, 0);
            return;
        }
    }
}
示例#3
0
void FinishArenaPool(ArenaPool *pool)
{
    FreeArenaList(pool, &pool->first, true);
}
示例#4
0
void FreeArenaPool(ArenaPool *pool)
{
    FreeArenaList(pool, &pool->first, false);
}
__attribute__((visibility("default"))) void PL_FinishArenaPool(PLArenaPool *pool)
{
    FreeArenaList(pool, &pool->first, 1);
/* # 340 "../../../mozilla/nsprpub/lib/ds/plarena.c" */
}
__attribute__((visibility("default"))) void PL_FreeArenaPool(PLArenaPool *pool)
{
    FreeArenaList(pool, &pool->first, 0);
    ;
}