Bug 1285833 - Update code comments to latest spec steps. r=sfink

This commit is contained in:
Jeff Walden 2016-12-06 17:21:05 -10:00
Родитель 4f082e2127
Коммит 7e29e33ae3
1 изменённых файлов: 26 добавлений и 12 удалений

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

@ -3004,36 +3004,50 @@ js::DefineTypedArrayElement(JSContext* cx, HandleObject obj, uint64_t index,
{
MOZ_ASSERT(obj->is<TypedArrayObject>());
// These are all substeps of 3.c.
// Steps i-vi.
// These are all substeps of 3.b.
// Steps i-iii are handled by the caller.
// Steps iv-v.
// We (wrongly) ignore out of range defines with a value.
if (index >= obj->as<TypedArrayObject>().length())
uint32_t length = obj->as<TypedArrayObject>().length();
if (index >= length)
return result.succeed();
// Step vii.
// Step vi.
if (desc.isAccessorDescriptor())
return result.fail(JSMSG_CANT_REDEFINE_PROP);
// Step viii.
// Step vii.
if (desc.hasConfigurable() && desc.configurable())
return result.fail(JSMSG_CANT_REDEFINE_PROP);
// Step ix.
// Step viii.
if (desc.hasEnumerable() && !desc.enumerable())
return result.fail(JSMSG_CANT_REDEFINE_PROP);
// Step x.
// Step ix.
if (desc.hasWritable() && !desc.writable())
return result.fail(JSMSG_CANT_REDEFINE_PROP);
// Step xi.
// Step x.
if (desc.hasValue()) {
double d;
if (!ToNumber(cx, desc.value(), &d))
// The following step numbers refer to 9.4.5.9
// IntegerIndexedElementSet.
// Steps 1-2 are enforced by the caller.
// Step 3.
double numValue;
if (!ToNumber(cx, desc.value(), &numValue))
return false;
if (obj->is<TypedArrayObject>())
TypedArrayObject::setElement(obj->as<TypedArrayObject>(), index, d);
// Steps 4-5, 8-9.
if (obj->as<TypedArrayObject>().hasDetachedBuffer())
return result.fail(JSMSG_TYPED_ARRAY_DETACHED);
// Steps 10-16.
TypedArrayObject::setElement(obj->as<TypedArrayObject>(), index, numValue);
}
// Step xii.