dart-sdk/runtime
Vyacheslav Egorov d4ced16301 [vm/compiler] Ignore redefinitions in CSE.
Redefinitions exist to prevent code motion and don't affect
the meaning of instructions they flow into as inputs.

Consequently, when comparing two instructions for equality
we should unwrap all the inputs.

The only exception from the rule is LoadField instruction:
we would like to avoid replacing a load from a redefinition
with a dominating load from the original definition because
that would break a dependency chain on the redefinition.

This change is done to address code size regressions caused
by retaining and/or inserting more redefinitions to prevent
illegal code motions. These new redefinitions impact CSE
optimizations and (without this CL) lead to redundant boxing
being left over in the optimized code.

TEST=ci

Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-debug-x64-try,vm-kernel-precomp-linux-product-x64-try,vm-kernel-precomp-linux-release-x64-try
Change-Id: Idd917fcb8c7117670a1d9c5c32f1bae57569d3b5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/219242
Commit-Queue: Slava Egorov <vegorov@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2021-11-16 13:55:31 +00:00
..
bin [vm] Fix standalone{,_2}/io/platform_test & incorrect error handling in VM 2021-11-05 17:48:49 +00:00
docs [vm/infra] Improve IL testing framework 2021-11-16 12:39:11 +00:00
include [VM/Runtime] - Add Dart C API function to toggle timeline categories. 2021-11-11 01:25:04 +00:00
lib [vm/isolates] Ensure spawnUri'ed isolates keep their own origin_id. 2021-11-13 02:36:52 +00:00
observatory Revert "Reland "[ VM / Service ] Add setIsolatePauseMode RPC"" 2021-11-13 00:01:53 +00:00
observatory_2 Revert "Reland "[ VM / Service ] Add setIsolatePauseMode RPC"" 2021-11-13 00:01:53 +00:00
platform [vm, gc] Include starting concurrent marking in --verbose_gc output. 2021-10-28 18:20:18 +00:00
tests [vm/compiler] Avoid invalid code motion 2021-11-16 12:48:52 +00:00
third_party [tools] Update all iteritems -> items 2021-05-20 11:36:52 +00:00
tools Stop using getResolvedLibrary2 in dartfuzz. 2021-10-30 01:22:31 +00:00
vm [vm/compiler] Ignore redefinitions in CSE. 2021-11-16 13:55:31 +00:00
.clang-tidy
.gitignore
BUILD.gn Allow deprecated copy on fuchsia 2021-08-11 01:14:22 +00:00
codereview.settings
configs.gni Reland "[vm] Build dart2native dependencies with the normal "create_sdk" target" 2020-06-17 16:12:26 +00:00
CPPLINT.cfg
PRESUBMIT.py [python3] Migrate PRESUBMIT.py files 2021-08-16 08:29:54 +00:00
runtime_args.gni [wasm] Remove deprecated dart_enable_wasm flag. 2021-04-01 22:45:07 +00:00