forked from flutter/engine
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[vm/concurrency] Make ICData use new type_feeback_mutex to prevent du…
…plicate entries Dart mutator threads cause update to runtime type feedback information (e.g. ICData, MegamorphicCache). With multiple lightweight isolates sharing JITed code, they will share the type feedback as well. That also means multiple mutators can try to update type feedback at the same time with the same (or different) feedback. This means we can run into situations where we're trying to update type feedback with information that's already there. => At a minimum we want to avoid adding duplicate entries to the ICData, so we have to guard against that. Since the actual backing store to ICData is immutable, we have two choices: * Let each thread read the current backing store, make a copy-on-write, add the new entry and update ICData with new backing store. => This can lead to an successful update being visible for a short period and then disappearing. * We can can ensure mutual exclusion when updating the backing store of ICData, thereby making read+grow+write appear atomic. => This requires taking a lock but ensures we never hit the same IC miss multiple times. => We take the latter approach for now. Issue dart-lang/sdk#36097 TEST=CL is purely a refactoring. Change-Id: Ic3b2de61e25de0210323edd732424cc7d1178771 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174465 Commit-Queue: Martin Kustermann <kustermann@google.com> Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
- Loading branch information
1 parent
89811d9
commit 83e460a
Showing
5 changed files
with
91 additions
and
22 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters