commit | ed5bc9c53847dc06f5bd712ceef81a7959ee01ed | [log] [tgz] |
---|---|---|
author | Vyacheslav Egorov <vegorov@google.com> | Wed Mar 13 12:13:12 2019 +0000 |
committer | commit-bot@chromium.org <commit-bot@chromium.org> | Wed Mar 13 12:13:12 2019 +0000 |
tree | 8d294b60063134f62e874a9c961cf86f1242e206 | |
parent | 8436dca626763523933b0ed3aa5af598aab01dfa [diff] |
[vm] Fix AssertAssignable strengthening sometimes using wrong deopt_id. For some reason this code used deopt_id from the environment attached to the AssertAssignable instruction, rather than deopt_id from the instruction itself. Under certain conditions this deopt_id is -1 which usually does not cause any problems because no other code uses it. Compiler is now changed in a way that only sets Environment::deopt_id_ for outer environments and innermost environment always has deopt_id_ set to DeoptId::kNone. This bug manifested itself as a very rare crash on lib_2/convert/chunked_conversion_utf8_test.dart test on optcounter bot. This change also converts an assertion that verifies that deoptimization target always exists into a FATAL to make such crashes more informative. TEST=runtime/tests/vm/dart/licm_and_assert_strengthening_test.dart Change-Id: Ib58237b0f4ae279dcf9d88cac031156e88bf4828 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/96657 Auto-Submit: Vyacheslav Egorov <vegorov@google.com> Reviewed-by: Martin Kustermann <kustermann@google.com> Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Dart is an open-source, scalable programming language, with robust libraries and runtimes, for building web, server, and mobile apps.
Visit the dartlang.org to learn more about the language, tools, getting started, and more.
Browse pub.dartlang.org for more packages and libraries contributed by the community and the Dart team.
If you want to build Dart yourself, here is a guide to getting the source, preparing your machine to build the SDK, and building.
There are more documents on our wiki.
The easiest way to contribute to Dart is to file issues.
You can also contribute patches, as described in Contributing.