зеркало из https://github.com/mozilla/gecko-dev.git
Bug 859892 - Rename JS_CANONICALIZE_NAN to JS::CanonicalizeNaN. r=Waldo
This commit is contained in:
Родитель
2dcd8b769e
Коммит
6cecaaf71d
|
@ -843,17 +843,6 @@ JSVAL_EXTRACT_NON_DOUBLE_TYPE_IMPL(jsval_layout l)
|
|||
|
||||
#endif /* JS_BITS_PER_WORD */
|
||||
|
||||
static inline double
|
||||
JS_CANONICALIZE_NAN(double d)
|
||||
{
|
||||
if (MOZ_UNLIKELY(d != d)) {
|
||||
jsval_layout l;
|
||||
l.asBits = 0x7FF8000000000000LL;
|
||||
return l.asDouble;
|
||||
}
|
||||
return d;
|
||||
}
|
||||
|
||||
static inline jsval_layout JSVAL_TO_IMPL(JS::Value v);
|
||||
static inline JS_VALUE_CONSTEXPR JS::Value IMPL_TO_JSVAL(jsval_layout l);
|
||||
|
||||
|
@ -873,6 +862,14 @@ GenericNaN()
|
|||
return mozilla::SpecificNaN(0, 0x8000000000000ULL);
|
||||
}
|
||||
|
||||
static inline double
|
||||
CanonicalizeNaN(double d)
|
||||
{
|
||||
if (MOZ_UNLIKELY(mozilla::IsNaN(d)))
|
||||
return GenericNaN();
|
||||
return d;
|
||||
}
|
||||
|
||||
/*
|
||||
* JS::Value is the interface for a single JavaScript Engine value. A few
|
||||
* general notes on JS::Value:
|
||||
|
|
|
@ -847,7 +847,7 @@ static JS_ALWAYS_INLINE jsval
|
|||
JS_NumberValue(double d)
|
||||
{
|
||||
int32_t i;
|
||||
d = JS_CANONICALIZE_NAN(d);
|
||||
d = JS::CanonicalizeNaN(d);
|
||||
if (mozilla::DoubleIsInt32(d, &i))
|
||||
return INT_TO_JSVAL(i);
|
||||
return DOUBLE_TO_JSVAL(d);
|
||||
|
|
|
@ -48,6 +48,7 @@ using namespace js;
|
|||
using mozilla::IsNaN;
|
||||
using mozilla::LittleEndian;
|
||||
using mozilla::NativeEndian;
|
||||
using JS::CanonicalizeNaN;
|
||||
|
||||
enum StructuredDataType {
|
||||
/* Structured data types provided by the engine */
|
||||
|
@ -424,16 +425,6 @@ SCInput::replacePair(uint32_t tag, uint32_t data)
|
|||
return replace(PairToUInt64(tag, data));
|
||||
}
|
||||
|
||||
/*
|
||||
* The purpose of this never-inlined function is to avoid a strange g++ build
|
||||
* error on OS X 10.5 (see bug 624080). :-(
|
||||
*/
|
||||
static JS_NEVER_INLINE double
|
||||
CanonicalizeNan(double d)
|
||||
{
|
||||
return JS_CANONICALIZE_NAN(d);
|
||||
}
|
||||
|
||||
bool
|
||||
SCInput::readDouble(double *p)
|
||||
{
|
||||
|
@ -443,7 +434,7 @@ SCInput::readDouble(double *p)
|
|||
} pun;
|
||||
if (!read(&pun.u))
|
||||
return false;
|
||||
*p = CanonicalizeNan(pun.d);
|
||||
*p = CanonicalizeNaN(pun.d);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -558,7 +549,7 @@ ReinterpretPairAsDouble(uint32_t tag, uint32_t data)
|
|||
bool
|
||||
SCOutput::writeDouble(double d)
|
||||
{
|
||||
return write(ReinterpretDoubleAsUInt64(CanonicalizeNan(d)));
|
||||
return write(ReinterpretDoubleAsUInt64(CanonicalizeNaN(d)));
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
|
|
|
@ -53,6 +53,7 @@ using namespace js::types;
|
|||
|
||||
using mozilla::IsNaN;
|
||||
using mozilla::PodCopy;
|
||||
using JS::CanonicalizeNaN;
|
||||
using JS::GenericNaN;
|
||||
|
||||
/*
|
||||
|
@ -1263,7 +1264,7 @@ js::ToDoubleForTypedArray(JSContext *cx, JS::HandleValue vp, double *d)
|
|||
// this but it can confuse differential testing when this value is stored
|
||||
// to a float array and then read back as integer. To work around this, we
|
||||
// always canonicalize NaN values in more-deterministic builds.
|
||||
*d = JS_CANONICALIZE_NAN(*d);
|
||||
*d = CanonicalizeNaN(*d);
|
||||
#endif
|
||||
|
||||
return true;
|
||||
|
@ -2633,7 +2634,7 @@ TypedArrayObjectTemplate<float>::copyIndexToValue(JSObject *tarray, uint32_t ind
|
|||
* This could be removed for platforms/compilers known to convert a 32-bit
|
||||
* non-canonical nan to a 64-bit canonical nan.
|
||||
*/
|
||||
vp.setDouble(JS_CANONICALIZE_NAN(dval));
|
||||
vp.setDouble(CanonicalizeNaN(dval));
|
||||
}
|
||||
|
||||
template<>
|
||||
|
@ -2650,7 +2651,7 @@ TypedArrayObjectTemplate<double>::copyIndexToValue(JSObject *tarray, uint32_t in
|
|||
* confuse the engine into interpreting a double-typed jsval as an
|
||||
* object-typed jsval.
|
||||
*/
|
||||
vp.setDouble(JS_CANONICALIZE_NAN(val));
|
||||
vp.setDouble(CanonicalizeNaN(val));
|
||||
}
|
||||
|
||||
} /* anonymous namespace */
|
||||
|
@ -3111,7 +3112,7 @@ DataViewObject::getFloat32Impl(JSContext *cx, CallArgs args)
|
|||
if (!read(cx, thisView, args, &val, "getFloat32"))
|
||||
return false;
|
||||
|
||||
args.rval().setDouble(JS_CANONICALIZE_NAN(val));
|
||||
args.rval().setDouble(CanonicalizeNaN(val));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -3133,7 +3134,7 @@ DataViewObject::getFloat64Impl(JSContext *cx, CallArgs args)
|
|||
if (!read(cx, thisView, args, &val, "getFloat64"))
|
||||
return false;
|
||||
|
||||
args.rval().setDouble(JS_CANONICALIZE_NAN(val));
|
||||
args.rval().setDouble(CanonicalizeNaN(val));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче