Check for doubles that fit in ints in JSOP_GETELEM slow paths (bug 604905, r=luke).

This commit is contained in:
David Anderson 2010-11-19 17:24:47 -08:00
Родитель c7ac3a7b96
Коммит 1f923e8243
2 изменённых файлов: 16 добавлений и 6 удалений

Просмотреть файл

@ -4504,9 +4504,14 @@ BEGIN_CASE(JSOP_GETELEM)
else
goto intern_big_int;
} else {
intern_big_int:
if (!js_InternNonIntElementId(cx, obj, rref, &id))
goto error;
int32_t i;
if (ValueFitsInInt32(rref, &i) && INT_FITS_IN_JSID(i)) {
id = INT_TO_JSID(i);
} else {
intern_big_int:
if (!js_InternNonIntElementId(cx, obj, rref, &id))
goto error;
}
}
if (!obj->getProperty(cx, id, &rval))

Просмотреть файл

@ -487,9 +487,14 @@ stubs::GetElem(VMFrame &f)
goto intern_big_int;
} else {
intern_big_int:
if (!js_InternNonIntElementId(cx, obj, rref, &id))
THROW();
int32_t i;
if (ValueFitsInInt32(rref, &i) && INT_FITS_IN_JSID(i)) {
id = INT_TO_JSID(i);
} else {
intern_big_int:
if (!js_InternNonIntElementId(cx, obj, rref, &id))
THROW();
}
}
if (!obj->getProperty(cx, id, &rval))