while (--n > mark) {
do { while (--n > mark) {
js_MarkLocalRoots(JSContext *cx, JSLocalRootStack *lrs){    unsigned n, m, mark;    JSLocalRootChunk *lrc;    n = lrs->rootCount;    if (n == 0)        return;    mark = lrs->scopeMark;    lrc = lrs->topChunk;    while (--n > mark) {#ifdef GC_MARK_DEBUG        char name[22];        JS_snprintf(name, sizeof name, "<local root %u>", n);#else        const char *name = NULL;#endif        m = n & JSLRS_CHUNK_MASK;        JS_ASSERT(JSVAL_IS_GCTHING(lrc->roots[m]));        JS_MarkGCThing(cx, JSVAL_TO_GCTHING(lrc->roots[m]), name, NULL);        if (m == 0)            lrc = lrc->down;    }}