mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 16:37:43 +00:00
97164b3a01
Late field inialization stubs don't update field guard state which causes incorrect optimizations when they rely on that state. This change disables field guards for late fields in order to fix this bug. As an alternative, we could have added the code to update field guard state from late field initialization stubs. However, it would require duplicating and generalizing a lot of code used to implement GuardFieldClass, GuardFieldLength and GuardFieldType instructions. At the moment it is not clear if field guards provide sufficient performance improvements to justify this. Another possible approach would be to outline initializing field stores from the stubs back to the application code but that would cause either substantial increase in AOT code size or an undesired discrenacy between JIT and AOT. TEST=runtime/tests/vm/dart/regress_flutter142532_test.dart Fixes https://github.com/flutter/flutter/issues/142532 Change-Id: I15e737aa5d1b73e71e0cb935580a3b9a2dcbb77a Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/350985 Commit-Queue: Alexander Markov <alexmarkov@google.com> Reviewed-by: Slava Egorov <vegorov@google.com> Reviewed-by: Martin Kustermann <kustermann@google.com> |
||
---|---|---|
.. | ||
bin | ||
docs | ||
include | ||
lib | ||
observatory | ||
platform | ||
tests | ||
tools | ||
vm | ||
.clang-tidy | ||
.gitignore | ||
BUILD.gn | ||
codereview.settings | ||
configs.gni | ||
CPPLINT.cfg | ||
OWNERS | ||
PRESUBMIT.py | ||
runtime_args.gni | ||
vm-jit.shard.cml | ||
vm.shard.cml |