mirror of
https://github.com/dart-lang/sdk
synced 2024-10-07 12:35:04 +00:00
d4ced16301
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> |
||
---|---|---|
.. | ||
bin | ||
docs | ||
include | ||
lib | ||
observatory | ||
observatory_2 | ||
platform | ||
tests | ||
third_party | ||
tools | ||
vm | ||
.clang-tidy | ||
.gitignore | ||
BUILD.gn | ||
codereview.settings | ||
configs.gni | ||
CPPLINT.cfg | ||
PRESUBMIT.py | ||
runtime_args.gni |