mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-26 20:30:41 +00:00

This patch adds alias set annotations to the MIR generated for struct.{new,set,get}, so as to enable the existing GVN machinery to remove duplicate loads of the OOL block pointer in the (static) presence of multiple OOL field accesses to the same wasm object. This is a bit tricky because we must ensure that neither an IL-data-field nor OOL-data-field write to the object invalidate the OOL-block-pointer read. Hence the OOL-block-pointer-field cannot be in the same alias set as either the IL- nor OOL-data fields. And so this patch adds three new alias-set descriptors. The implementation is straightforward and described in comments. Because it is easy to mess up optimisation with incorrect alias set descriptors, the `MWasm{Load,Store}Field*::New` methods heavily restrict what descriptors they accept, via assertions. Because those same MIR nodes are also used to implement exceptions, they also accept `AliasSet::{Load,Store}(AliasSet::All)` ("no information") descriptors. The exception-handling MIR is unaffected by this patch. Differential Revision: https://phabricator.services.mozilla.com/D161254
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
An explanation of the Firefox Source Code Directory Structure and links to project pages with documentation can be found at: https://firefox-source-docs.mozilla.org/contributing/directory_structure.html For information on how to build Firefox from the source code and create the patch see: https://firefox-source-docs.mozilla.org/contributing/contribution_quickref.html If you have a question about developing Firefox, and can't find the solution on https://firefox-source-docs.mozilla.org/, you can try asking your question on Matrix at chat.mozilla.org in `Introduction` (https://chat.mozilla.org/#/room/#introduction:mozilla.org) channel. Nightly development builds can be downloaded from: https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central/ - or - https://www.mozilla.org/firefox/channel/desktop/#nightly Keep in mind that nightly builds, which are used by Firefox developers for testing, may be buggy.
Description
Read-only Git mirror of the Mercurial gecko repositories at https://hg.mozilla.org. How to contribute: https://firefox-source-docs.mozilla.org/contributing/contribution_quickref.html
Languages
JavaScript
32.3%
C++
25.4%
HTML
21%
C
10.8%
Python
2.8%
Other
7.2%