mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-24 21:31:04 +00: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
2314cc4954
commit
6df39e5636
@ -162,7 +162,7 @@ bool DoubleToStringConverter::ToShortestIeeeNumber(
|
||||
double value,
|
||||
StringBuilder* result_builder,
|
||||
DoubleToStringConverter::DtoaMode mode) const {
|
||||
assert(mode == SHORTEST || mode == SHORTEST_SINGLE);
|
||||
ASSERT(mode == SHORTEST || mode == SHORTEST_SINGLE);
|
||||
if (Double(value).IsSpecial()) {
|
||||
return HandleSpecialValues(value, result_builder);
|
||||
}
|
||||
|
@ -529,7 +529,7 @@ static bool Grisu3(double v,
|
||||
if (mode == FAST_DTOA_SHORTEST) {
|
||||
Double(v).NormalizedBoundaries(&boundary_minus, &boundary_plus);
|
||||
} else {
|
||||
assert(mode == FAST_DTOA_SHORTEST_SINGLE);
|
||||
ASSERT(mode == FAST_DTOA_SHORTEST_SINGLE);
|
||||
float single_v = static_cast<float>(v);
|
||||
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();
|
||||
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
|
||||
// return its float-value.
|
||||
if ((f1 == f4)) {
|
||||
if (f1 == f4) {
|
||||
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));
|
||||
|
||||
|
@ -3,6 +3,10 @@
|
||||
# Copies the needed files from a directory containing the original
|
||||
# double-conversion source that we need.
|
||||
|
||||
# This was last updated with git rev e5b34421b763f7bf7e4f9081403db417d5a55a36.
|
||||
|
||||
set -e
|
||||
|
||||
cp $1/LICENSE ./
|
||||
cp $1/README ./
|
||||
|
||||
@ -14,4 +18,3 @@ cp $1/src/*.cc ./
|
||||
|
||||
patch -p3 < add-mfbt-api-markers.patch
|
||||
patch -p3 < use-StandardInteger.patch
|
||||
patch -p3 < more-architectures.patch
|
||||
|
Loading…
Reference in New Issue
Block a user