Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(14)

Side by Side Diff: src/strtod.cc

Issue 798413003: Remove obsolete V8_INFINITY macro. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Address Svens smiley. Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/ppc/lithium-codegen-ppc.cc ('k') | src/types.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <stdarg.h>
6 #include <cmath> 5 #include <cmath>
6 #include <cstdarg>
7 #include <limits>
7 8
8 #include "src/v8.h" 9 #include "src/v8.h"
9 10
10 #include "src/bignum.h" 11 #include "src/bignum.h"
11 #include "src/cached-powers.h" 12 #include "src/cached-powers.h"
12 #include "src/double.h" 13 #include "src/double.h"
13 #include "src/globals.h" 14 #include "src/globals.h"
14 #include "src/strtod.h" 15 #include "src/strtod.h"
15 #include "src/utils.h" 16 #include "src/utils.h"
16 17
(...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 // Returns the correct double for the buffer*10^exponent. 346 // Returns the correct double for the buffer*10^exponent.
346 // The variable guess should be a close guess that is either the correct double 347 // The variable guess should be a close guess that is either the correct double
347 // or its lower neighbor (the nearest double less than the correct one). 348 // or its lower neighbor (the nearest double less than the correct one).
348 // Preconditions: 349 // Preconditions:
349 // buffer.length() + exponent <= kMaxDecimalPower + 1 350 // buffer.length() + exponent <= kMaxDecimalPower + 1
350 // buffer.length() + exponent > kMinDecimalPower 351 // buffer.length() + exponent > kMinDecimalPower
351 // buffer.length() <= kMaxDecimalSignificantDigits 352 // buffer.length() <= kMaxDecimalSignificantDigits
352 static double BignumStrtod(Vector<const char> buffer, 353 static double BignumStrtod(Vector<const char> buffer,
353 int exponent, 354 int exponent,
354 double guess) { 355 double guess) {
355 if (guess == V8_INFINITY) { 356 if (guess == std::numeric_limits<double>::infinity()) {
356 return guess; 357 return guess;
357 } 358 }
358 359
359 DiyFp upper_boundary = Double(guess).UpperBoundary(); 360 DiyFp upper_boundary = Double(guess).UpperBoundary();
360 361
361 DCHECK(buffer.length() + exponent <= kMaxDecimalPower + 1); 362 DCHECK(buffer.length() + exponent <= kMaxDecimalPower + 1);
362 DCHECK(buffer.length() + exponent > kMinDecimalPower); 363 DCHECK(buffer.length() + exponent > kMinDecimalPower);
363 DCHECK(buffer.length() <= kMaxSignificantDecimalDigits); 364 DCHECK(buffer.length() <= kMaxSignificantDecimalDigits);
364 // Make sure that the Bignum will be able to hold all our numbers. 365 // Make sure that the Bignum will be able to hold all our numbers.
365 // Our Bignum implementation has a separate field for exponents. Shifts will 366 // Our Bignum implementation has a separate field for exponents. Shifts will
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
401 if (trimmed.length() == 0) return 0.0; 402 if (trimmed.length() == 0) return 0.0;
402 if (trimmed.length() > kMaxSignificantDecimalDigits) { 403 if (trimmed.length() > kMaxSignificantDecimalDigits) {
403 char significant_buffer[kMaxSignificantDecimalDigits]; 404 char significant_buffer[kMaxSignificantDecimalDigits];
404 int significant_exponent; 405 int significant_exponent;
405 TrimToMaxSignificantDigits(trimmed, exponent, 406 TrimToMaxSignificantDigits(trimmed, exponent,
406 significant_buffer, &significant_exponent); 407 significant_buffer, &significant_exponent);
407 return Strtod(Vector<const char>(significant_buffer, 408 return Strtod(Vector<const char>(significant_buffer,
408 kMaxSignificantDecimalDigits), 409 kMaxSignificantDecimalDigits),
409 significant_exponent); 410 significant_exponent);
410 } 411 }
411 if (exponent + trimmed.length() - 1 >= kMaxDecimalPower) return V8_INFINITY; 412 if (exponent + trimmed.length() - 1 >= kMaxDecimalPower) {
413 return std::numeric_limits<double>::infinity();
414 }
412 if (exponent + trimmed.length() <= kMinDecimalPower) return 0.0; 415 if (exponent + trimmed.length() <= kMinDecimalPower) return 0.0;
413 416
414 double guess; 417 double guess;
415 if (DoubleStrtod(trimmed, exponent, &guess) || 418 if (DoubleStrtod(trimmed, exponent, &guess) ||
416 DiyFpStrtod(trimmed, exponent, &guess)) { 419 DiyFpStrtod(trimmed, exponent, &guess)) {
417 return guess; 420 return guess;
418 } 421 }
419 return BignumStrtod(trimmed, exponent, guess); 422 return BignumStrtod(trimmed, exponent, guess);
420 } 423 }
421 424
422 } } // namespace v8::internal 425 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/ppc/lithium-codegen-ppc.cc ('k') | src/types.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698