Bug 1268224 - Fix canonicalization in more-deterministic builds. r=lth

This commit is contained in:
Jan de Mooij 2016-06-11 10:39:14 +02:00
Родитель c62f33ecfe
Коммит 557a2cd901
1 изменённых файлов: 11 добавлений и 0 удалений

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

@ -1664,6 +1664,12 @@ DataViewObject::write(JSContext* cx, Handle<DataViewObject*> obj,
if (!WebIDLCast(cx, args[1], &value)) if (!WebIDLCast(cx, args[1], &value))
return false; return false;
#ifdef JS_MORE_DETERMINISTIC
// See the comment in ElementSpecific::doubleToNative.
if (TypeIsFloatingPoint<NativeType>())
value = JS::CanonicalizeNaN(value);
#endif
bool toLittleEndian = args.length() >= 3 && ToBoolean(args[2]); bool toLittleEndian = args.length() >= 3 && ToBoolean(args[2]);
if (obj->arrayBuffer().isDetached()) { if (obj->arrayBuffer().isDetached()) {
@ -2047,6 +2053,11 @@ TypedArrayObject::setElement(TypedArrayObject& obj, uint32_t index, double d)
{ {
MOZ_ASSERT(index < obj.length()); MOZ_ASSERT(index < obj.length());
#ifdef JS_MORE_DETERMINISTIC
// See the comment in ElementSpecific::doubleToNative.
d = JS::CanonicalizeNaN(d);
#endif
switch (obj.type()) { switch (obj.type()) {
case Scalar::Int8: case Scalar::Int8:
Int8Array::setIndexValue(obj, index, d); Int8Array::setIndexValue(obj, index, d);