зеркало из https://github.com/mozilla/gecko-dev.git
130c68fe5c
This commit adds rtt.canon and rtt.sub to the initializer expression interpreter. * LitVal and Val assertions are updated to allow rtts * Baseline global.get/set was updated to allow rtts * Decoder method namings were changed from specifying the exact instruction being decoded to specifying the index type being decoded, as I think that's more maintainable for sharing between OpIter and InitExpr. * Wrappers for constant expression instructions that are implemented on Instance are added. e.g. constantRefFunc, constantRttCanon, constantRttSub. This signals intent better and keeps Instance implementation details out of the constant expression interpreter. * Due to the previous, FuncRef required tracing to be suppported. * Globals are moved to be initialized after types are initialized, so that rtt.canon/rtt.sub initializers work correctly. * A SMDOC is added for explaining signatures/runtime types/ renumbering/type transfer/global type cache. The design should change in the future, but the current one needs documentation to explain the changes made in this commit. * TypeIdDesc and TypeDefWithId are moved to WasmTypeDef.h * Constant expressions encode the original source type index for rtt.canon/sub, while at runtime we need the renumbered (see SMDOC) type index. The least hacky way of doing this (AFAIK) is to transfer the renumbering map into wasm::Metadata and use that at runtime. To make this serializable, a sparse vector is used instead of a hashmap. Differential Revision: https://phabricator.services.mozilla.com/D118845 |
||
---|---|---|
.. | ||
ductwork/debugger | ||
examples | ||
public | ||
src | ||
xpconnect | ||
app.mozbuild | ||
ffi.configure | ||
moz.build | ||
moz.configure | ||
sub.configure |