mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 806538 - Update double-conversion and document the version we are at. r=Waldo.
--HG-- extra : rebase_source : 7e7ec80943329342c2305370dd0fe6bde46433a4
This commit is contained in:
parent
9f9868640e
commit
c1b7f7b096
@ -162,7 +162,7 @@ bool DoubleToStringConverter::ToShortestIeeeNumber(
|
|||||||
double value,
|
double value,
|
||||||
StringBuilder* result_builder,
|
StringBuilder* result_builder,
|
||||||
DoubleToStringConverter::DtoaMode mode) const {
|
DoubleToStringConverter::DtoaMode mode) const {
|
||||||
assert(mode == SHORTEST || mode == SHORTEST_SINGLE);
|
ASSERT(mode == SHORTEST || mode == SHORTEST_SINGLE);
|
||||||
if (Double(value).IsSpecial()) {
|
if (Double(value).IsSpecial()) {
|
||||||
return HandleSpecialValues(value, result_builder);
|
return HandleSpecialValues(value, result_builder);
|
||||||
}
|
}
|
||||||
|
@ -529,7 +529,7 @@ static bool Grisu3(double v,
|
|||||||
if (mode == FAST_DTOA_SHORTEST) {
|
if (mode == FAST_DTOA_SHORTEST) {
|
||||||
Double(v).NormalizedBoundaries(&boundary_minus, &boundary_plus);
|
Double(v).NormalizedBoundaries(&boundary_minus, &boundary_plus);
|
||||||
} else {
|
} else {
|
||||||
assert(mode == FAST_DTOA_SHORTEST_SINGLE);
|
ASSERT(mode == FAST_DTOA_SHORTEST_SINGLE);
|
||||||
float single_v = static_cast<float>(v);
|
float single_v = static_cast<float>(v);
|
||||||
Single(single_v).NormalizedBoundaries(&boundary_minus, &boundary_plus);
|
Single(single_v).NormalizedBoundaries(&boundary_minus, &boundary_plus);
|
||||||
}
|
}
|
||||||
|
@ -1,30 +0,0 @@
|
|||||||
diff --git a/mfbt/double-conversion/utils.h b/mfbt/double-conversion/utils.h
|
|
||||||
--- a/mfbt/double-conversion/utils.h
|
|
||||||
+++ b/mfbt/double-conversion/utils.h
|
|
||||||
@@ -48,20 +48,24 @@
|
|
||||||
// An easy way to test if the floating-point operations are correct is to
|
|
||||||
// evaluate: 89255.0/1e22. If the floating-point stack is 64 bits wide then
|
|
||||||
// the result is equal to 89255e-22.
|
|
||||||
// The best way to test this, is to create a division-function and to compare
|
|
||||||
// the output of the division with the expected result. (Inlining must be
|
|
||||||
// disabled.)
|
|
||||||
// On Linux,x86 89255e-22 != Div_double(89255.0/1e22)
|
|
||||||
#if defined(_M_X64) || defined(__x86_64__) || \
|
|
||||||
- defined(__ARMEL__) || \
|
|
||||||
+ defined(__ARMEL__) || defined(__avr32__) || \
|
|
||||||
+ defined(__hppa__) || defined(__ia64__) || \
|
|
||||||
+ defined(__mips__) || defined(__powerpc__) || \
|
|
||||||
+ defined(__sparc__) || defined(__sparc) || defined(__s390__) || \
|
|
||||||
+ defined(__SH4__) || defined(__alpha__) || \
|
|
||||||
defined(_MIPS_ARCH_MIPS32R2)
|
|
||||||
#define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1
|
|
||||||
-#elif defined(_M_IX86) || defined(__i386__)
|
|
||||||
+#elif defined(_M_IX86) || defined(__i386__) || defined(__i386)
|
|
||||||
#if defined(_WIN32)
|
|
||||||
// Windows uses a 64bit wide floating point stack.
|
|
||||||
#define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1
|
|
||||||
#else
|
|
||||||
#undef DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS
|
|
||||||
#endif // _WIN32
|
|
||||||
#else
|
|
||||||
#error Target architecture was not detected as supported by Double-Conversion.
|
|
@ -515,15 +515,15 @@ float Strtof(Vector<const char> buffer, int exponent) {
|
|||||||
double double_next2 = Double(double_next).NextDouble();
|
double double_next2 = Double(double_next).NextDouble();
|
||||||
f4 = static_cast<float>(double_next2);
|
f4 = static_cast<float>(double_next2);
|
||||||
}
|
}
|
||||||
assert(f1 <= f2 && f2 <= f3 && f3 <= f4);
|
ASSERT(f1 <= f2 && f2 <= f3 && f3 <= f4);
|
||||||
|
|
||||||
// If the guess doesn't lie near a single-precision boundary we can simply
|
// If the guess doesn't lie near a single-precision boundary we can simply
|
||||||
// return its float-value.
|
// return its float-value.
|
||||||
if ((f1 == f4)) {
|
if (f1 == f4) {
|
||||||
return float_guess;
|
return float_guess;
|
||||||
}
|
}
|
||||||
|
|
||||||
assert((f1 != f2 && f2 == f3 && f3 == f4) ||
|
ASSERT((f1 != f2 && f2 == f3 && f3 == f4) ||
|
||||||
(f1 == f2 && f2 != f3 && f3 == f4) ||
|
(f1 == f2 && f2 != f3 && f3 == f4) ||
|
||||||
(f1 == f2 && f2 == f3 && f3 != f4));
|
(f1 == f2 && f2 == f3 && f3 != f4));
|
||||||
|
|
||||||
|
@ -3,6 +3,10 @@
|
|||||||
# Copies the needed files from a directory containing the original
|
# Copies the needed files from a directory containing the original
|
||||||
# double-conversion source that we need.
|
# double-conversion source that we need.
|
||||||
|
|
||||||
|
# This was last updated with git rev e5b34421b763f7bf7e4f9081403db417d5a55a36.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
cp $1/LICENSE ./
|
cp $1/LICENSE ./
|
||||||
cp $1/README ./
|
cp $1/README ./
|
||||||
|
|
||||||
@ -14,4 +18,3 @@ cp $1/src/*.cc ./
|
|||||||
|
|
||||||
patch -p3 < add-mfbt-api-markers.patch
|
patch -p3 < add-mfbt-api-markers.patch
|
||||||
patch -p3 < use-StandardInteger.patch
|
patch -p3 < use-StandardInteger.patch
|
||||||
patch -p3 < more-architectures.patch
|
|
||||||
|
Loading…
Reference in New Issue
Block a user