explicit LooseEqualityData(JSContext* cx) : qNaN(cx), sNaN(cx), d42(cx), i42(cx), undef(cx), null(cx), obj(cx), poszero(cx), negzero(cx) { qNaN = JS::CanonicalizedDoubleValue(numeric_limits<double>::quiet_NaN()); sNaN = JS::CanonicalizedDoubleValue(numeric_limits<double>::signaling_NaN()); d42 = JS::DoubleValue(42.0); i42 = JS::Int32Value(42); undef = JS::UndefinedValue(); null = JS::NullValue(); obj = JS::ObjectOrNullValue(JS::CurrentGlobalOrNull(cx)); poszero = JS::DoubleValue(0.0); negzero = JS::DoubleValue(-0.0); #ifdef XP_WIN # define copysign _copysign #endif MOZ_RELEASE_ASSERT(copysign(1.0, poszero.toDouble()) == 1.0); MOZ_RELEASE_ASSERT(copysign(1.0, negzero.toDouble()) == -1.0); #ifdef XP_WIN # undef copysign #endif }
explicit LooseEqualityData(JSContext *cx) : qNaN(cx), sNaN(cx), d42(cx), i42(cx), undef(cx), null(cx), obj(cx), poszero(cx), negzero(cx) { qNaN = DOUBLE_TO_JSVAL(numeric_limits<double>::quiet_NaN()); sNaN = DOUBLE_TO_JSVAL(numeric_limits<double>::signaling_NaN()); d42 = DOUBLE_TO_JSVAL(42.0); i42 = INT_TO_JSVAL(42); undef = JSVAL_VOID; null = JSVAL_NULL; obj = OBJECT_TO_JSVAL(JS::CurrentGlobalOrNull(cx)); poszero = DOUBLE_TO_JSVAL(0.0); negzero = DOUBLE_TO_JSVAL(-0.0); #ifdef XP_WIN # define copysign _copysign #endif JS_ASSERT(copysign(1.0, poszero.toDouble()) == 1.0); JS_ASSERT(copysign(1.0, negzero.toDouble()) == -1.0); #ifdef XP_WIN # undef copysign #endif }