mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-24 13:21:05 +00:00
c3dad32348
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 |
||
---|---|---|
.. | ||
examples | ||
loader | ||
public | ||
src | ||
xpconnect | ||
app.mozbuild | ||
ffi.configure | ||
moz.build | ||
moz.configure | ||
sub.configure |