JS_FRIEND_API(void) js_FreeStack(JSContext *cx, void *mark)
JS_FRIEND_API(JSBool) js_Invoke(JSContext *cx, uintN argc, uintN flags)
JS_FRIEND_API(void)js_FreeStack(JSContext *cx, void *mark){    JSStackHeader *sh;    jsuword slotdiff;    /* Check for zero nslots allocation special case. */    if (!mark)        return;    /* We can assert because js_FreeStack always balances js_AllocStack. */    sh = cx->stackHeaders;    JS_ASSERT(sh);    /* If mark is in the current segment, reduce sh->nslots, else pop sh. */    slotdiff = JS_UPTRDIFF(mark, JS_STACK_SEGMENT(sh)) / sizeof(jsval);    if (slotdiff < (jsuword)sh->nslots)        sh->nslots = slotdiff;    else        cx->stackHeaders = sh->down;    /* Release the stackPool space allocated since mark was set. */    JS_ARENA_RELEASE(&cx->stackPool, mark);}