@@ -298,7 +298,7 @@ class _NumberBuffer {
298298 // not only working on strings, but also on char-code lists, without losing
299299 // performance.
300300 num parseNum () => num .parse (getString ());
301- double parseDouble () => _jsParseFloat (getString ());
301+ double parseDouble () => _jsParseValidFloat (getString ());
302302}
303303
304304/**
@@ -697,7 +697,9 @@ mixin _ChunkedJsonParser<T> on _ChunkedJsonParserState {
697697 * built exactly during parsing.
698698 */
699699 double parseDouble (int start, int end) {
700- return _jsParseFloat (getString (start, end, 0x7f , _emptyCodeUnitsCache));
700+ return _jsParseValidFloat (
701+ getString (start, end, 0x7f , _emptyCodeUnitsCache),
702+ );
701703 }
702704
703705 /**
@@ -1752,7 +1754,9 @@ class _JSStringImplParser extends _ChunkedJsonParserState
17521754 }
17531755
17541756 double parseDouble (int start, int end) {
1755- return _jsParseFloat (getString (start, end, 0x7f , _emptyCodeUnitsCache));
1757+ return _jsParseValidFloat (
1758+ getString (start, end, 0x7f , _emptyCodeUnitsCache),
1759+ );
17561760 }
17571761
17581762 void close () {
@@ -2038,7 +2042,7 @@ class _JsonUtf8Parser extends _ChunkedJsonParserState
20382042 chunk.offsetInElements + start,
20392043 chunk.offsetInElements + end,
20402044 );
2041- return _jsParseFloat (result);
2045+ return _jsParseValidFloat (result);
20422046 }
20432047}
20442048
@@ -2862,10 +2866,10 @@ WasmArray<WasmI8> _makeI8ArrayFromWasmI8ArrayBase(
28622866 return bytes;
28632867}
28642868
2865- double _jsParseFloat ( String string) => JS < double >(
2866- '(s) => parseFloat(s)' ,
2867- jsStringFromDartString ( string).toExternRef,
2868- );
2869+ // Assumes the given [ string] is a valid float, so it can rely on the implicit
2870+ // string to number conversion in JS using `+<string-of-number>`.
2871+ double _jsParseValidFloat ( String string) =>
2872+ JS < double >( '(s) => +s' , jsStringFromDartString (string).toExternRef );
28692873
28702874const ImmutableWasmArray <BoxedInt > _intBoxes256 = ImmutableWasmArray .literal ([
28712875 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , //
0 commit comments