dart-sdk/sdk/lib/_internal
Ömer Sinan Ağacan b6bc3e54d0 [dart2wasm] Refactor and optimize dart2wasm hash map/set types
This CL copies and modifies hash map and set base class `_HashBase`
currently shared with the VM, to improve types of the fields.

The Wasm struct for hash map and set objects was previously:

  (type $_HashBase (sub $Object (struct
    (field $field0 i32)
    (field $field1 (mut i32))
    (field $field2 (mut (ref null $Object)))      ;; _index
    (field $field3 (mut i64))
    (field $field4 (mut (ref $Object)))           ;; _data
    (field $field5 (mut i64))
    (field $field6 (mut i64)))))

Now:

  (type $_HashBase (sub $Object (struct
    (field $field0 i32)
    (field $field1 (mut i32))
    (field $field2 (mut (ref $Array<WasmI32>)))   ;; _index
    (field $field3 (mut i64))
    (field $field4 (mut (ref $Array<Object?>)))   ;; _data
    (field $field5 (mut i64))
    (field $field6 (mut i64)))))

_index and _data fields are now non-nullable Wasm arrays. This removes
downcasts and one layer of indirection when accessing the elements. In
addition, when accessing `_index` this eliminates unboxing the integers.

Fixes #54961.

Change-Id: I4e6bd5129c7c57f5716ccb23e46060d73ffca217
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/354843
Commit-Queue: Ömer Ağacan <omersa@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2024-03-05 16:00:39 +00:00
..
js_dev_runtime [ddc] Creating a hot reload and hot restart test suite. 2024-03-05 00:12:18 +00:00
js_runtime Make all platforms return null from Error.stackTrace until thrown. 2024-02-27 23:01:06 +00:00
js_shared [js_dev_runtime] dart format --fix 2024-01-30 20:41:20 +00:00
sdk_library_metadata [dart2js] Convert some collections of const ints to enums 2024-02-23 19:52:50 +00:00
vm [vm] Remove dart:cli waitFor 2024-02-29 11:18:51 +00:00
vm_shared/lib [dart2wasm] Duplicate VM's convert patch for dart2wasm targets 2023-10-18 06:39:59 +00:00
wasm [dart2wasm] Refactor and optimize dart2wasm hash map/set types 2024-03-05 16:00:39 +00:00
wasm_js_compatibility/lib [dart:js_interop] Move JS types to extension types 2023-12-06 21:59:58 +00:00
allowed_experiments.json Retire 3.3 experiments in the 3.4 release. 2024-03-04 16:09:31 +00:00
fix_data.yaml Remove duplicated FileMode fixes 2021-10-11 13:58:43 +00:00