зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1402344 - Update mfbt-double-conversion to the latest upstream rev. r=froydnj
--HG-- rename : mfbt/double-conversion/source/LICENSE => mfbt/double-conversion/double-conversion/LICENSE rename : mfbt/double-conversion/source/README.md => mfbt/double-conversion/double-conversion/README.md rename : mfbt/double-conversion/source/bignum-dtoa.cc => mfbt/double-conversion/double-conversion/bignum-dtoa.cc rename : mfbt/double-conversion/source/bignum-dtoa.h => mfbt/double-conversion/double-conversion/bignum-dtoa.h rename : mfbt/double-conversion/source/bignum.cc => mfbt/double-conversion/double-conversion/bignum.cc rename : mfbt/double-conversion/source/bignum.h => mfbt/double-conversion/double-conversion/bignum.h rename : mfbt/double-conversion/source/cached-powers.cc => mfbt/double-conversion/double-conversion/cached-powers.cc rename : mfbt/double-conversion/source/cached-powers.h => mfbt/double-conversion/double-conversion/cached-powers.h rename : mfbt/double-conversion/source/diy-fp.cc => mfbt/double-conversion/double-conversion/diy-fp.cc rename : mfbt/double-conversion/source/diy-fp.h => mfbt/double-conversion/double-conversion/diy-fp.h rename : mfbt/double-conversion/source/double-conversion.cc => mfbt/double-conversion/double-conversion/double-conversion.cc rename : mfbt/double-conversion/source/double-conversion.h => mfbt/double-conversion/double-conversion/double-conversion.h rename : mfbt/double-conversion/source/fast-dtoa.cc => mfbt/double-conversion/double-conversion/fast-dtoa.cc rename : mfbt/double-conversion/source/fast-dtoa.h => mfbt/double-conversion/double-conversion/fast-dtoa.h rename : mfbt/double-conversion/source/fixed-dtoa.cc => mfbt/double-conversion/double-conversion/fixed-dtoa.cc rename : mfbt/double-conversion/source/fixed-dtoa.h => mfbt/double-conversion/double-conversion/fixed-dtoa.h rename : mfbt/double-conversion/source/ieee.h => mfbt/double-conversion/double-conversion/ieee.h rename : mfbt/double-conversion/source/strtod.cc => mfbt/double-conversion/double-conversion/strtod.cc rename : mfbt/double-conversion/source/strtod.h => mfbt/double-conversion/double-conversion/strtod.h rename : mfbt/double-conversion/source/utils.h => mfbt/double-conversion/double-conversion/utils.h extra : rebase_source : 2d03850dcd1db749f0debecffec2e870acd1b958
This commit is contained in:
Родитель
d90b841ba7
Коммит
be56429c85
|
@ -11,7 +11,7 @@
|
||||||
#include "mozilla/RefPtr.h"
|
#include "mozilla/RefPtr.h"
|
||||||
#include "mozilla/RefCounted.h"
|
#include "mozilla/RefCounted.h"
|
||||||
#include "mozilla/UniquePtr.h"
|
#include "mozilla/UniquePtr.h"
|
||||||
#include "mozilla/utils.h"
|
#include "double-conversion/utils.h" // for DISALLOW_COPY_AND_ASSIGN
|
||||||
#include "CodecConfig.h"
|
#include "CodecConfig.h"
|
||||||
#include "VideoTypes.h"
|
#include "VideoTypes.h"
|
||||||
#include "MediaConduitErrors.h"
|
#include "MediaConduitErrors.h"
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
// of Decimal.cpp under the Mozilla source without blink core dependencies. Do
|
// of Decimal.cpp under the Mozilla source without blink core dependencies. Do
|
||||||
// not include it into any file other than Decimal.cpp.
|
// not include it into any file other than Decimal.cpp.
|
||||||
|
|
||||||
#include "../double-conversion/source/double-conversion.h"
|
#include "../double-conversion/double-conversion/double-conversion.h"
|
||||||
#include "mozilla/ArrayUtils.h"
|
#include "mozilla/ArrayUtils.h"
|
||||||
#include "mozilla/Casting.h"
|
#include "mozilla/Casting.h"
|
||||||
#include "mozilla/FloatingPoint.h"
|
#include "mozilla/FloatingPoint.h"
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||||
|
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
||||||
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* A temporary header providing double-conversion functionality until we change
|
||||||
|
* our code to use the double-conversion header directly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef mozilla_double_conversion_h
|
||||||
|
#define mozilla_double_conversion_h
|
||||||
|
|
||||||
|
#include "double-conversion/double-conversion.h"
|
||||||
|
|
||||||
|
#endif /* mozilla_double_conversion_h */
|
|
@ -1,9 +1,9 @@
|
||||||
commit d8d4e668ee1e6e10b728f0671a89b07d7c4d45be
|
commit fe9b384793c4e79bd32133dc9053f27b75a5eeae
|
||||||
Merge: 79fb300 48b5e70
|
Merge: 2a257b7 1d5a688
|
||||||
Author: Florian Loitsch <florian@loitsch.com>
|
Author: Florian Loitsch <floitsch@google.com>
|
||||||
Date: Wed Nov 23 19:14:38 2016 +0100
|
Date: Fri Sep 15 11:32:00 2017 +0200
|
||||||
|
|
||||||
Merge pull request #39 from uburuntu/master
|
Merge pull request #52 from uburuntu/master
|
||||||
|
|
||||||
Some small fixes: compilation, null ptr derefence and const qualifiers
|
Some refactorings: remove unused static, replace deprecated headers, init member in constructor
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,12 @@
|
||||||
1e7bf0c636b8cca54dd83456a0f8fa219343e2a1 Bug 608195 - part 2 - extend ToPrecision to tell use whether exponential notation was used
|
diff --git a/mfbt/double-conversion/double-conversion/double-conversion.cc b/mfbt/double-conversion/double-conversion/double-conversion.cc
|
||||||
diff --git a/mfbt/double-conversion/source/double-conversion.cc b/mfbt/double-conversion/source/double-conversion.cc
|
--- a/mfbt/double-conversion/double-conversion/double-conversion.cc
|
||||||
index febba6c..394b6a0 100644
|
+++ b/mfbt/double-conversion/double-conversion/double-conversion.cc
|
||||||
--- a/mfbt/double-conversion/source/double-conversion.cc
|
@@ -279,17 +279,19 @@ bool DoubleToStringConverter::ToExponent
|
||||||
+++ b/mfbt/double-conversion/source/double-conversion.cc
|
exponent,
|
||||||
@@ -283,7 +283,9 @@ bool DoubleToStringConverter::ToExponential(
|
result_builder);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool DoubleToStringConverter::ToPrecision(double value,
|
bool DoubleToStringConverter::ToPrecision(double value,
|
||||||
int precision,
|
int precision,
|
||||||
|
@ -13,7 +16,17 @@ index febba6c..394b6a0 100644
|
||||||
if (Double(value).IsSpecial()) {
|
if (Double(value).IsSpecial()) {
|
||||||
return HandleSpecialValues(value, result_builder);
|
return HandleSpecialValues(value, result_builder);
|
||||||
}
|
}
|
||||||
@@ -325,6 +327,7 @@ bool DoubleToStringConverter::ToPrecision(double value,
|
|
||||||
|
if (precision < kMinPrecisionDigits || precision > kMaxPrecisionDigits) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -321,16 +323,17 @@ bool DoubleToStringConverter::ToPrecisio
|
||||||
|
max_trailing_padding_zeroes_in_precision_mode_)) {
|
||||||
|
// Fill buffer to contain 'precision' digits.
|
||||||
|
// Usually the buffer is already at the correct length, but 'DoubleToAscii'
|
||||||
|
// is allowed to return less characters.
|
||||||
|
for (int i = decimal_rep_length; i < precision; ++i) {
|
||||||
decimal_rep[i] = '0';
|
decimal_rep[i] = '0';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,11 +34,20 @@ index febba6c..394b6a0 100644
|
||||||
CreateExponentialRepresentation(decimal_rep,
|
CreateExponentialRepresentation(decimal_rep,
|
||||||
precision,
|
precision,
|
||||||
exponent,
|
exponent,
|
||||||
diff --git a/mfbt/double-conversion/source/double-conversion.h b/mfbt/double-conversion/source/double-conversion.h
|
result_builder);
|
||||||
index 0900ba0..957575c 100644
|
} else {
|
||||||
--- a/mfbt/double-conversion/source/double-conversion.h
|
CreateDecimalRepresentation(decimal_rep, decimal_rep_length, decimal_point,
|
||||||
+++ b/mfbt/double-conversion/source/double-conversion.h
|
Max(0, precision - decimal_point),
|
||||||
@@ -270,6 +270,7 @@ class DoubleToStringConverter {
|
result_builder);
|
||||||
|
diff --git a/mfbt/double-conversion/double-conversion/double-conversion.h b/mfbt/double-conversion/double-conversion/double-conversion.h
|
||||||
|
--- a/mfbt/double-conversion/double-conversion/double-conversion.h
|
||||||
|
+++ b/mfbt/double-conversion/double-conversion/double-conversion.h
|
||||||
|
@@ -265,16 +265,17 @@ class DoubleToStringConverter {
|
||||||
|
// been provided to the constructor,
|
||||||
|
// - precision < kMinPericisionDigits
|
||||||
|
// - precision > kMaxPrecisionDigits
|
||||||
|
// The last condition implies that the result will never contain more than
|
||||||
|
// kMaxPrecisionDigits + 7 characters (the sign, the decimal point, the
|
||||||
// exponent character, the exponent's sign, and at most 3 exponent digits).
|
// exponent character, the exponent's sign, and at most 3 exponent digits).
|
||||||
MFBT_API bool ToPrecision(double value,
|
MFBT_API bool ToPrecision(double value,
|
||||||
int precision,
|
int precision,
|
||||||
|
@ -33,3 +55,8 @@ index 0900ba0..957575c 100644
|
||||||
StringBuilder* result_builder) const;
|
StringBuilder* result_builder) const;
|
||||||
|
|
||||||
enum DtoaMode {
|
enum DtoaMode {
|
||||||
|
// Produce the shortest correct representation.
|
||||||
|
// For example the output of 0.299999999999999988897 is (the less accurate
|
||||||
|
// but correct) 0.3.
|
||||||
|
SHORTEST,
|
||||||
|
// Same as SHORTEST, but for single-precision floats.
|
||||||
|
|
|
@ -1,16 +1,30 @@
|
||||||
diff --git a/mfbt/double-conversion/source/double-conversion.h b/mfbt/double-conversion/source/double-conversion.h
|
diff --git a/mfbt/double-conversion/double-conversion/double-conversion.h b/mfbt/double-conversion/double-conversion/double-conversion.h
|
||||||
index f98edae..c62b16b 100644
|
--- a/mfbt/double-conversion/double-conversion/double-conversion.h
|
||||||
--- a/mfbt/double-conversion/source/double-conversion.h
|
+++ b/mfbt/double-conversion/double-conversion/double-conversion.h
|
||||||
+++ b/mfbt/double-conversion/source/double-conversion.h
|
@@ -23,16 +23,17 @@
|
||||||
@@ -28,6 +28,7 @@
|
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#ifndef DOUBLE_CONVERSION_DOUBLE_CONVERSION_H_
|
#ifndef DOUBLE_CONVERSION_DOUBLE_CONVERSION_H_
|
||||||
#define DOUBLE_CONVERSION_DOUBLE_CONVERSION_H_
|
#define DOUBLE_CONVERSION_DOUBLE_CONVERSION_H_
|
||||||
|
|
||||||
+#include "mozilla/Types.h"
|
+#include "mozilla/Types.h"
|
||||||
#include "utils.h"
|
#include <double-conversion/utils.h>
|
||||||
|
|
||||||
namespace double_conversion {
|
namespace double_conversion {
|
||||||
@@ -129,7 +130,7 @@ class DoubleToStringConverter {
|
|
||||||
|
class DoubleToStringConverter {
|
||||||
|
public:
|
||||||
|
// When calling ToFixed with a double > 10^kMaxFixedDigitsBeforePoint
|
||||||
|
// or a requested_digits parameter > kMaxFixedDigitsAfterPoint then the
|
||||||
|
@@ -124,17 +125,17 @@ class DoubleToStringConverter {
|
||||||
|
max_trailing_padding_zeroes_in_precision_mode) {
|
||||||
|
// When 'trailing zero after the point' is set, then 'trailing point'
|
||||||
|
// must be set too.
|
||||||
|
ASSERT(((flags & EMIT_TRAILING_DECIMAL_POINT) != 0) ||
|
||||||
|
!((flags & EMIT_TRAILING_ZERO_AFTER_POINT) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns a converter following the EcmaScript specification.
|
// Returns a converter following the EcmaScript specification.
|
||||||
|
@ -19,7 +33,17 @@ index f98edae..c62b16b 100644
|
||||||
|
|
||||||
// Computes the shortest string of digits that correctly represent the input
|
// Computes the shortest string of digits that correctly represent the input
|
||||||
// number. Depending on decimal_in_shortest_low and decimal_in_shortest_high
|
// number. Depending on decimal_in_shortest_low and decimal_in_shortest_high
|
||||||
@@ -197,7 +198,7 @@ class DoubleToStringConverter {
|
// (see constructor) it then either returns a decimal representation, or an
|
||||||
|
// exponential representation.
|
||||||
|
// Example with decimal_in_shortest_low = -6,
|
||||||
|
// decimal_in_shortest_high = 21,
|
||||||
|
// EMIT_POSITIVE_EXPONENT_SIGN activated, and
|
||||||
|
@@ -192,17 +193,17 @@ class DoubleToStringConverter {
|
||||||
|
// except for the following cases:
|
||||||
|
// - the input value is special and no infinity_symbol or nan_symbol has
|
||||||
|
// been provided to the constructor,
|
||||||
|
// - 'value' > 10^kMaxFixedDigitsBeforePoint, or
|
||||||
|
// - 'requested_digits' > kMaxFixedDigitsAfterPoint.
|
||||||
// The last two conditions imply that the result will never contain more than
|
// The last two conditions imply that the result will never contain more than
|
||||||
// 1 + kMaxFixedDigitsBeforePoint + 1 + kMaxFixedDigitsAfterPoint characters
|
// 1 + kMaxFixedDigitsBeforePoint + 1 + kMaxFixedDigitsAfterPoint characters
|
||||||
// (one additional character for the sign, and one for the decimal point).
|
// (one additional character for the sign, and one for the decimal point).
|
||||||
|
@ -28,7 +52,17 @@ index f98edae..c62b16b 100644
|
||||||
int requested_digits,
|
int requested_digits,
|
||||||
StringBuilder* result_builder) const;
|
StringBuilder* result_builder) const;
|
||||||
|
|
||||||
@@ -229,7 +230,7 @@ class DoubleToStringConverter {
|
// Computes a representation in exponential format with requested_digits
|
||||||
|
// after the decimal point. The last emitted digit is rounded.
|
||||||
|
// If requested_digits equals -1, then the shortest exponential representation
|
||||||
|
// is computed.
|
||||||
|
//
|
||||||
|
@@ -224,17 +225,17 @@ class DoubleToStringConverter {
|
||||||
|
// except for the following cases:
|
||||||
|
// - the input value is special and no infinity_symbol or nan_symbol has
|
||||||
|
// been provided to the constructor,
|
||||||
|
// - 'requested_digits' > kMaxExponentialDigits.
|
||||||
|
// The last condition implies that the result will never contain more than
|
||||||
// kMaxExponentialDigits + 8 characters (the sign, the digit before the
|
// kMaxExponentialDigits + 8 characters (the sign, the digit before the
|
||||||
// decimal point, the decimal point, the exponent character, the
|
// decimal point, the decimal point, the exponent character, the
|
||||||
// exponent's sign, and at most 3 exponent digits).
|
// exponent's sign, and at most 3 exponent digits).
|
||||||
|
@ -37,7 +71,17 @@ index f98edae..c62b16b 100644
|
||||||
int requested_digits,
|
int requested_digits,
|
||||||
StringBuilder* result_builder) const;
|
StringBuilder* result_builder) const;
|
||||||
|
|
||||||
@@ -267,7 +268,7 @@ class DoubleToStringConverter {
|
// Computes 'precision' leading digits of the given 'value' and returns them
|
||||||
|
// either in exponential or decimal format, depending on
|
||||||
|
// max_{leading|trailing}_padding_zeroes_in_precision_mode (given to the
|
||||||
|
// constructor).
|
||||||
|
// The last computed digit is rounded.
|
||||||
|
@@ -262,17 +263,17 @@ class DoubleToStringConverter {
|
||||||
|
// except for the following cases:
|
||||||
|
// - the input value is special and no infinity_symbol or nan_symbol has
|
||||||
|
// been provided to the constructor,
|
||||||
|
// - precision < kMinPericisionDigits
|
||||||
|
// - precision > kMaxPrecisionDigits
|
||||||
// The last condition implies that the result will never contain more than
|
// The last condition implies that the result will never contain more than
|
||||||
// kMaxPrecisionDigits + 7 characters (the sign, the decimal point, the
|
// kMaxPrecisionDigits + 7 characters (the sign, the decimal point, the
|
||||||
// exponent character, the exponent's sign, and at most 3 exponent digits).
|
// exponent character, the exponent's sign, and at most 3 exponent digits).
|
||||||
|
@ -46,7 +90,17 @@ index f98edae..c62b16b 100644
|
||||||
int precision,
|
int precision,
|
||||||
StringBuilder* result_builder) const;
|
StringBuilder* result_builder) const;
|
||||||
|
|
||||||
@@ -292,7 +293,7 @@ class DoubleToStringConverter {
|
enum DtoaMode {
|
||||||
|
// Produce the shortest correct representation.
|
||||||
|
// For example the output of 0.299999999999999988897 is (the less accurate
|
||||||
|
// but correct) 0.3.
|
||||||
|
SHORTEST,
|
||||||
|
@@ -287,17 +288,17 @@ class DoubleToStringConverter {
|
||||||
|
};
|
||||||
|
|
||||||
|
// The maximal number of digits that are needed to emit a double in base 10.
|
||||||
|
// A higher precision can be achieved by using more digits, but the shortest
|
||||||
|
// accurate representation of any double will never use more digits than
|
||||||
// kBase10MaximalLength.
|
// kBase10MaximalLength.
|
||||||
// Note that DoubleToAscii null-terminates its input. So the given buffer
|
// Note that DoubleToAscii null-terminates its input. So the given buffer
|
||||||
// should be at least kBase10MaximalLength + 1 characters long.
|
// should be at least kBase10MaximalLength + 1 characters long.
|
||||||
|
@ -55,7 +109,17 @@ index f98edae..c62b16b 100644
|
||||||
|
|
||||||
// Converts the given double 'v' to ascii. 'v' must not be NaN, +Infinity, or
|
// Converts the given double 'v' to ascii. 'v' must not be NaN, +Infinity, or
|
||||||
// -Infinity. In SHORTEST_SINGLE-mode this restriction also applies to 'v'
|
// -Infinity. In SHORTEST_SINGLE-mode this restriction also applies to 'v'
|
||||||
@@ -332,7 +333,7 @@ class DoubleToStringConverter {
|
// after it has been casted to a single-precision float. That is, in this
|
||||||
|
// mode static_cast<float>(v) must not be NaN, +Infinity or -Infinity.
|
||||||
|
//
|
||||||
|
// The result should be interpreted as buffer * 10^(point-length).
|
||||||
|
//
|
||||||
|
@@ -327,44 +328,44 @@ class DoubleToStringConverter {
|
||||||
|
// DoubleToAscii expects the given buffer to be big enough to hold all
|
||||||
|
// digits and a terminating null-character. In SHORTEST-mode it expects a
|
||||||
|
// buffer of at least kBase10MaximalLength + 1. In all other modes the
|
||||||
|
// requested_digits parameter and the padding-zeroes limit the size of the
|
||||||
|
// output. Don't forget the decimal point, the exponent character and the
|
||||||
// terminating null-character when computing the maximal output size.
|
// terminating null-character when computing the maximal output size.
|
||||||
// The given length is only used in debug mode to ensure the buffer is big
|
// The given length is only used in debug mode to ensure the buffer is big
|
||||||
// enough.
|
// enough.
|
||||||
|
@ -64,7 +128,10 @@ index f98edae..c62b16b 100644
|
||||||
DtoaMode mode,
|
DtoaMode mode,
|
||||||
int requested_digits,
|
int requested_digits,
|
||||||
char* buffer,
|
char* buffer,
|
||||||
@@ -343,7 +344,7 @@ class DoubleToStringConverter {
|
int buffer_length,
|
||||||
|
bool* sign,
|
||||||
|
int* length,
|
||||||
|
int* point);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Implementation for ToShortest and ToShortestSingle.
|
// Implementation for ToShortest and ToShortestSingle.
|
||||||
|
@ -73,7 +140,7 @@ index f98edae..c62b16b 100644
|
||||||
StringBuilder* result_builder,
|
StringBuilder* result_builder,
|
||||||
DtoaMode mode) const;
|
DtoaMode mode) const;
|
||||||
|
|
||||||
@@ -351,15 +352,15 @@ class DoubleToStringConverter {
|
// If the value is a special value (NaN or Infinity) constructs the
|
||||||
// corresponding string using the configured infinity/nan-symbol.
|
// corresponding string using the configured infinity/nan-symbol.
|
||||||
// If either of them is NULL or the value is not special then the
|
// If either of them is NULL or the value is not special then the
|
||||||
// function returns false.
|
// function returns false.
|
||||||
|
@ -92,3 +159,8 @@ index f98edae..c62b16b 100644
|
||||||
int length,
|
int length,
|
||||||
int decimal_point,
|
int decimal_point,
|
||||||
int digits_after_point,
|
int digits_after_point,
|
||||||
|
StringBuilder* result_builder) const;
|
||||||
|
|
||||||
|
const int flags_;
|
||||||
|
const char* const infinity_symbol_;
|
||||||
|
const char* const nan_symbol_;
|
||||||
|
|
|
@ -25,12 +25,12 @@
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#include <math.h>
|
#include <cmath>
|
||||||
|
|
||||||
#include "bignum-dtoa.h"
|
#include <double-conversion/bignum-dtoa.h>
|
||||||
|
|
||||||
#include "bignum.h"
|
#include <double-conversion/bignum.h>
|
||||||
#include "ieee.h"
|
#include <double-conversion/ieee.h>
|
||||||
|
|
||||||
namespace double_conversion {
|
namespace double_conversion {
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
#ifndef DOUBLE_CONVERSION_BIGNUM_DTOA_H_
|
#ifndef DOUBLE_CONVERSION_BIGNUM_DTOA_H_
|
||||||
#define DOUBLE_CONVERSION_BIGNUM_DTOA_H_
|
#define DOUBLE_CONVERSION_BIGNUM_DTOA_H_
|
||||||
|
|
||||||
#include "utils.h"
|
#include <double-conversion/utils.h>
|
||||||
|
|
||||||
namespace double_conversion {
|
namespace double_conversion {
|
||||||
|
|
|
@ -25,13 +25,13 @@
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#include "bignum.h"
|
#include <double-conversion/bignum.h>
|
||||||
#include "utils.h"
|
#include <double-conversion/utils.h>
|
||||||
|
|
||||||
namespace double_conversion {
|
namespace double_conversion {
|
||||||
|
|
||||||
Bignum::Bignum()
|
Bignum::Bignum()
|
||||||
: bigits_(bigits_buffer_, kBigitCapacity), used_digits_(0), exponent_(0) {
|
: bigits_buffer_(), bigits_(bigits_buffer_, kBigitCapacity), used_digits_(0), exponent_(0) {
|
||||||
for (int i = 0; i < kBigitCapacity; ++i) {
|
for (int i = 0; i < kBigitCapacity; ++i) {
|
||||||
bigits_[i] = 0;
|
bigits_[i] = 0;
|
||||||
}
|
}
|
||||||
|
@ -445,26 +445,27 @@ void Bignum::AssignPowerUInt16(uint16_t base, int power_exponent) {
|
||||||
mask >>= 2;
|
mask >>= 2;
|
||||||
uint64_t this_value = base;
|
uint64_t this_value = base;
|
||||||
|
|
||||||
bool delayed_multipliciation = false;
|
bool delayed_multiplication = false;
|
||||||
const uint64_t max_32bits = 0xFFFFFFFF;
|
const uint64_t max_32bits = 0xFFFFFFFF;
|
||||||
while (mask != 0 && this_value <= max_32bits) {
|
while (mask != 0 && this_value <= max_32bits) {
|
||||||
this_value = this_value * this_value;
|
this_value = this_value * this_value;
|
||||||
// Verify that there is enough space in this_value to perform the
|
// Verify that there is enough space in this_value to perform the
|
||||||
// multiplication. The first bit_size bits must be 0.
|
// multiplication. The first bit_size bits must be 0.
|
||||||
if ((power_exponent & mask) != 0) {
|
if ((power_exponent & mask) != 0) {
|
||||||
|
ASSERT(bit_size > 0);
|
||||||
uint64_t base_bits_mask =
|
uint64_t base_bits_mask =
|
||||||
~((static_cast<uint64_t>(1) << (64 - bit_size)) - 1);
|
~((static_cast<uint64_t>(1) << (64 - bit_size)) - 1);
|
||||||
bool high_bits_zero = (this_value & base_bits_mask) == 0;
|
bool high_bits_zero = (this_value & base_bits_mask) == 0;
|
||||||
if (high_bits_zero) {
|
if (high_bits_zero) {
|
||||||
this_value *= base;
|
this_value *= base;
|
||||||
} else {
|
} else {
|
||||||
delayed_multipliciation = true;
|
delayed_multiplication = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mask >>= 1;
|
mask >>= 1;
|
||||||
}
|
}
|
||||||
AssignUInt64(this_value);
|
AssignUInt64(this_value);
|
||||||
if (delayed_multipliciation) {
|
if (delayed_multiplication) {
|
||||||
MultiplyByUInt32(base);
|
MultiplyByUInt32(base);
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
#ifndef DOUBLE_CONVERSION_BIGNUM_H_
|
#ifndef DOUBLE_CONVERSION_BIGNUM_H_
|
||||||
#define DOUBLE_CONVERSION_BIGNUM_H_
|
#define DOUBLE_CONVERSION_BIGNUM_H_
|
||||||
|
|
||||||
#include "utils.h"
|
#include <double-conversion/utils.h>
|
||||||
|
|
||||||
namespace double_conversion {
|
namespace double_conversion {
|
||||||
|
|
|
@ -25,13 +25,13 @@
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#include <stdarg.h>
|
#include <climits>
|
||||||
#include <limits.h>
|
#include <cmath>
|
||||||
#include <math.h>
|
#include <cstdarg>
|
||||||
|
|
||||||
#include "utils.h"
|
#include <double-conversion/utils.h>
|
||||||
|
|
||||||
#include "cached-powers.h"
|
#include <double-conversion/cached-powers.h>
|
||||||
|
|
||||||
namespace double_conversion {
|
namespace double_conversion {
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
#ifndef DOUBLE_CONVERSION_CACHED_POWERS_H_
|
#ifndef DOUBLE_CONVERSION_CACHED_POWERS_H_
|
||||||
#define DOUBLE_CONVERSION_CACHED_POWERS_H_
|
#define DOUBLE_CONVERSION_CACHED_POWERS_H_
|
||||||
|
|
||||||
#include "diy-fp.h"
|
#include <double-conversion/diy-fp.h>
|
||||||
|
|
||||||
namespace double_conversion {
|
namespace double_conversion {
|
||||||
|
|
|
@ -26,8 +26,8 @@
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
|
||||||
#include "diy-fp.h"
|
#include <double-conversion/diy-fp.h>
|
||||||
#include "utils.h"
|
#include <double-conversion/utils.h>
|
||||||
|
|
||||||
namespace double_conversion {
|
namespace double_conversion {
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
#ifndef DOUBLE_CONVERSION_DIY_FP_H_
|
#ifndef DOUBLE_CONVERSION_DIY_FP_H_
|
||||||
#define DOUBLE_CONVERSION_DIY_FP_H_
|
#define DOUBLE_CONVERSION_DIY_FP_H_
|
||||||
|
|
||||||
#include "utils.h"
|
#include <double-conversion/utils.h>
|
||||||
|
|
||||||
namespace double_conversion {
|
namespace double_conversion {
|
||||||
|
|
|
@ -25,17 +25,18 @@
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#include <limits.h>
|
#include <climits>
|
||||||
#include <math.h>
|
#include <locale>
|
||||||
|
#include <cmath>
|
||||||
|
|
||||||
#include "double-conversion.h"
|
#include <double-conversion/double-conversion.h>
|
||||||
|
|
||||||
#include "bignum-dtoa.h"
|
#include <double-conversion/bignum-dtoa.h>
|
||||||
#include "fast-dtoa.h"
|
#include <double-conversion/fast-dtoa.h>
|
||||||
#include "fixed-dtoa.h"
|
#include <double-conversion/fixed-dtoa.h>
|
||||||
#include "ieee.h"
|
#include <double-conversion/ieee.h>
|
||||||
#include "strtod.h"
|
#include <double-conversion/strtod.h>
|
||||||
#include "utils.h"
|
#include <double-conversion/utils.h>
|
||||||
|
|
||||||
namespace double_conversion {
|
namespace double_conversion {
|
||||||
|
|
||||||
|
@ -417,21 +418,55 @@ void DoubleToStringConverter::DoubleToAscii(double v,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Consumes the given substring from the iterator.
|
namespace {
|
||||||
// Returns false, if the substring does not match.
|
|
||||||
template <class Iterator>
|
inline char ToLower(char ch) {
|
||||||
static bool ConsumeSubString(Iterator* current,
|
static const std::ctype<char>& cType =
|
||||||
Iterator end,
|
std::use_facet<std::ctype<char> >(std::locale::classic());
|
||||||
const char* substring) {
|
return cType.tolower(ch);
|
||||||
ASSERT(**current == *substring);
|
}
|
||||||
|
|
||||||
|
inline char Pass(char ch) {
|
||||||
|
return ch;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class Iterator, class Converter>
|
||||||
|
static inline bool ConsumeSubStringImpl(Iterator* current,
|
||||||
|
Iterator end,
|
||||||
|
const char* substring,
|
||||||
|
Converter converter) {
|
||||||
|
ASSERT(converter(**current) == *substring);
|
||||||
for (substring++; *substring != '\0'; substring++) {
|
for (substring++; *substring != '\0'; substring++) {
|
||||||
++*current;
|
++*current;
|
||||||
if (*current == end || **current != *substring) return false;
|
if (*current == end || converter(**current) != *substring) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
++*current;
|
++*current;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Consumes the given substring from the iterator.
|
||||||
|
// Returns false, if the substring does not match.
|
||||||
|
template <class Iterator>
|
||||||
|
static bool ConsumeSubString(Iterator* current,
|
||||||
|
Iterator end,
|
||||||
|
const char* substring,
|
||||||
|
bool allow_case_insensibility) {
|
||||||
|
if (allow_case_insensibility) {
|
||||||
|
return ConsumeSubStringImpl(current, end, substring, ToLower);
|
||||||
|
} else {
|
||||||
|
return ConsumeSubStringImpl(current, end, substring, Pass);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Consumes first character of the str is equal to ch
|
||||||
|
inline bool ConsumeFirstCharacter(char ch,
|
||||||
|
const char* str,
|
||||||
|
bool case_insensibility) {
|
||||||
|
return case_insensibility ? ToLower(ch) == str[0] : ch == str[0];
|
||||||
|
}
|
||||||
|
} // namespace
|
||||||
|
|
||||||
// Maximum number of significant digits in decimal representation.
|
// Maximum number of significant digits in decimal representation.
|
||||||
// The longest possible double in decimal representation is
|
// The longest possible double in decimal representation is
|
||||||
|
@ -632,7 +667,6 @@ static double RadixStringToIeee(Iterator* current,
|
||||||
return Double(DiyFp(number, exponent)).value();
|
return Double(DiyFp(number, exponent)).value();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
template <class Iterator>
|
template <class Iterator>
|
||||||
double StringToDoubleConverter::StringToIeee(
|
double StringToDoubleConverter::StringToIeee(
|
||||||
Iterator input,
|
Iterator input,
|
||||||
|
@ -648,6 +682,8 @@ double StringToDoubleConverter::StringToIeee(
|
||||||
const bool allow_leading_spaces = (flags_ & ALLOW_LEADING_SPACES) != 0;
|
const bool allow_leading_spaces = (flags_ & ALLOW_LEADING_SPACES) != 0;
|
||||||
const bool allow_trailing_spaces = (flags_ & ALLOW_TRAILING_SPACES) != 0;
|
const bool allow_trailing_spaces = (flags_ & ALLOW_TRAILING_SPACES) != 0;
|
||||||
const bool allow_spaces_after_sign = (flags_ & ALLOW_SPACES_AFTER_SIGN) != 0;
|
const bool allow_spaces_after_sign = (flags_ & ALLOW_SPACES_AFTER_SIGN) != 0;
|
||||||
|
const bool allow_case_insensibility = (flags_ & ALLOW_CASE_INSENSIBILITY) != 0;
|
||||||
|
|
||||||
|
|
||||||
// To make sure that iterator dereferencing is valid the following
|
// To make sure that iterator dereferencing is valid the following
|
||||||
// convention is used:
|
// convention is used:
|
||||||
|
@ -697,8 +733,8 @@ double StringToDoubleConverter::StringToIeee(
|
||||||
}
|
}
|
||||||
|
|
||||||
if (infinity_symbol_ != NULL) {
|
if (infinity_symbol_ != NULL) {
|
||||||
if (*current == infinity_symbol_[0]) {
|
if (ConsumeFirstCharacter(*current, infinity_symbol_, allow_case_insensibility)) {
|
||||||
if (!ConsumeSubString(¤t, end, infinity_symbol_)) {
|
if (!ConsumeSubString(¤t, end, infinity_symbol_, allow_case_insensibility)) {
|
||||||
return junk_string_value_;
|
return junk_string_value_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -716,8 +752,8 @@ double StringToDoubleConverter::StringToIeee(
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nan_symbol_ != NULL) {
|
if (nan_symbol_ != NULL) {
|
||||||
if (*current == nan_symbol_[0]) {
|
if (ConsumeFirstCharacter(*current, nan_symbol_, allow_case_insensibility)) {
|
||||||
if (!ConsumeSubString(¤t, end, nan_symbol_)) {
|
if (!ConsumeSubString(¤t, end, nan_symbol_, allow_case_insensibility)) {
|
||||||
return junk_string_value_;
|
return junk_string_value_;
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
#define DOUBLE_CONVERSION_DOUBLE_CONVERSION_H_
|
#define DOUBLE_CONVERSION_DOUBLE_CONVERSION_H_
|
||||||
|
|
||||||
#include "mozilla/Types.h"
|
#include "mozilla/Types.h"
|
||||||
#include "utils.h"
|
#include <double-conversion/utils.h>
|
||||||
|
|
||||||
namespace double_conversion {
|
namespace double_conversion {
|
||||||
|
|
||||||
|
@ -391,7 +391,8 @@ class StringToDoubleConverter {
|
||||||
ALLOW_TRAILING_JUNK = 4,
|
ALLOW_TRAILING_JUNK = 4,
|
||||||
ALLOW_LEADING_SPACES = 8,
|
ALLOW_LEADING_SPACES = 8,
|
||||||
ALLOW_TRAILING_SPACES = 16,
|
ALLOW_TRAILING_SPACES = 16,
|
||||||
ALLOW_SPACES_AFTER_SIGN = 32
|
ALLOW_SPACES_AFTER_SIGN = 32,
|
||||||
|
ALLOW_CASE_INSENSIBILITY = 64,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Flags should be a bit-or combination of the possible Flags-enum.
|
// Flags should be a bit-or combination of the possible Flags-enum.
|
||||||
|
@ -423,6 +424,8 @@ class StringToDoubleConverter {
|
||||||
// - ALLOW_SPACES_AFTER_SIGN: ignore whitespace after the sign.
|
// - ALLOW_SPACES_AFTER_SIGN: ignore whitespace after the sign.
|
||||||
// Ex: StringToDouble("- 123.2") -> -123.2.
|
// Ex: StringToDouble("- 123.2") -> -123.2.
|
||||||
// StringToDouble("+ 123.2") -> 123.2
|
// StringToDouble("+ 123.2") -> 123.2
|
||||||
|
// - ALLOW_CASE_INSENSIBILITY: ignore case of characters for special values:
|
||||||
|
// infinity and nan.
|
||||||
//
|
//
|
||||||
// empty_string_value is returned when an empty string is given as input.
|
// empty_string_value is returned when an empty string is given as input.
|
||||||
// If ALLOW_LEADING_SPACES or ALLOW_TRAILING_SPACES are set, then a string
|
// If ALLOW_LEADING_SPACES or ALLOW_TRAILING_SPACES are set, then a string
|
|
@ -25,11 +25,11 @@
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#include "fast-dtoa.h"
|
#include <double-conversion/fast-dtoa.h>
|
||||||
|
|
||||||
#include "cached-powers.h"
|
#include <double-conversion/cached-powers.h>
|
||||||
#include "diy-fp.h"
|
#include <double-conversion/diy-fp.h>
|
||||||
#include "ieee.h"
|
#include <double-conversion/ieee.h>
|
||||||
|
|
||||||
namespace double_conversion {
|
namespace double_conversion {
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
#ifndef DOUBLE_CONVERSION_FAST_DTOA_H_
|
#ifndef DOUBLE_CONVERSION_FAST_DTOA_H_
|
||||||
#define DOUBLE_CONVERSION_FAST_DTOA_H_
|
#define DOUBLE_CONVERSION_FAST_DTOA_H_
|
||||||
|
|
||||||
#include "utils.h"
|
#include <double-conversion/utils.h>
|
||||||
|
|
||||||
namespace double_conversion {
|
namespace double_conversion {
|
||||||
|
|
|
@ -25,10 +25,10 @@
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#include <math.h>
|
#include <cmath>
|
||||||
|
|
||||||
#include "fixed-dtoa.h"
|
#include <double-conversion/fixed-dtoa.h>
|
||||||
#include "ieee.h"
|
#include <double-conversion/ieee.h>
|
||||||
|
|
||||||
namespace double_conversion {
|
namespace double_conversion {
|
||||||
|
|
||||||
|
@ -259,7 +259,8 @@ static void FillFractionals(uint64_t fractionals, int exponent,
|
||||||
fractionals -= static_cast<uint64_t>(digit) << point;
|
fractionals -= static_cast<uint64_t>(digit) << point;
|
||||||
}
|
}
|
||||||
// If the first bit after the point is set we have to round up.
|
// If the first bit after the point is set we have to round up.
|
||||||
if (((fractionals >> (point - 1)) & 1) == 1) {
|
ASSERT(fractionals == 0 || point - 1 >= 0);
|
||||||
|
if ((fractionals != 0) && ((fractionals >> (point - 1)) & 1) == 1) {
|
||||||
RoundUp(buffer, length, decimal_point);
|
RoundUp(buffer, length, decimal_point);
|
||||||
}
|
}
|
||||||
} else { // We need 128 bits.
|
} else { // We need 128 bits.
|
|
@ -28,7 +28,7 @@
|
||||||
#ifndef DOUBLE_CONVERSION_FIXED_DTOA_H_
|
#ifndef DOUBLE_CONVERSION_FIXED_DTOA_H_
|
||||||
#define DOUBLE_CONVERSION_FIXED_DTOA_H_
|
#define DOUBLE_CONVERSION_FIXED_DTOA_H_
|
||||||
|
|
||||||
#include "utils.h"
|
#include <double-conversion/utils.h>
|
||||||
|
|
||||||
namespace double_conversion {
|
namespace double_conversion {
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
#ifndef DOUBLE_CONVERSION_DOUBLE_H_
|
#ifndef DOUBLE_CONVERSION_DOUBLE_H_
|
||||||
#define DOUBLE_CONVERSION_DOUBLE_H_
|
#define DOUBLE_CONVERSION_DOUBLE_H_
|
||||||
|
|
||||||
#include "diy-fp.h"
|
#include <double-conversion/diy-fp.h>
|
||||||
|
|
||||||
namespace double_conversion {
|
namespace double_conversion {
|
||||||
|
|
|
@ -25,13 +25,13 @@
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#include <stdarg.h>
|
#include <climits>
|
||||||
#include <limits.h>
|
#include <cstdarg>
|
||||||
|
|
||||||
#include "strtod.h"
|
#include <double-conversion/bignum.h>
|
||||||
#include "bignum.h"
|
#include <double-conversion/cached-powers.h>
|
||||||
#include "cached-powers.h"
|
#include <double-conversion/ieee.h>
|
||||||
#include "ieee.h"
|
#include <double-conversion/strtod.h>
|
||||||
|
|
||||||
namespace double_conversion {
|
namespace double_conversion {
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
#ifndef DOUBLE_CONVERSION_STRTOD_H_
|
#ifndef DOUBLE_CONVERSION_STRTOD_H_
|
||||||
#define DOUBLE_CONVERSION_STRTOD_H_
|
#define DOUBLE_CONVERSION_STRTOD_H_
|
||||||
|
|
||||||
#include "utils.h"
|
#include <double-conversion/utils.h>
|
||||||
|
|
||||||
namespace double_conversion {
|
namespace double_conversion {
|
||||||
|
|
|
@ -28,8 +28,8 @@
|
||||||
#ifndef DOUBLE_CONVERSION_UTILS_H_
|
#ifndef DOUBLE_CONVERSION_UTILS_H_
|
||||||
#define DOUBLE_CONVERSION_UTILS_H_
|
#define DOUBLE_CONVERSION_UTILS_H_
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <cstdlib>
|
||||||
#include <string.h>
|
#include <cstring>
|
||||||
|
|
||||||
#include "mozilla/Assertions.h"
|
#include "mozilla/Assertions.h"
|
||||||
#ifndef ASSERT
|
#ifndef ASSERT
|
|
@ -16,7 +16,7 @@ LOCAL_PATCHES="$LOCAL_PATCHES use-mozilla-assertions.patch"
|
||||||
LOCAL_PATCHES="$LOCAL_PATCHES ToPrecision-exponential.patch"
|
LOCAL_PATCHES="$LOCAL_PATCHES ToPrecision-exponential.patch"
|
||||||
|
|
||||||
TMPDIR=`mktemp --directory`
|
TMPDIR=`mktemp --directory`
|
||||||
LOCAL_CLONE="$TMPDIR/double-conversion"
|
LOCAL_CLONE="$TMPDIR/new-double-conversion"
|
||||||
|
|
||||||
git clone https://github.com/google/double-conversion.git "$LOCAL_CLONE"
|
git clone https://github.com/google/double-conversion.git "$LOCAL_CLONE"
|
||||||
|
|
||||||
|
@ -26,8 +26,8 @@ if [ "$1" != "" ]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# First clear out everything already present.
|
# First clear out everything already present.
|
||||||
DEST=./source
|
DEST=./double-conversion
|
||||||
mv "$DEST" "$TMPDIR"/
|
mv "$DEST" "$TMPDIR"/old-double-conversion
|
||||||
mkdir "$DEST"
|
mkdir "$DEST"
|
||||||
|
|
||||||
# Copy over critical files.
|
# Copy over critical files.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
diff --git a/mfbt/double-conversion/source/utils.h b/mfbt/double-conversion/source/utils.h
|
diff --git a/mfbt/double-conversion/double-conversion/utils.h b/mfbt/double-conversion/double-conversion/utils.h
|
||||||
--- a/mfbt/double-conversion/source/utils.h
|
--- a/mfbt/double-conversion/double-conversion/utils.h
|
||||||
+++ b/mfbt/double-conversion/source/utils.h
|
+++ b/mfbt/double-conversion/double-conversion/utils.h
|
||||||
@@ -93,34 +93,18 @@ inline void abort_noreturn() { abort();
|
@@ -93,34 +93,18 @@ inline void abort_noreturn() { abort();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
diff --git a/mfbt/double-conversion/source/utils.h b/mfbt/double-conversion/source/utils.h
|
diff --git a/mfbt/double-conversion/double-conversion/utils.h b/mfbt/double-conversion/double-conversion/utils.h
|
||||||
--- a/mfbt/double-conversion/source/utils.h
|
--- a/mfbt/double-conversion/double-conversion/utils.h
|
||||||
+++ b/mfbt/double-conversion/source/utils.h
|
+++ b/mfbt/double-conversion/double-conversion/utils.h
|
||||||
@@ -26,38 +26,38 @@
|
@@ -26,38 +26,38 @@
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#ifndef DOUBLE_CONVERSION_UTILS_H_
|
#ifndef DOUBLE_CONVERSION_UTILS_H_
|
||||||
#define DOUBLE_CONVERSION_UTILS_H_
|
#define DOUBLE_CONVERSION_UTILS_H_
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <cstdlib>
|
||||||
#include <string.h>
|
#include <cstring>
|
||||||
|
|
||||||
-#include <assert.h>
|
-#include <cassert>
|
||||||
+#include "mozilla/Assertions.h"
|
+#include "mozilla/Assertions.h"
|
||||||
#ifndef ASSERT
|
#ifndef ASSERT
|
||||||
#define ASSERT(condition) \
|
#define ASSERT(condition) \
|
||||||
|
|
|
@ -34,8 +34,7 @@ EXPORTS.mozilla = [
|
||||||
'DebugOnly.h',
|
'DebugOnly.h',
|
||||||
'decimal/Decimal.h',
|
'decimal/Decimal.h',
|
||||||
'DefineEnum.h',
|
'DefineEnum.h',
|
||||||
'double-conversion/source/double-conversion.h',
|
'double-conversion.h',
|
||||||
'double-conversion/source/utils.h',
|
|
||||||
'DoublyLinkedList.h',
|
'DoublyLinkedList.h',
|
||||||
'EndianUtils.h',
|
'EndianUtils.h',
|
||||||
'EnumeratedArray.h',
|
'EnumeratedArray.h',
|
||||||
|
@ -106,6 +105,15 @@ EXPORTS.mozilla = [
|
||||||
'XorShift128PlusRNG.h',
|
'XorShift128PlusRNG.h',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
EXPORTS["double-conversion"] = [
|
||||||
|
'double-conversion/double-conversion/double-conversion.h',
|
||||||
|
'double-conversion/double-conversion/utils.h',
|
||||||
|
]
|
||||||
|
|
||||||
|
LOCAL_INCLUDES += [
|
||||||
|
'/mfbt/double-conversion',
|
||||||
|
]
|
||||||
|
|
||||||
if CONFIG['OS_ARCH'] == 'WINNT':
|
if CONFIG['OS_ARCH'] == 'WINNT':
|
||||||
EXPORTS.mozilla += [
|
EXPORTS.mozilla += [
|
||||||
'WindowsVersion.h',
|
'WindowsVersion.h',
|
||||||
|
|
|
@ -7,14 +7,14 @@
|
||||||
mfbt_src_lcppsrcs = [
|
mfbt_src_lcppsrcs = [
|
||||||
'Assertions.cpp',
|
'Assertions.cpp',
|
||||||
'ChaosMode.cpp',
|
'ChaosMode.cpp',
|
||||||
'double-conversion/source/bignum-dtoa.cc',
|
'double-conversion/double-conversion/bignum-dtoa.cc',
|
||||||
'double-conversion/source/bignum.cc',
|
'double-conversion/double-conversion/bignum.cc',
|
||||||
'double-conversion/source/cached-powers.cc',
|
'double-conversion/double-conversion/cached-powers.cc',
|
||||||
'double-conversion/source/diy-fp.cc',
|
'double-conversion/double-conversion/diy-fp.cc',
|
||||||
'double-conversion/source/double-conversion.cc',
|
'double-conversion/double-conversion/double-conversion.cc',
|
||||||
'double-conversion/source/fast-dtoa.cc',
|
'double-conversion/double-conversion/fast-dtoa.cc',
|
||||||
'double-conversion/source/fixed-dtoa.cc',
|
'double-conversion/double-conversion/fixed-dtoa.cc',
|
||||||
'double-conversion/source/strtod.cc',
|
'double-conversion/double-conversion/strtod.cc',
|
||||||
'FloatingPoint.cpp',
|
'FloatingPoint.cpp',
|
||||||
'HashFunctions.cpp',
|
'HashFunctions.cpp',
|
||||||
'JSONWriter.cpp',
|
'JSONWriter.cpp',
|
||||||
|
|
|
@ -6,6 +6,10 @@
|
||||||
|
|
||||||
Library('mfbt_staticruntime')
|
Library('mfbt_staticruntime')
|
||||||
|
|
||||||
|
LOCAL_INCLUDES += [
|
||||||
|
'/mfbt/double-conversion',
|
||||||
|
]
|
||||||
|
|
||||||
include('../objs.mozbuild')
|
include('../objs.mozbuild')
|
||||||
|
|
||||||
UNIFIED_SOURCES += mfbt_src_cppsrcs
|
UNIFIED_SOURCES += mfbt_src_cppsrcs
|
||||||
|
|
Загрузка…
Ссылка в новой задаче