diff options
Diffstat (limited to 'src/wasm-s-parser.h')
-rw-r--r-- | src/wasm-s-parser.h | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/wasm-s-parser.h b/src/wasm-s-parser.h index 64f764721..c91c01842 100644 --- a/src/wasm-s-parser.h +++ b/src/wasm-s-parser.h @@ -126,6 +126,7 @@ class SExpressionWasmBuilder { std::vector<Name> functionNames; std::vector<Name> tableNames; + std::vector<Name> memoryNames; std::vector<Name> globalNames; std::vector<Name> tagNames; int functionCounter = 0; @@ -158,6 +159,7 @@ private: void preParseFunctionType(Element& s); bool isImport(Element& curr); void preParseImports(Element& curr); + void preParseMemory(Element& curr); void parseModuleElement(Element& curr); // function parsing state @@ -168,10 +170,15 @@ private: Name getFunctionName(Element& s); Name getTableName(Element& s); + Name getMemoryName(Element& s); Name getGlobalName(Element& s); Name getTagName(Element& s); void parseStart(Element& s) { wasm.addStart(getFunctionName(*s[1])); } + Name getMemoryNameAtIdx(Index i); + bool isMemory64(Name memoryName); + bool hasMemoryIdx(Element& s, Index defaultSize, Index i); + // returns the next index in s size_t parseFunctionNames(Element& s, Name& name, Name& exportName); void parseFunction(Element& s, bool preParseImport = false); @@ -311,8 +318,12 @@ private: // Helper functions Type parseOptionalResultType(Element& s, Index& i); - Index parseMemoryLimits(Element& s, Index i); - Index parseMemoryIndex(Element& s, Index i); + Index parseMemoryLimits(Element& s, Index i, std::unique_ptr<Memory>& memory); + Index parseMemoryIndex(Element& s, Index i, std::unique_ptr<Memory>& memory); + Index parseMemoryForInstruction(const std::string& instrName, + Memory& memory, + Element& s, + Index i); std::vector<Type> parseParamOrLocal(Element& s); std::vector<NameType> parseParamOrLocal(Element& s, size_t& localIndex); std::vector<Type> parseResults(Element& s); @@ -326,12 +337,7 @@ private: void stringToBinary(const char* input, size_t size, std::vector<char>& data); void parseMemory(Element& s, bool preParseImport = false); void parseData(Element& s); - void parseInnerData(Element& s, - Index i, - Name name, - bool hasExplicitName, - Expression* offset, - bool isPassive); + void parseInnerData(Element& s, Index i, std::unique_ptr<DataSegment>& seg); void parseExport(Element& s); void parseImport(Element& s); void parseGlobal(Element& s, bool preParseImport = false); |