dart-sdk/runtime
Alexander Markov 10e9606861 [vm] More efficient 'is' tests for record types
'is' tests against record types are split into series of 'is' tests of
record fields. This is more efficient as record instances cannot be
added to subtype test caches (because type of a record instance
depends on types of its fields).

This change also adds canonicalization and constant evaluation of
LoadFieldInstr for record fields.

Performance on a trivial micro-benchmark (on x64):
JIT (RunTime): 4519104.5 -> 20031.5
AOT (RunTime): 4352583.0 -> 26281.6

TEST=ci
Issue: https://github.com/dart-lang/sdk/issues/49719
Change-Id: I2ed464cd3b31f365b17805f4e7debe1d6d1051fa
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/268080
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Slava Egorov <vegorov@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2022-11-07 22:27:31 +00:00
..
bin [vm/ffi] FfiNative process lookup 2022-10-25 10:57:07 +00:00
docs [vm/inliner] Tweak inlining heuristic, improve List.of inlining. 2022-08-15 21:14:36 +00:00
include [vm] Rename Dart_NotifyDetach to Dart_NotifyDestroyed. 2022-10-17 18:23:59 +00:00
lib [vm/ffi] FfiNative process lookup 2022-10-25 10:57:07 +00:00
observatory [vm/vmservice] Ensure only one vmservice http server is launched. 2022-11-07 15:30:21 +00:00
observatory_2 [vm/vmservice] Ensure only one vmservice http server is launched. 2022-11-07 15:30:21 +00:00
platform [vm, gc] Extend alignment helpers to work with alignment offsets. 2022-10-06 00:50:45 +00:00
tests [tests] Migrate away from native 2022-10-28 09:16:40 +00:00
third_party [build] Switch builds to the ninja in DEPS 2022-09-27 11:24:03 +00:00
tools [graphexplorer] Rename bounds variables for successor and predecessor iteration. 2022-10-28 20:07:24 +00:00
vm [vm] More efficient 'is' tests for record types 2022-11-07 22:27:31 +00:00
.clang-tidy
.gitignore
BUILD.gn [vm/ffi] FfiNative process lookup 2022-10-25 10:57:07 +00:00
codereview.settings
configs.gni [vm/ffi] FfiNative process lookup 2022-10-25 10:57:07 +00:00
CPPLINT.cfg
OWNERS [infra] Add OWNERS to the Dart SDK 2022-02-14 14:06:34 +00:00
PRESUBMIT.py [python3] Migrate PRESUBMIT.py files 2021-08-16 08:29:54 +00:00
runtime_args.gni [VM] error: ‘mallinfo mallinfo()’ is deprecated 2021-12-08 00:25:10 +00:00