if (nslots < JS_INITIAL_NSLOTS) nslots = JS_INITIAL_NSLOTS;
js_FreeSlot(JSContext *cx, JSObject *obj, uint32 slot){    JSObjectMap *map;    uint32 nslots;    size_t nbytes;    jsval *newslots;    OBJ_CHECK_SLOT(obj, slot);    obj->slots[slot] = JSVAL_VOID;    map = obj->map;    JS_ASSERT(!MAP_IS_NATIVE(map) || ((JSScope *)map)->object == obj);    if (map->freeslot == slot + 1)        map->freeslot = slot;    nslots = map->nslots;    if (nslots > JS_INITIAL_NSLOTS && map->freeslot < nslots / 2) {        nslots = map->freeslot;        nslots += nslots / 2;        nbytes = (nslots + 1) * sizeof(jsval);        newslots = (jsval *) JS_realloc(cx, obj->slots - 1, nbytes);        if (!newslots)            return;        newslots[0] = map->nslots = nslots;        obj->slots = newslots + 1;    }}