commit | b10f17960890b053a5c1ac9303e0f9332fc8bd17 | [log] [tgz] |
---|---|---|
author | Alexander Markov <alexmarkov@google.com> | Thu Jan 17 23:27:13 2019 +0000 |
committer | commit-bot@chromium.org <commit-bot@chromium.org> | Thu Jan 17 23:27:13 2019 +0000 |
tree | 9bffe5ab9e935f45d5a9fa0908d5cb7d107c2a74 | |
parent | 5b1daaac6c135a2d83da3f3bd88344d7c7545aac [diff] |
[vm] Cleanup Dart_Get/Set/HasStickyError API and use isolate's sticky error only as a backup for thread's sticky error Both thread and isolate have sticky error fields. Dart API was using isolate's sticky error, while Dart code was using thread's sticky error. There was a one-way move of a thread's sticky error into isolate when thread was unscheduled. This causes a problem as error in the isolate may go unnoticed and repeated unscheduling/re-scheduling might end up overwriting the error in the isolate (which triggers the assertion). To solve this problem, this CL: * Cleans up Dart API which manipulates isolate's sticky error, so isolate's sticky error is never set directly. * When sceduling an isolate to a thread, sticky error is moved back from isolate (if any). With this changes, thread's sticky error is always used if thread is running, and isolate's sticky error is only used to hold sticky error while isolate has no thread. Fixes https://github.com/dart-lang/sdk/issues/35590 Change-Id: I99b128cac363ca2df75f6e64c083b1ec36c866ce Reviewed-on: https://dart-review.googlesource.com/c/89442 Reviewed-by: Ryan Macnak <rmacnak@google.com> Commit-Queue: Alexander Markov <alexmarkov@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.