Files
sdk/tests/web
Martin Kustermann 810301045d [dart2wasm] Make JS<....>Array.setRange(..., ...TypedListList()) faster
The fused utf8+json decoder ensures the bytes that it operates on are
U8List:

  void parseChunk(List<int> value, int start, int end) {
    if (value is U8List) {
      chunk = value;
    } else {
      final bytes = U8List(end - start);
      bytes.setRange(0, bytes.length, value, start);
      ...
    }
    ...
  }

This speeds up the `bytes.setRange()` call by using an optimized loop
that copies memory from JS arrays to wasm arrays.

=> This speeds up WasmDataTransfer.FromBrowserBytes.* by 10x
=> This speeds up Json*JS.*.FromBytes benchmarks by up to 3x

Issue https://github.com/dart-lang/sdk/issues/56494

Change-Id: I99fd1db280f503e91972c53537d7cd1fd4fd49ff
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/382002
Reviewed-by: Ömer Ağacan <omersa@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2024-08-26 08:58:11 +00:00
..