示例#1
0
js_alloc_temp_space(void *priv, size_t size)
{
    JSContext *cx = priv;
    void *space;

    JS_ARENA_ALLOCATE(space, &cx->tempPool, size);
    if (!space)
        JS_ReportOutOfMemory(cx);
    return space;
}
示例#2
0
static void *
js_alloc_temp_space(void *priv, size_t size)
{
    JSCompiler *jsc = (JSCompiler *) priv;

    void *space;
    if (size < TEMP_SIZE_LIMIT) {
        int bin = JS_CeilingLog2(size) - TEMP_SIZE_START_LOG2;
        JS_ASSERT(unsigned(bin) < NUM_TEMP_FREELISTS);

        space = jsc->tempFreeList[bin];
        if (space) {
            jsc->tempFreeList[bin] = *(void **)space;
            return space;
        }
    }

    JS_ARENA_ALLOCATE(space, &jsc->context->tempPool, size);
    if (!space)
        js_ReportOutOfScriptQuota(jsc->context);
    return space;
}