ok = FETCH_INT(cx, -1, &i); if (!ok) goto out;
FETCH_INT(cx, -1, i);
            JS_ASSERT(JSVAL_IS_OBJECT(rval));            PUSH_OPND(rval);            obj = NULL;            break;          case JSOP_ZERO:            PUSH_OPND(JSVAL_ZERO);            break;          case JSOP_ONE:            PUSH_OPND(JSVAL_ONE);            break;          case JSOP_NULL:            PUSH_OPND(JSVAL_NULL);            break;          case JSOP_THIS:            PUSH_OPND(OBJECT_TO_JSVAL(fp->thisp));            break;          case JSOP_FALSE:            PUSH_OPND(JSVAL_FALSE);            break;          case JSOP_TRUE:            PUSH_OPND(JSVAL_TRUE);            break;#if JS_HAS_SWITCH_STATEMENT          case JSOP_TABLESWITCH:            pc2 = pc;            len = GET_JUMP_OFFSET(pc2);            /*             * ECMAv2 forbids conversion of discriminant, so we will skip to             * the default case if the discriminant isn't already an int jsval.             * (This opcode is emitted only for dense jsint-domain switches.)             */            if (cx->version == JSVERSION_DEFAULT ||                cx->version >= JSVERSION_1_4) {                rval = POP_OPND();                if (!JSVAL_IS_INT(rval))                    break;                i = JSVAL_TO_INT(rval);            } else {                ok = FETCH_INT(cx, -1, &i);                if (!ok)                    goto out;                sp--;            }            pc2 += JUMP_OFFSET_LEN;            low = GET_JUMP_OFFSET(pc2);            pc2 += JUMP_OFFSET_LEN;            high = GET_JUMP_OFFSET(pc2);            i -= low;            if ((jsuint)i < (jsuint)(high - low + 1)) {                pc2 += JUMP_OFFSET_LEN + JUMP_OFFSET_LEN * i;                off = (jsint) GET_JUMP_OFFSET(pc2);                if (off)                    len = off;            }            break;          case JSOP_LOOKUPSWITCH:            lval = POP_OPND();            pc2 = pc;            len = GET_JUMP_OFFSET(pc2);            if (!JSVAL_IS_NUMBER(lval) &&                !JSVAL_IS_STRING(lval) &&                !JSVAL_IS_BOOLEAN(lval)) {                goto advance_pc;            }            pc2 += JUMP_OFFSET_LEN;            npairs = (jsint) GET_ATOM_INDEX(pc2);            pc2 += ATOM_INDEX_LEN;#define SEARCH_PAIRS(MATCH_CODE)                                              \    while (npairs) {                                                          \        atom = GET_ATOM(cx, script, pc2);                                     \        rval = ATOM_KEY(atom);                                                \        MATCH_CODE                                                            \        if (match) {                                                          \            pc2 += ATOM_INDEX_LEN;                                            \            len = GET_JUMP_OFFSET(pc2);                                       \            goto advance_pc;                                                  \        }                                                                     \        pc2 += ATOM_INDEX_LEN + JUMP_OFFSET_LEN;                              \        npairs--;                                                             \    }            if (JSVAL_IS_STRING(lval)) {                str  = JSVAL_TO_STRING(lval);                SEARCH_PAIRS(                    match = (JSVAL_IS_STRING(rval) &&                             ((str2 = JSVAL_TO_STRING(rval)) == str ||                              !js_CompareStrings(str2, str)));                )            } else if (JSVAL_IS_DOUBLE(lval)) {                d = *JSVAL_TO_DOUBLE(lval);                SEARCH_PAIRS(                    match = (JSVAL_IS_DOUBLE(rval) &&                             *JSVAL_TO_DOUBLE(rval) == d);                )            } else {                SEARCH_PAIRS(                    match = (lval == rval);                )            }#undef SEARCH_PAIRS            break;          case JSOP_CONDSWITCH:            break;#endif /* JS_HAS_SWITCH_STATEMENT */#if JS_HAS_EXPORT_IMPORT          case JSOP_EXPORTALL:            obj = fp->varobj;            ida = JS_Enumerate(cx, obj);            if (!ida) {                ok = JS_FALSE;            } else {                for (i = 0, j = ida->length; i < j; i++) {                    id = ida->vector[i];                    ok = OBJ_LOOKUP_PROPERTY(cx, obj, id, &obj2, &prop);                    if (!ok)                        break;                    if (!prop)                        continue;                    ok = OBJ_GET_ATTRIBUTES(cx, obj, id, prop, &attrs);                    if (ok) {                        attrs |= JSPROP_EXPORTED;                        ok = OBJ_SET_ATTRIBUTES(cx, obj, id, prop, &attrs);                    }                    OBJ_DROP_PROPERTY(cx, obj2, prop);                    if (!ok)                        break;                }                JS_DestroyIdArray(cx, ida);            }            break;          case JSOP_EXPORTNAME:            atom = GET_ATOM(cx, script, pc);            id   = (jsid)atom;            obj  = fp->varobj;            ok = OBJ_LOOKUP_PROPERTY(cx, obj, id, &obj2, &prop);            if (!ok)                goto out;            if (!prop) {                ok = OBJ_DEFINE_PROPERTY(cx, obj, id, JSVAL_VOID, NULL, NULL,                                         JSPROP_EXPORTED, NULL);            } else {                ok = OBJ_GET_ATTRIBUTES(cx, obj, id, prop, &attrs);                if (ok) {                    attrs |= JSPROP_EXPORTED;                    ok = OBJ_SET_ATTRIBUTES(cx, obj, id, prop, &attrs);                }                OBJ_DROP_PROPERTY(cx, obj2, prop);            }            if (!ok)                goto out;            break;          case JSOP_IMPORTALL:            id = (jsid)JSVAL_VOID;            PROPERTY_OP(-1, ok = ImportProperty(cx, obj, id));            sp--;            break;          case JSOP_IMPORTPROP:            /* Get an immediate atom naming the property. */            atom = GET_ATOM(cx, script, pc);            id   = (jsid)atom;            PROPERTY_OP(-1, ok = ImportProperty(cx, obj, id));            sp--;            break;          case JSOP_IMPORTELEM:            ELEMENT_OP(-1, ok = ImportProperty(cx, obj, id));            sp -= 2;            break;#endif /* JS_HAS_EXPORT_IMPORT */          case JSOP_TRAP:            switch (JS_HandleTrap(cx, script, pc, &rval)) {              case JSTRAP_ERROR:                ok = JS_FALSE;                goto out;              case JSTRAP_CONTINUE:                JS_ASSERT(JSVAL_IS_INT(rval));                op = (JSOp) JSVAL_TO_INT(rval);                JS_ASSERT((uintN)op < (uintN)JSOP_LIMIT);                goto do_op;              case JSTRAP_RETURN:                fp->rval = rval;                goto out;#if JS_HAS_EXCEPTIONS              case JSTRAP_THROW:                cx->throwing = JS_TRUE;                cx->exception = rval;                ok = JS_FALSE;                goto out;#endif /* JS_HAS_EXCEPTIONS */              default:;            }