Index: src/runtime.cc |
=================================================================== |
--- src/runtime.cc (revision 4332) |
+++ src/runtime.cc (working copy) |
@@ -4739,49 +4739,9 @@ |
s->TryFlatten(); |
- int len = s->length(); |
- int i; |
- |
- // Skip leading white space. |
- for (i = 0; i < len && Scanner::kIsWhiteSpace.get(s->Get(i)); i++) ; |
- if (i == len) return Heap::nan_value(); |
- |
- // Compute the sign (default to +). |
- int sign = 1; |
- if (s->Get(i) == '-') { |
- sign = -1; |
- i++; |
- } else if (s->Get(i) == '+') { |
- i++; |
- } |
- |
- // Compute the radix if 0. |
- if (radix == 0) { |
- radix = 10; |
- if (i < len && s->Get(i) == '0') { |
- radix = 8; |
- if (i + 1 < len) { |
- int c = s->Get(i + 1); |
- if (c == 'x' || c == 'X') { |
- radix = 16; |
- i += 2; |
- } |
- } |
- } |
- } else if (radix == 16) { |
- // Allow 0x or 0X prefix if radix is 16. |
- if (i + 1 < len && s->Get(i) == '0') { |
- int c = s->Get(i + 1); |
- if (c == 'x' || c == 'X') i += 2; |
- } |
- } |
- |
- RUNTIME_ASSERT(2 <= radix && radix <= 36); |
- double value; |
- int end_index = StringToInt(s, i, radix, &value); |
- if (end_index != i) { |
- return Heap::NumberFromDouble(sign * value); |
- } |
+ RUNTIME_ASSERT(radix == 0 || (2 <= radix && radix <= 36)); |
+ double value = StringToInt(s, radix); |
+ return Heap::NumberFromDouble(value); |
return Heap::nan_value(); |
} |