gecko-dev/js
Julian Seward c3dad32348 Bug 1797933, part 3 - add alias-set annotations for struct.{new,set,get} code. r=rhunt.
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
2022-11-22 13:42:15 +00:00
..
examples
loader Bug 1774111 - Check for already-completed request in ModuleLoaderBase::FinishDynamicImport r=yulia 2022-11-18 13:25:47 +00:00
public Bug 1797933, part 2 - initial implementation of struct.{new,set,get} and ref.cast for Ion. r=rhunt. 2022-11-22 13:42:14 +00:00
src Bug 1797933, part 3 - add alias-set annotations for struct.{new,set,get} code. r=rhunt. 2022-11-22 13:42:15 +00:00
xpconnect Bug 1772733 - Change directory in xpcshell without OS.File r=jmaher,nika 2022-11-21 23:49:39 +00:00
app.mozbuild
ffi.configure
moz.build
moz.configure Bug 1796315 - wasm: Remove 'private reftypes' and allow non-nullable globals. r=yury 2022-11-14 17:09:12 +00:00
sub.configure