| Index: src/bignum.cc
|
| diff --git a/src/bignum.cc b/src/bignum.cc
|
| index cdb9f96cd19c5ddb0afc66f1d2bd35c99910a84b..254cb012b661c4b5bfe40039088343eccb1aed16 100644
|
| --- a/src/bignum.cc
|
| +++ b/src/bignum.cc
|
| @@ -26,7 +26,7 @@ static int BitSize(S value) {
|
|
|
| // Guaranteed to lie in one Bigit.
|
| void Bignum::AssignUInt16(uint16_t value) {
|
| - ASSERT(kBigitSize >= BitSize(value));
|
| + DCHECK(kBigitSize >= BitSize(value));
|
| Zero();
|
| if (value == 0) return;
|
|
|
| @@ -72,7 +72,7 @@ static uint64_t ReadUInt64(Vector<const char> buffer,
|
| uint64_t result = 0;
|
| for (int i = from; i < from + digits_to_read; ++i) {
|
| int digit = buffer[i] - '0';
|
| - ASSERT(0 <= digit && digit <= 9);
|
| + DCHECK(0 <= digit && digit <= 9);
|
| result = result * 10 + digit;
|
| }
|
| return result;
|
| @@ -148,8 +148,8 @@ void Bignum::AddUInt64(uint64_t operand) {
|
|
|
|
|
| void Bignum::AddBignum(const Bignum& other) {
|
| - ASSERT(IsClamped());
|
| - ASSERT(other.IsClamped());
|
| + DCHECK(IsClamped());
|
| + DCHECK(other.IsClamped());
|
|
|
| // If this has a greater exponent than other append zero-bigits to this.
|
| // After this call exponent_ <= other.exponent_.
|
| @@ -170,7 +170,7 @@ void Bignum::AddBignum(const Bignum& other) {
|
| EnsureCapacity(1 + Max(BigitLength(), other.BigitLength()) - exponent_);
|
| Chunk carry = 0;
|
| int bigit_pos = other.exponent_ - exponent_;
|
| - ASSERT(bigit_pos >= 0);
|
| + DCHECK(bigit_pos >= 0);
|
| for (int i = 0; i < other.used_digits_; ++i) {
|
| Chunk sum = bigits_[bigit_pos] + other.bigits_[i] + carry;
|
| bigits_[bigit_pos] = sum & kBigitMask;
|
| @@ -185,15 +185,15 @@ void Bignum::AddBignum(const Bignum& other) {
|
| bigit_pos++;
|
| }
|
| used_digits_ = Max(bigit_pos, used_digits_);
|
| - ASSERT(IsClamped());
|
| + DCHECK(IsClamped());
|
| }
|
|
|
|
|
| void Bignum::SubtractBignum(const Bignum& other) {
|
| - ASSERT(IsClamped());
|
| - ASSERT(other.IsClamped());
|
| + DCHECK(IsClamped());
|
| + DCHECK(other.IsClamped());
|
| // We require this to be bigger than other.
|
| - ASSERT(LessEqual(other, *this));
|
| + DCHECK(LessEqual(other, *this));
|
|
|
| Align(other);
|
|
|
| @@ -201,7 +201,7 @@ void Bignum::SubtractBignum(const Bignum& other) {
|
| Chunk borrow = 0;
|
| int i;
|
| for (i = 0; i < other.used_digits_; ++i) {
|
| - ASSERT((borrow == 0) || (borrow == 1));
|
| + DCHECK((borrow == 0) || (borrow == 1));
|
| Chunk difference = bigits_[i + offset] - other.bigits_[i] - borrow;
|
| bigits_[i + offset] = difference & kBigitMask;
|
| borrow = difference >> (kChunkSize - 1);
|
| @@ -235,7 +235,7 @@ void Bignum::MultiplyByUInt32(uint32_t factor) {
|
|
|
| // The product of a bigit with the factor is of size kBigitSize + 32.
|
| // Assert that this number + 1 (for the carry) fits into double chunk.
|
| - ASSERT(kDoubleChunkSize >= kBigitSize + 32 + 1);
|
| + DCHECK(kDoubleChunkSize >= kBigitSize + 32 + 1);
|
| DoubleChunk carry = 0;
|
| for (int i = 0; i < used_digits_; ++i) {
|
| DoubleChunk product = static_cast<DoubleChunk>(factor) * bigits_[i] + carry;
|
| @@ -257,7 +257,7 @@ void Bignum::MultiplyByUInt64(uint64_t factor) {
|
| Zero();
|
| return;
|
| }
|
| - ASSERT(kBigitSize < 32);
|
| + DCHECK(kBigitSize < 32);
|
| uint64_t carry = 0;
|
| uint64_t low = factor & 0xFFFFFFFF;
|
| uint64_t high = factor >> 32;
|
| @@ -297,7 +297,7 @@ void Bignum::MultiplyByPowerOfTen(int exponent) {
|
| { kFive1, kFive2, kFive3, kFive4, kFive5, kFive6,
|
| kFive7, kFive8, kFive9, kFive10, kFive11, kFive12 };
|
|
|
| - ASSERT(exponent >= 0);
|
| + DCHECK(exponent >= 0);
|
| if (exponent == 0) return;
|
| if (used_digits_ == 0) return;
|
|
|
| @@ -319,7 +319,7 @@ void Bignum::MultiplyByPowerOfTen(int exponent) {
|
|
|
|
|
| void Bignum::Square() {
|
| - ASSERT(IsClamped());
|
| + DCHECK(IsClamped());
|
| int product_length = 2 * used_digits_;
|
| EnsureCapacity(product_length);
|
|
|
| @@ -381,7 +381,7 @@ void Bignum::Square() {
|
| }
|
| // Since the result was guaranteed to lie inside the number the
|
| // accumulator must be 0 now.
|
| - ASSERT(accumulator == 0);
|
| + DCHECK(accumulator == 0);
|
|
|
| // Don't forget to update the used_digits and the exponent.
|
| used_digits_ = product_length;
|
| @@ -391,8 +391,8 @@ void Bignum::Square() {
|
|
|
|
|
| void Bignum::AssignPowerUInt16(uint16_t base, int power_exponent) {
|
| - ASSERT(base != 0);
|
| - ASSERT(power_exponent >= 0);
|
| + DCHECK(base != 0);
|
| + DCHECK(power_exponent >= 0);
|
| if (power_exponent == 0) {
|
| AssignUInt16(1);
|
| return;
|
| @@ -465,9 +465,9 @@ void Bignum::AssignPowerUInt16(uint16_t base, int power_exponent) {
|
|
|
| // Precondition: this/other < 16bit.
|
| uint16_t Bignum::DivideModuloIntBignum(const Bignum& other) {
|
| - ASSERT(IsClamped());
|
| - ASSERT(other.IsClamped());
|
| - ASSERT(other.used_digits_ > 0);
|
| + DCHECK(IsClamped());
|
| + DCHECK(other.IsClamped());
|
| + DCHECK(other.used_digits_ > 0);
|
|
|
| // Easy case: if we have less digits than the divisor than the result is 0.
|
| // Note: this handles the case where this == 0, too.
|
| @@ -485,14 +485,14 @@ uint16_t Bignum::DivideModuloIntBignum(const Bignum& other) {
|
| // This naive approach is extremely inefficient if the this divided other
|
| // might be big. This function is implemented for doubleToString where
|
| // the result should be small (less than 10).
|
| - ASSERT(other.bigits_[other.used_digits_ - 1] >= ((1 << kBigitSize) / 16));
|
| + DCHECK(other.bigits_[other.used_digits_ - 1] >= ((1 << kBigitSize) / 16));
|
| // Remove the multiples of the first digit.
|
| // Example this = 23 and other equals 9. -> Remove 2 multiples.
|
| result += bigits_[used_digits_ - 1];
|
| SubtractTimes(other, bigits_[used_digits_ - 1]);
|
| }
|
|
|
| - ASSERT(BigitLength() == other.BigitLength());
|
| + DCHECK(BigitLength() == other.BigitLength());
|
|
|
| // Both bignums are at the same length now.
|
| // Since other has more than 0 digits we know that the access to
|
| @@ -529,7 +529,7 @@ uint16_t Bignum::DivideModuloIntBignum(const Bignum& other) {
|
|
|
| template<typename S>
|
| static int SizeInHexChars(S number) {
|
| - ASSERT(number > 0);
|
| + DCHECK(number > 0);
|
| int result = 0;
|
| while (number != 0) {
|
| number >>= 4;
|
| @@ -540,16 +540,16 @@ static int SizeInHexChars(S number) {
|
|
|
|
|
| static char HexCharOfValue(int value) {
|
| - ASSERT(0 <= value && value <= 16);
|
| + DCHECK(0 <= value && value <= 16);
|
| if (value < 10) return value + '0';
|
| return value - 10 + 'A';
|
| }
|
|
|
|
|
| bool Bignum::ToHexString(char* buffer, int buffer_size) const {
|
| - ASSERT(IsClamped());
|
| + DCHECK(IsClamped());
|
| // Each bigit must be printable as separate hex-character.
|
| - ASSERT(kBigitSize % 4 == 0);
|
| + DCHECK(kBigitSize % 4 == 0);
|
| const int kHexCharsPerBigit = kBigitSize / 4;
|
|
|
| if (used_digits_ == 0) {
|
| @@ -594,8 +594,8 @@ Bignum::Chunk Bignum::BigitAt(int index) const {
|
|
|
|
|
| int Bignum::Compare(const Bignum& a, const Bignum& b) {
|
| - ASSERT(a.IsClamped());
|
| - ASSERT(b.IsClamped());
|
| + DCHECK(a.IsClamped());
|
| + DCHECK(b.IsClamped());
|
| int bigit_length_a = a.BigitLength();
|
| int bigit_length_b = b.BigitLength();
|
| if (bigit_length_a < bigit_length_b) return -1;
|
| @@ -612,9 +612,9 @@ int Bignum::Compare(const Bignum& a, const Bignum& b) {
|
|
|
|
|
| int Bignum::PlusCompare(const Bignum& a, const Bignum& b, const Bignum& c) {
|
| - ASSERT(a.IsClamped());
|
| - ASSERT(b.IsClamped());
|
| - ASSERT(c.IsClamped());
|
| + DCHECK(a.IsClamped());
|
| + DCHECK(b.IsClamped());
|
| + DCHECK(c.IsClamped());
|
| if (a.BigitLength() < b.BigitLength()) {
|
| return PlusCompare(b, a, c);
|
| }
|
| @@ -691,15 +691,15 @@ void Bignum::Align(const Bignum& other) {
|
| }
|
| used_digits_ += zero_digits;
|
| exponent_ -= zero_digits;
|
| - ASSERT(used_digits_ >= 0);
|
| - ASSERT(exponent_ >= 0);
|
| + DCHECK(used_digits_ >= 0);
|
| + DCHECK(exponent_ >= 0);
|
| }
|
| }
|
|
|
|
|
| void Bignum::BigitsShiftLeft(int shift_amount) {
|
| - ASSERT(shift_amount < kBigitSize);
|
| - ASSERT(shift_amount >= 0);
|
| + DCHECK(shift_amount < kBigitSize);
|
| + DCHECK(shift_amount >= 0);
|
| Chunk carry = 0;
|
| for (int i = 0; i < used_digits_; ++i) {
|
| Chunk new_carry = bigits_[i] >> (kBigitSize - shift_amount);
|
| @@ -721,7 +721,7 @@ void Bignum::SubtractTimes(const Bignum& other, int factor) {
|
| b.MultiplyByUInt32(factor);
|
| a.SubtractBignum(b);
|
| #endif
|
| - ASSERT(exponent_ <= other.exponent_);
|
| + DCHECK(exponent_ <= other.exponent_);
|
| if (factor < 3) {
|
| for (int i = 0; i < factor; ++i) {
|
| SubtractBignum(other);
|
| @@ -746,7 +746,7 @@ void Bignum::SubtractTimes(const Bignum& other, int factor) {
|
| borrow = difference >> (kChunkSize - 1);
|
| }
|
| Clamp();
|
| - ASSERT(Bignum::Equal(a, *this));
|
| + DCHECK(Bignum::Equal(a, *this));
|
| }
|
|
|
|
|
|
|