summaryrefslogtreecommitdiff
path: root/src/wasm-s-parser.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/wasm-s-parser.h')
-rw-r--r--src/wasm-s-parser.h22
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);