| Index: third_party/WebKit/Source/wtf/dtoa/bignum.h
|
| diff --git a/third_party/WebKit/Source/wtf/dtoa/bignum.h b/third_party/WebKit/Source/wtf/dtoa/bignum.h
|
| index 0aa0a4c30d7f7157f7d54c61fbd66b5dc1b5d3a0..6cb6f47db045d83846ec6ccb8c05b286d67b21b8 100644
|
| --- a/third_party/WebKit/Source/wtf/dtoa/bignum.h
|
| +++ b/third_party/WebKit/Source/wtf/dtoa/bignum.h
|
| @@ -1,146 +1,9 @@
|
| -// Copyright 2010 the V8 project authors. All rights reserved.
|
| -// Redistribution and use in source and binary forms, with or without
|
| -// modification, are permitted provided that the following conditions are
|
| -// met:
|
| -//
|
| -// * Redistributions of source code must retain the above copyright
|
| -// notice, this list of conditions and the following disclaimer.
|
| -// * Redistributions in binary form must reproduce the above
|
| -// copyright notice, this list of conditions and the following
|
| -// disclaimer in the documentation and/or other materials provided
|
| -// with the distribution.
|
| -// * Neither the name of Google Inc. nor the names of its
|
| -// contributors may be used to endorse or promote products derived
|
| -// from this software without specific prior written permission.
|
| -//
|
| -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
| -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
| -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
| -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
| -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
| -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
| -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
| -// 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.
|
| +// Copyright 2017 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
|
|
| -#ifndef DOUBLE_CONVERSION_BIGNUM_H_
|
| -#define DOUBLE_CONVERSION_BIGNUM_H_
|
| +#include "platform/wtf/dtoa/bignum.h"
|
|
|
| -#include "utils.h"
|
| -
|
| -namespace WTF {
|
| -
|
| -namespace double_conversion {
|
| -
|
| -class Bignum {
|
| - public:
|
| - // 3584 = 128 * 28. We can represent 2^3584 > 10^1000 accurately.
|
| - // This bignum can encode much bigger numbers, since it contains an
|
| - // exponent.
|
| - static const int kMaxSignificantBits = 3584;
|
| -
|
| - Bignum();
|
| - void AssignUInt16(uint16_t value);
|
| - void AssignUInt64(uint64_t value);
|
| - void AssignBignum(const Bignum& other);
|
| -
|
| - void AssignDecimalString(Vector<const char> value);
|
| - void AssignHexString(Vector<const char> value);
|
| -
|
| - void AssignPowerUInt16(uint16_t base, int exponent);
|
| -
|
| - void AddUInt16(uint16_t operand);
|
| - void AddUInt64(uint64_t operand);
|
| - void AddBignum(const Bignum& other);
|
| - // Precondition: this >= other.
|
| - void SubtractBignum(const Bignum& other);
|
| -
|
| - void Square();
|
| - void ShiftLeft(int shift_amount);
|
| - void MultiplyByUInt32(uint32_t factor);
|
| - void MultiplyByUInt64(uint64_t factor);
|
| - void MultiplyByPowerOfTen(int exponent);
|
| - void Times10() { return MultiplyByUInt32(10); }
|
| - // Pseudocode:
|
| - // int result = this / other;
|
| - // this = this % other;
|
| - // In the worst case this function is in O(this/other).
|
| - uint16_t DivideModuloIntBignum(const Bignum& other);
|
| -
|
| - bool ToHexString(char* buffer, int buffer_size) const;
|
| -
|
| - static int Compare(const Bignum& a, const Bignum& b);
|
| - static bool Equal(const Bignum& a, const Bignum& b) {
|
| - return Compare(a, b) == 0;
|
| - }
|
| - static bool LessEqual(const Bignum& a, const Bignum& b) {
|
| - return Compare(a, b) <= 0;
|
| - }
|
| - static bool Less(const Bignum& a, const Bignum& b) {
|
| - return Compare(a, b) < 0;
|
| - }
|
| - // Returns Compare(a + b, c);
|
| - static int PlusCompare(const Bignum& a, const Bignum& b, const Bignum& c);
|
| - // Returns a + b == c
|
| - static bool PlusEqual(const Bignum& a, const Bignum& b, const Bignum& c) {
|
| - return PlusCompare(a, b, c) == 0;
|
| - }
|
| - // Returns a + b <= c
|
| - static bool PlusLessEqual(const Bignum& a, const Bignum& b, const Bignum& c) {
|
| - return PlusCompare(a, b, c) <= 0;
|
| - }
|
| - // Returns a + b < c
|
| - static bool PlusLess(const Bignum& a, const Bignum& b, const Bignum& c) {
|
| - return PlusCompare(a, b, c) < 0;
|
| - }
|
| -
|
| - private:
|
| - typedef uint32_t Chunk;
|
| - typedef uint64_t DoubleChunk;
|
| -
|
| - static const int kChunkSize = sizeof(Chunk) * 8;
|
| - static const int kDoubleChunkSize = sizeof(DoubleChunk) * 8;
|
| - // With bigit size of 28 we loose some bits, but a double still fits easily
|
| - // into two chunks, and more importantly we can use the Comba multiplication.
|
| - static const int kBigitSize = 28;
|
| - static const Chunk kBigitMask = (1 << kBigitSize) - 1;
|
| - // Every instance allocates kBigitLength chunks on the stack. Bignums cannot
|
| - // grow. There are no checks if the stack-allocated space is sufficient.
|
| - static const int kBigitCapacity = kMaxSignificantBits / kBigitSize;
|
| -
|
| - void EnsureCapacity(int size) {
|
| - if (size > kBigitCapacity) {
|
| - UNREACHABLE();
|
| - }
|
| - }
|
| - void Align(const Bignum& other);
|
| - void Clamp();
|
| - bool IsClamped() const;
|
| - void Zero();
|
| - // Requires this to have enough capacity (no tests done).
|
| - // Updates used_digits_ if necessary.
|
| - // shift_amount must be < kBigitSize.
|
| - void BigitsShiftLeft(int shift_amount);
|
| - // BigitLength includes the "hidden" digits encoded in the exponent.
|
| - int BigitLength() const { return used_digits_ + exponent_; }
|
| - Chunk BigitAt(int index) const;
|
| - void SubtractTimes(const Bignum& other, int factor);
|
| -
|
| - Chunk bigits_buffer_[kBigitCapacity];
|
| - // A vector backed by bigits_buffer_. This way accesses to the array are
|
| - // checked for out-of-bounds errors.
|
| - Vector<Chunk> bigits_;
|
| - int used_digits_;
|
| - // The Bignum's value equals value(bigits_) * 2^(exponent_ * kBigitSize).
|
| - int exponent_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(Bignum);
|
| -};
|
| -
|
| -} // namespace double_conversion
|
| -
|
| -} // namespace WTF
|
| -
|
| -#endif // DOUBLE_CONVERSION_BIGNUM_H_
|
| +// The contents of this header was moved to platform/wtf as part of
|
| +// WTF migration project. See the following post for details:
|
| +// https://groups.google.com/a/chromium.org/d/msg/blink-dev/tLdAZCTlcAA/bYXVT8gYCAAJ
|
|
|