diff options
Diffstat (limited to 'src/wasm-s-parser.h')
-rw-r--r-- | src/wasm-s-parser.h | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/wasm-s-parser.h b/src/wasm-s-parser.h index 9fb9d4389..6ccc7c36c 100644 --- a/src/wasm-s-parser.h +++ b/src/wasm-s-parser.h @@ -137,6 +137,14 @@ class SExpressionWasmBuilder { std::map<Name, Signature> functionSignatures; std::unordered_map<cashew::IString, Index> debugInfoFileIndices; + // Maps type indexes to a mapping of field index => name. This is not the same + // as the field names stored on the wasm object, as that maps types after + // their canonicalization. Canonicalization loses information, which means + // that structurally identical types cannot have different names. However, + // while parsing the text format we keep this mapping of type indexes to names + // which does allow reading such content. + std::unordered_map<size_t, std::unordered_map<Index, Name>> fieldNames; + public: // Assumes control of and modifies the input. SExpressionWasmBuilder(Module& wasm, Element& module, IRProfile profile); @@ -272,7 +280,7 @@ private: Expression* makeRttCanon(Element& s); Expression* makeRttSub(Element& s); Expression* makeStructNew(Element& s, bool default_); - Index getStructIndex(const HeapType& type, Element& s); + Index getStructIndex(Element& type, Element& field); Expression* makeStructGet(Element& s, bool signed_ = false); Expression* makeStructSet(Element& s); Expression* makeArrayNew(Element& s, bool default_); |