Index: runtime/lib/double_patch.dart |
diff --git a/runtime/lib/double_patch.dart b/runtime/lib/double_patch.dart |
index d0367250dcd2cb082e021cd29d07df65a046c843..ea34f7765d81c0b5e46d4e1cc2d3ad9a04f52dd0 100644 |
--- a/runtime/lib/double_patch.dart |
+++ b/runtime/lib/double_patch.dart |
@@ -7,34 +7,17 @@ |
patch class double { |
- static double _native_parse(_OneByteString string) native "Double_parse"; |
+ static double _native_parse(String str, |
Vyacheslav Egorov (Google)
2014/07/01 11:36:18
Should not this be called _nativeParse? _native_pa
Lasse Reichstein Nielsen
2014/07/01 11:54:18
Changed to _nativeParse.
Moving it to dart:_inter
|
+ int start, int end) native "Double_parse"; |
static double _parse(var str) { |
- str = str.trim(); |
+ int len = str.length; |
+ int start = str._firstNonWhitespace(); |
+ if (start == len) return null; // All whitespace. |
+ int end = str._lastNonWhitespace() + 1; |
+ assert(start < end); |
- if (str.length == 0) return null; |
- |
- final ccid = ClassID.getID(str); |
- _OneByteString oneByteString; |
- // TODO(Srdjan): Allow _ExternalOneByteStrings. |
- if (ccid == ClassID.cidOneByteString) { |
- oneByteString = str; |
- } else { |
- int length = str.length; |
- var s = _OneByteString._allocate(length); |
- for (int i = 0; i < length; i++) { |
- int currentUnit = str.codeUnitAt(i); |
- // All valid trimmed double strings must be ASCII. |
- if (currentUnit < 128) { |
- s._setAt(i, currentUnit); |
- } else { |
- return null; |
- } |
- } |
- oneByteString = s; |
- } |
- |
- return _native_parse(oneByteString); |
+ return _native_parse(str, start, end); |
} |
/* patch */ static double parse(String str, |