diff options
author | Heejin Ahn <aheejin@gmail.com> | 2023-06-13 09:34:31 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-13 09:34:31 -0700 |
commit | d035c05e0e2b1aa6fc1f683b32924fc90f17b994 (patch) | |
tree | 154e480e6b4dd9f06ef02e3d164303731d8ecdad /src | |
parent | 585af93ec6a22feb8954bc118f0bff997d1fc165 (diff) | |
download | binaryen-d035c05e0e2b1aa6fc1f683b32924fc90f17b994.tar.gz binaryen-d035c05e0e2b1aa6fc1f683b32924fc90f17b994.tar.bz2 binaryen-d035c05e0e2b1aa6fc1f683b32924fc90f17b994.zip |
Rename WasmBinaryBuilder to WasmBinaryReader (NFC) (#5767)
We have `WasmBinaryBuilder` that read binary into Binaryen IR and
`WasmBinaryWriter` that writes Binaryen IR to binary. To me
`WasmBinaryBuilder` sounds similar to `WasmBinaryWriter`, which builds
binary. How about renaming it to `WasmBinaryReader`?
Diffstat (limited to 'src')
-rw-r--r-- | src/binaryen-c.cpp | 2 | ||||
-rw-r--r-- | src/passes/Asyncify.cpp | 2 | ||||
-rw-r--r-- | src/passes/RoundTrip.cpp | 2 | ||||
-rw-r--r-- | src/wasm-binary.h | 8 | ||||
-rw-r--r-- | src/wasm/wasm-binary.cpp | 398 | ||||
-rw-r--r-- | src/wasm/wasm-io.cpp | 2 | ||||
-rw-r--r-- | src/wasm/wasm-s-parser.cpp | 2 |
7 files changed, 204 insertions, 212 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp index f1a3048c3..d075115e7 100644 --- a/src/binaryen-c.cpp +++ b/src/binaryen-c.cpp @@ -5802,7 +5802,7 @@ BinaryenModuleRef BinaryenModuleRead(char* input, size_t inputSize) { std::copy_n(input, inputSize, buffer.begin()); try { // TODO: allow providing features in the C API - WasmBinaryBuilder parser(*wasm, FeatureSet::MVP, buffer); + WasmBinaryReader parser(*wasm, FeatureSet::MVP, buffer); parser.read(); } catch (ParseException& p) { p.dump(std::cerr); diff --git a/src/passes/Asyncify.cpp b/src/passes/Asyncify.cpp index e9f923b1f..9ed201c45 100644 --- a/src/passes/Asyncify.cpp +++ b/src/passes/Asyncify.cpp @@ -444,7 +444,7 @@ public: // The lists contain human-readable strings. Turn them into the // internal escaped names for later comparisons for (auto& name : list) { - auto escaped = WasmBinaryBuilder::escape(name); + auto escaped = WasmBinaryReader::escape(name); unescaped[escaped.toString()] = name; if (name.find('*') != std::string::npos) { patterns.insert(escaped.toString()); diff --git a/src/passes/RoundTrip.cpp b/src/passes/RoundTrip.cpp index 0e289d529..dede8cbc5 100644 --- a/src/passes/RoundTrip.cpp +++ b/src/passes/RoundTrip.cpp @@ -38,7 +38,7 @@ struct RoundTrip : public Pass { WasmBinaryWriter(module, buffer).write(); ModuleUtils::clearModule(*module); auto input = buffer.getAsChars(); - WasmBinaryBuilder parser(*module, features, input); + WasmBinaryReader parser(*module, features, input); parser.setDWARF(getPassOptions().debugInfo); try { parser.read(); diff --git a/src/wasm-binary.h b/src/wasm-binary.h index 81cc80d22..745358cbc 100644 --- a/src/wasm-binary.h +++ b/src/wasm-binary.h @@ -1431,7 +1431,7 @@ private: void prepare(); }; -class WasmBinaryBuilder { +class WasmBinaryReader { Module& wasm; MixedArena& allocator; const std::vector<char>& input; @@ -1457,9 +1457,9 @@ class WasmBinaryBuilder { std::vector<HeapType> types; public: - WasmBinaryBuilder(Module& wasm, - FeatureSet features, - const std::vector<char>& input); + WasmBinaryReader(Module& wasm, + FeatureSet features, + const std::vector<char>& input); void setDebugInfo(bool value) { debugInfo = value; } void setDWARF(bool value) { DWARF = value; } diff --git a/src/wasm/wasm-binary.cpp b/src/wasm/wasm-binary.cpp index ed27dd81a..4d51e0f43 100644 --- a/src/wasm/wasm-binary.cpp +++ b/src/wasm/wasm-binary.cpp @@ -1581,15 +1581,15 @@ void WasmBinaryWriter::writeField(const Field& field) { // reader -WasmBinaryBuilder::WasmBinaryBuilder(Module& wasm, - FeatureSet features, - const std::vector<char>& input) +WasmBinaryReader::WasmBinaryReader(Module& wasm, + FeatureSet features, + const std::vector<char>& input) : wasm(wasm), allocator(wasm.allocator), input(input), sourceMap(nullptr), nextDebugLocation{0, 0, {0, 0, 0}}, debugLocation() { wasm.features = features; } -bool WasmBinaryBuilder::hasDWARFSections() { +bool WasmBinaryReader::hasDWARFSections() { assert(pos == 0); getInt32(); // magic getInt32(); // version @@ -1614,7 +1614,7 @@ bool WasmBinaryBuilder::hasDWARFSections() { return has; } -void WasmBinaryBuilder::read() { +void WasmBinaryReader::read() { if (DWARF) { // In order to update dwarf, we must store info about each IR node's // binary position. This has noticeable memory overhead, so we don't do it @@ -1719,7 +1719,7 @@ void WasmBinaryBuilder::read() { processNames(); } -void WasmBinaryBuilder::readCustomSection(size_t payloadLen) { +void WasmBinaryReader::readCustomSection(size_t payloadLen) { BYN_TRACE("== readCustomSection\n"); auto oldPos = pos; Name sectionName = getInlineString(); @@ -1755,7 +1755,7 @@ void WasmBinaryBuilder::readCustomSection(size_t payloadLen) { } } -std::string_view WasmBinaryBuilder::getByteView(size_t size) { +std::string_view WasmBinaryReader::getByteView(size_t size) { if (size > input.size() || pos > input.size() - size) { throwError("unexpected end of input"); } @@ -1763,7 +1763,7 @@ std::string_view WasmBinaryBuilder::getByteView(size_t size) { return {input.data() + (pos - size), size}; } -uint8_t WasmBinaryBuilder::getInt8() { +uint8_t WasmBinaryReader::getInt8() { if (!more()) { throwError("unexpected end of input"); } @@ -1771,7 +1771,7 @@ uint8_t WasmBinaryBuilder::getInt8() { return input[pos++]; } -uint16_t WasmBinaryBuilder::getInt16() { +uint16_t WasmBinaryReader::getInt16() { BYN_TRACE("<==\n"); auto ret = uint16_t(getInt8()); ret |= uint16_t(getInt8()) << 8; @@ -1780,7 +1780,7 @@ uint16_t WasmBinaryBuilder::getInt16() { return ret; } -uint32_t WasmBinaryBuilder::getInt32() { +uint32_t WasmBinaryReader::getInt32() { BYN_TRACE("<==\n"); auto ret = uint32_t(getInt16()); ret |= uint32_t(getInt16()) << 16; @@ -1789,7 +1789,7 @@ uint32_t WasmBinaryBuilder::getInt32() { return ret; } -uint64_t WasmBinaryBuilder::getInt64() { +uint64_t WasmBinaryReader::getInt64() { BYN_TRACE("<==\n"); auto ret = uint64_t(getInt32()); ret |= uint64_t(getInt32()) << 32; @@ -1798,7 +1798,7 @@ uint64_t WasmBinaryBuilder::getInt64() { return ret; } -uint8_t WasmBinaryBuilder::getLaneIndex(size_t lanes) { +uint8_t WasmBinaryReader::getLaneIndex(size_t lanes) { BYN_TRACE("<==\n"); auto ret = getInt8(); if (ret >= lanes) { @@ -1808,7 +1808,7 @@ uint8_t WasmBinaryBuilder::getLaneIndex(size_t lanes) { return ret; } -Literal WasmBinaryBuilder::getFloat32Literal() { +Literal WasmBinaryReader::getFloat32Literal() { BYN_TRACE("<==\n"); auto ret = Literal(getInt32()); ret = ret.castToF32(); @@ -1816,7 +1816,7 @@ Literal WasmBinaryBuilder::getFloat32Literal() { return ret; } -Literal WasmBinaryBuilder::getFloat64Literal() { +Literal WasmBinaryReader::getFloat64Literal() { BYN_TRACE("<==\n"); auto ret = Literal(getInt64()); ret = ret.castToF64(); @@ -1824,7 +1824,7 @@ Literal WasmBinaryBuilder::getFloat64Literal() { return ret; } -Literal WasmBinaryBuilder::getVec128Literal() { +Literal WasmBinaryReader::getVec128Literal() { BYN_TRACE("<==\n"); std::array<uint8_t, 16> bytes; for (auto i = 0; i < 16; ++i) { @@ -1835,7 +1835,7 @@ Literal WasmBinaryBuilder::getVec128Literal() { return ret; } -uint32_t WasmBinaryBuilder::getU32LEB() { +uint32_t WasmBinaryReader::getU32LEB() { BYN_TRACE("<==\n"); U32LEB ret; ret.read([&]() { return getInt8(); }); @@ -1843,7 +1843,7 @@ uint32_t WasmBinaryBuilder::getU32LEB() { return ret.value; } -uint64_t WasmBinaryBuilder::getU64LEB() { +uint64_t WasmBinaryReader::getU64LEB() { BYN_TRACE("<==\n"); U64LEB ret; ret.read([&]() { return getInt8(); }); @@ -1851,7 +1851,7 @@ uint64_t WasmBinaryBuilder::getU64LEB() { return ret.value; } -int32_t WasmBinaryBuilder::getS32LEB() { +int32_t WasmBinaryReader::getS32LEB() { BYN_TRACE("<==\n"); S32LEB ret; ret.read([&]() { return (int8_t)getInt8(); }); @@ -1859,7 +1859,7 @@ int32_t WasmBinaryBuilder::getS32LEB() { return ret.value; } -int64_t WasmBinaryBuilder::getS64LEB() { +int64_t WasmBinaryReader::getS64LEB() { BYN_TRACE("<==\n"); S64LEB ret; ret.read([&]() { return (int8_t)getInt8(); }); @@ -1867,7 +1867,7 @@ int64_t WasmBinaryBuilder::getS64LEB() { return ret.value; } -bool WasmBinaryBuilder::getBasicType(int32_t code, Type& out) { +bool WasmBinaryReader::getBasicType(int32_t code, Type& out) { switch (code) { case BinaryConsts::EncodedType::i32: out = Type::i32; @@ -1931,7 +1931,7 @@ bool WasmBinaryBuilder::getBasicType(int32_t code, Type& out) { } } -bool WasmBinaryBuilder::getBasicHeapType(int64_t code, HeapType& out) { +bool WasmBinaryReader::getBasicHeapType(int64_t code, HeapType& out) { switch (code) { case BinaryConsts::EncodedHeapType::func: out = HeapType::func; @@ -1980,7 +1980,7 @@ bool WasmBinaryBuilder::getBasicHeapType(int64_t code, HeapType& out) { } } -Type WasmBinaryBuilder::getType(int initial) { +Type WasmBinaryReader::getType(int initial) { // Single value types are negative; signature indices are non-negative if (initial >= 0) { // TODO: Handle block input types properly. @@ -2004,9 +2004,9 @@ Type WasmBinaryBuilder::getType(int initial) { WASM_UNREACHABLE("unexpected type"); } -Type WasmBinaryBuilder::getType() { return getType(getS32LEB()); } +Type WasmBinaryReader::getType() { return getType(getS32LEB()); } -HeapType WasmBinaryBuilder::getHeapType() { +HeapType WasmBinaryReader::getHeapType() { auto type = getS64LEB(); // TODO: Actually s33 // Single heap types are negative; heap type indices are non-negative if (type >= 0) { @@ -2024,7 +2024,7 @@ HeapType WasmBinaryBuilder::getHeapType() { WASM_UNREACHABLE("unexpected type"); } -HeapType WasmBinaryBuilder::getIndexedHeapType() { +HeapType WasmBinaryReader::getIndexedHeapType() { auto index = getU32LEB(); if (index >= types.size()) { throwError("invalid heap type index: " + std::to_string(index)); @@ -2032,7 +2032,7 @@ HeapType WasmBinaryBuilder::getIndexedHeapType() { return types[index]; } -Type WasmBinaryBuilder::getConcreteType() { +Type WasmBinaryReader::getConcreteType() { auto type = getType(); if (!type.isConcrete()) { throw ParseException("non-concrete type when one expected"); @@ -2040,7 +2040,7 @@ Type WasmBinaryBuilder::getConcreteType() { return type; } -Name WasmBinaryBuilder::getInlineString() { +Name WasmBinaryReader::getInlineString() { BYN_TRACE("<==\n"); auto len = getU32LEB(); auto data = getByteView(len); @@ -2049,46 +2049,46 @@ Name WasmBinaryBuilder::getInlineString() { return Name(data); } -void WasmBinaryBuilder::verifyInt8(int8_t x) { +void WasmBinaryReader::verifyInt8(int8_t x) { int8_t y = getInt8(); if (x != y) { throwError("surprising value"); } } -void WasmBinaryBuilder::verifyInt16(int16_t x) { +void WasmBinaryReader::verifyInt16(int16_t x) { int16_t y = getInt16(); if (x != y) { throwError("surprising value"); } } -void WasmBinaryBuilder::verifyInt32(int32_t x) { +void WasmBinaryReader::verifyInt32(int32_t x) { int32_t y = getInt32(); if (x != y) { throwError("surprising value"); } } -void WasmBinaryBuilder::verifyInt64(int64_t x) { +void WasmBinaryReader::verifyInt64(int64_t x) { int64_t y = getInt64(); if (x != y) { throwError("surprising value"); } } -void WasmBinaryBuilder::readHeader() { +void WasmBinaryReader::readHeader() { BYN_TRACE("== readHeader\n"); verifyInt32(BinaryConsts::Magic); verifyInt32(BinaryConsts::Version); } -void WasmBinaryBuilder::readStart() { +void WasmBinaryReader::readStart() { BYN_TRACE("== readStart\n"); startIndex = getU32LEB(); } -void WasmBinaryBuilder::readMemories() { +void WasmBinaryReader::readMemories() { BYN_TRACE("== readMemories\n"); auto num = getU32LEB(); BYN_TRACE("num: " << num << std::endl); @@ -2104,7 +2104,7 @@ void WasmBinaryBuilder::readMemories() { } } -void WasmBinaryBuilder::readTypes() { +void WasmBinaryReader::readTypes() { BYN_TRACE("== readTypes\n"); TypeBuilder builder(getU32LEB()); BYN_TRACE("num: " << builder.size() << std::endl); @@ -2281,67 +2281,67 @@ void WasmBinaryBuilder::readTypes() { types = *result; } -Name WasmBinaryBuilder::getFunctionName(Index index) { +Name WasmBinaryReader::getFunctionName(Index index) { if (index >= wasm.functions.size()) { throwError("invalid function index"); } return wasm.functions[index]->name; } -Name WasmBinaryBuilder::getTableName(Index index) { +Name WasmBinaryReader::getTableName(Index index) { if (index >= wasm.tables.size()) { throwError("invalid table index"); } return wasm.tables[index]->name; } -Name WasmBinaryBuilder::getMemoryName(Index index) { +Name WasmBinaryReader::getMemoryName(Index index) { if (index >= wasm.memories.size()) { throwError("invalid memory index"); } return wasm.memories[index]->name; } -Name WasmBinaryBuilder::getGlobalName(Index index) { +Name WasmBinaryReader::getGlobalName(Index index) { if (index >= wasm.globals.size()) { throwError("invalid global index"); } return wasm.globals[index]->name; } -Name WasmBinaryBuilder::getTagName(Index index) { +Name WasmBinaryReader::getTagName(Index index) { if (index >= wasm.tags.size()) { throwError("invalid tag index"); } return wasm.tags[index]->name; } -Name WasmBinaryBuilder::getDataName(Index index) { +Name WasmBinaryReader::getDataName(Index index) { if (index >= wasm.dataSegments.size()) { throwError("invalid data segment index"); } return wasm.dataSegments[index]->name; } -Name WasmBinaryBuilder::getElemName(Index index) { +Name WasmBinaryReader::getElemName(Index index) { if (index >= wasm.elementSegments.size()) { throwError("invalid element segment index"); } return wasm.elementSegments[index]->name; } -Memory* WasmBinaryBuilder::getMemory(Index index) { +Memory* WasmBinaryReader::getMemory(Index index) { if (index < wasm.memories.size()) { return wasm.memories[index].get(); } throwError("Memory index out of range."); } -void WasmBinaryBuilder::getResizableLimits(Address& initial, - Address& max, - bool& shared, - Type& indexType, - Address defaultIfNoMax) { +void WasmBinaryReader::getResizableLimits(Address& initial, + Address& max, + bool& shared, + Type& indexType, + Address defaultIfNoMax) { auto flags = getU32LEB(); bool hasMax = (flags & BinaryConsts::HasMaximum) != 0; bool isShared = (flags & BinaryConsts::IsShared) != 0; @@ -2359,7 +2359,7 @@ void WasmBinaryBuilder::getResizableLimits(Address& initial, } } -void WasmBinaryBuilder::readImports() { +void WasmBinaryReader::readImports() { BYN_TRACE("== readImports\n"); size_t num = getU32LEB(); BYN_TRACE("num: " << num << std::endl); @@ -2462,18 +2462,18 @@ void WasmBinaryBuilder::readImports() { } } -Name WasmBinaryBuilder::getNextLabel() { +Name WasmBinaryReader::getNextLabel() { requireFunctionContext("getting a label"); return Name("label$" + std::to_string(nextLabel++)); } -void WasmBinaryBuilder::requireFunctionContext(const char* error) { +void WasmBinaryReader::requireFunctionContext(const char* error) { if (!currFunction) { throwError(std::string("in a non-function context: ") + error); } } -void WasmBinaryBuilder::readFunctionSignatures() { +void WasmBinaryReader::readFunctionSignatures() { BYN_TRACE("== readFunctionSignatures\n"); size_t num = getU32LEB(); BYN_TRACE("num: " << num << std::endl); @@ -2486,7 +2486,7 @@ void WasmBinaryBuilder::readFunctionSignatures() { } } -HeapType WasmBinaryBuilder::getTypeByIndex(Index index) { +HeapType WasmBinaryReader::getTypeByIndex(Index index) { if (index >= types.size()) { throwError("invalid type index " + std::to_string(index) + " / " + std::to_string(types.size())); @@ -2494,14 +2494,14 @@ HeapType WasmBinaryBuilder::getTypeByIndex(Index index) { return types[index]; } -HeapType WasmBinaryBuilder::getTypeByFunctionIndex(Index index) { +HeapType WasmBinaryReader::getTypeByFunctionIndex(Index index) { if (index >= functionTypes.size()) { throwError("invalid function index"); } return functionTypes[index]; } -Signature WasmBinaryBuilder::getSignatureByTypeIndex(Index index) { +Signature WasmBinaryReader::getSignatureByTypeIndex(Index index) { auto heapType = getTypeByIndex(index); if (!heapType.isSignature()) { throwError("invalid signature type " + heapType.toString()); @@ -2509,7 +2509,7 @@ Signature WasmBinaryBuilder::getSignatureByTypeIndex(Index index) { return heapType.getSignature(); } -Signature WasmBinaryBuilder::getSignatureByFunctionIndex(Index index) { +Signature WasmBinaryReader::getSignatureByFunctionIndex(Index index) { auto heapType = getTypeByFunctionIndex(index); if (!heapType.isSignature()) { throwError("invalid signature type " + heapType.toString()); @@ -2517,7 +2517,7 @@ Signature WasmBinaryBuilder::getSignatureByFunctionIndex(Index index) { return heapType.getSignature(); } -void WasmBinaryBuilder::readFunctions() { +void WasmBinaryReader::readFunctions() { BYN_TRACE("== readFunctions\n"); auto numImports = wasm.functions.size(); size_t total = getU32LEB(); @@ -2613,7 +2613,7 @@ void WasmBinaryBuilder::readFunctions() { BYN_TRACE(" end function bodies\n"); } -void WasmBinaryBuilder::readVars() { +void WasmBinaryReader::readVars() { size_t numLocalTypes = getU32LEB(); for (size_t t = 0; t < numLocalTypes; t++) { auto num = getU32LEB(); @@ -2625,7 +2625,7 @@ void WasmBinaryBuilder::readVars() { } } -void WasmBinaryBuilder::readExports() { +void WasmBinaryReader::readExports() { BYN_TRACE("== readExports\n"); size_t num = getU32LEB(); BYN_TRACE("num: " << num << std::endl); @@ -2670,7 +2670,7 @@ static int32_t readBase64VLQ(std::istream& in) { return value & 1 ? -int32_t(value >> 1) : int32_t(value >> 1); } -void WasmBinaryBuilder::readSourceMapHeader() { +void WasmBinaryReader::readSourceMapHeader() { if (!sourceMap) { return; } @@ -2785,7 +2785,7 @@ void WasmBinaryBuilder::readSourceMapHeader() { position, position, {fileIndex, lineNumber, columnNumber}}; } -void WasmBinaryBuilder::readNextDebugLocation() { +void WasmBinaryReader::readNextDebugLocation() { if (!sourceMap) { return; } @@ -2832,7 +2832,7 @@ void WasmBinaryBuilder::readNextDebugLocation() { } } -Expression* WasmBinaryBuilder::readExpression() { +Expression* WasmBinaryReader::readExpression() { assert(depth == 0); processExpressions(); if (expressionStack.size() != 1) { @@ -2843,7 +2843,7 @@ Expression* WasmBinaryBuilder::readExpression() { return ret; } -void WasmBinaryBuilder::readStrings() { +void WasmBinaryReader::readStrings() { auto reserved = getU32LEB(); if (reserved != 0) { throwError("unexpected reserved value in strings"); @@ -2855,7 +2855,7 @@ void WasmBinaryBuilder::readStrings() { } } -void WasmBinaryBuilder::readGlobals() { +void WasmBinaryReader::readGlobals() { BYN_TRACE("== readGlobals\n"); size_t num = getU32LEB(); BYN_TRACE("num: " << num << std::endl); @@ -2875,7 +2875,7 @@ void WasmBinaryBuilder::readGlobals() { } } -void WasmBinaryBuilder::processExpressions() { +void WasmBinaryReader::processExpressions() { BYN_TRACE("== processExpressions\n"); unreachableInTheWasmSense = false; while (1) { @@ -2919,7 +2919,7 @@ void WasmBinaryBuilder::processExpressions() { } } -void WasmBinaryBuilder::skipUnreachableCode() { +void WasmBinaryReader::skipUnreachableCode() { BYN_TRACE("== skipUnreachableCode\n"); // preserve the stack, and restore it. it contains the instruction that made // us unreachable, and we can ignore anything after it. things after it may @@ -2958,7 +2958,7 @@ void WasmBinaryBuilder::skipUnreachableCode() { } } -void WasmBinaryBuilder::pushExpression(Expression* curr) { +void WasmBinaryReader::pushExpression(Expression* curr) { auto type = curr->type; if (type.isTuple()) { // Store tuple to local and push individual extracted values @@ -2993,7 +2993,7 @@ void WasmBinaryBuilder::pushExpression(Expression* curr) { } } -Expression* WasmBinaryBuilder::popExpression() { +Expression* WasmBinaryReader::popExpression() { BYN_TRACE("== popExpression\n"); if (expressionStack.empty()) { if (unreachableInTheWasmSense) { @@ -3013,7 +3013,7 @@ Expression* WasmBinaryBuilder::popExpression() { return ret; } -Expression* WasmBinaryBuilder::popNonVoidExpression() { +Expression* WasmBinaryReader::popNonVoidExpression() { auto* ret = popExpression(); if (ret->type != Type::none) { return ret; @@ -3049,7 +3049,7 @@ Expression* WasmBinaryBuilder::popNonVoidExpression() { return block; } -Expression* WasmBinaryBuilder::popTuple(size_t numElems) { +Expression* WasmBinaryReader::popTuple(size_t numElems) { Builder builder(wasm); std::vector<Expression*> elements; elements.resize(numElems); @@ -3068,7 +3068,7 @@ Expression* WasmBinaryBuilder::popTuple(size_t numElems) { return Builder(wasm).makeTupleMake(std::move(elements)); } -Expression* WasmBinaryBuilder::popTypedExpression(Type type) { +Expression* WasmBinaryReader::popTypedExpression(Type type) { if (type.isSingle()) { return popNonVoidExpression(); } else if (type.isTuple()) { @@ -3078,13 +3078,13 @@ Expression* WasmBinaryBuilder::popTypedExpression(Type type) { } } -void WasmBinaryBuilder::validateBinary() { +void WasmBinaryReader::validateBinary() { if (hasDataCount && wasm.dataSegments.size() != dataCount) { throwError("Number of segments does not agree with DataCount section"); } } -void WasmBinaryBuilder::processNames() { +void WasmBinaryReader::processNames() { // now that we have names, apply things if (startIndex != static_cast<Index>(-1)) { @@ -3157,13 +3157,13 @@ void WasmBinaryBuilder::processNames() { wasm.updateMaps(); } -void WasmBinaryBuilder::readDataSegmentCount() { +void WasmBinaryReader::readDataSegmentCount() { BYN_TRACE("== readDataSegmentCount\n"); hasDataCount = true; dataCount = getU32LEB(); } -void WasmBinaryBuilder::readDataSegments() { +void WasmBinaryReader::readDataSegments() { BYN_TRACE("== readDataSegments\n"); auto num = getU32LEB(); for (size_t i = 0; i < num; i++) { @@ -3193,7 +3193,7 @@ void WasmBinaryBuilder::readDataSegments() { } } -void WasmBinaryBuilder::readTableDeclarations() { +void WasmBinaryReader::readTableDeclarations() { BYN_TRACE("== readTableDeclarations\n"); auto numTables = getU32LEB(); @@ -3218,7 +3218,7 @@ void WasmBinaryBuilder::readTableDeclarations() { } } -void WasmBinaryBuilder::readElementSegments() { +void WasmBinaryReader::readElementSegments() { BYN_TRACE("== readElementSegments\n"); auto numSegments = getU32LEB(); if (numSegments >= Table::kMaxSize) { @@ -3292,7 +3292,7 @@ void WasmBinaryBuilder::readElementSegments() { } } -void WasmBinaryBuilder::readTags() { +void WasmBinaryReader::readTags() { BYN_TRACE("== readTags\n"); size_t numTags = getU32LEB(); BYN_TRACE("num: " << numTags << std::endl); @@ -3318,7 +3318,7 @@ static char formatNibble(int nibble) { return nibble < 10 ? '0' + nibble : 'a' - 10 + nibble; } -Name WasmBinaryBuilder::escape(Name name) { +Name WasmBinaryReader::escape(Name name) { bool allIdChars = true; for (char c : name.str) { if (!(allIdChars = isIdChar(c))) { @@ -3365,7 +3365,7 @@ public: // Returns a unique, escaped name. Notes that name for the items to follow to // keep them unique as well. Name process(Name name) { - return deduplicate(WasmBinaryBuilder::escape(name)); + return deduplicate(WasmBinaryReader::escape(name)); } // After processing the names section entries, which set explicit names, we @@ -3400,7 +3400,7 @@ private: } // anonymous namespace -void WasmBinaryBuilder::readNames(size_t payloadLen) { +void WasmBinaryReader::readNames(size_t payloadLen) { BYN_TRACE("== readNames\n"); auto sectionPos = pos; uint32_t lastType = 0; @@ -3630,7 +3630,7 @@ void WasmBinaryBuilder::readNames(size_t payloadLen) { } } -void WasmBinaryBuilder::readFeatures(size_t payloadLen) { +void WasmBinaryReader::readFeatures(size_t payloadLen) { wasm.hasFeaturesSection = true; auto sectionPos = pos; @@ -3706,7 +3706,7 @@ void WasmBinaryBuilder::readFeatures(size_t payloadLen) { } } -void WasmBinaryBuilder::readDylink(size_t payloadLen) { +void WasmBinaryReader::readDylink(size_t payloadLen) { wasm.dylinkSection = std::make_unique<DylinkSection>(); auto sectionPos = pos; @@ -3727,7 +3727,7 @@ void WasmBinaryBuilder::readDylink(size_t payloadLen) { } } -void WasmBinaryBuilder::readDylink0(size_t payloadLen) { +void WasmBinaryReader::readDylink0(size_t payloadLen) { BYN_TRACE("== readDylink0\n"); auto sectionPos = pos; uint32_t lastType = 0; @@ -3769,7 +3769,7 @@ void WasmBinaryBuilder::readDylink0(size_t payloadLen) { } } -BinaryConsts::ASTNodes WasmBinaryBuilder::readExpression(Expression*& curr) { +BinaryConsts::ASTNodes WasmBinaryReader::readExpression(Expression*& curr) { if (pos == endOfFunction) { throwError("Reached function end without seeing End opcode"); } @@ -4178,15 +4178,13 @@ BinaryConsts::ASTNodes WasmBinaryBuilder::readExpression(Expression*& curr) { return BinaryConsts::ASTNodes(code); } -void WasmBinaryBuilder::startControlFlow(Expression* curr) { +void WasmBinaryReader::startControlFlow(Expression* curr) { if (DWARF && currFunction) { controlFlowStack.push_back(curr); } } -void WasmBinaryBuilder::pushBlockElements(Block* curr, - Type type, - size_t start) { +void WasmBinaryReader::pushBlockElements(Block* curr, Type type, size_t start) { assert(start <= expressionStack.size()); // The results of this block are the last values pushed to the expressionStack Expression* results = nullptr; @@ -4224,7 +4222,7 @@ void WasmBinaryBuilder::pushBlockElements(Block* curr, } } -void WasmBinaryBuilder::visitBlock(Block* curr) { +void WasmBinaryReader::visitBlock(Block* curr) { BYN_TRACE("zz node: Block\n"); startControlFlow(curr); // special-case Block and de-recurse nested blocks in their first position, as @@ -4278,7 +4276,7 @@ void WasmBinaryBuilder::visitBlock(Block* curr) { } // Gets a block of expressions. If it's just one, return that singleton. -Expression* WasmBinaryBuilder::getBlockOrSingleton(Type type) { +Expression* WasmBinaryReader::getBlockOrSingleton(Type type) { Name label = getNextLabel(); breakStack.push_back({label, type}); auto start = expressionStack.size(); @@ -4305,7 +4303,7 @@ Expression* WasmBinaryBuilder::getBlockOrSingleton(Type type) { return block; } -void WasmBinaryBuilder::visitIf(If* curr) { +void WasmBinaryReader::visitIf(If* curr) { BYN_TRACE("zz node: If\n"); startControlFlow(curr); curr->type = getType(); @@ -4320,7 +4318,7 @@ void WasmBinaryBuilder::visitIf(If* curr) { } } -void WasmBinaryBuilder::visitLoop(Loop* curr) { +void WasmBinaryReader::visitLoop(Loop* curr) { BYN_TRACE("zz node: Loop\n"); startControlFlow(curr); curr->type = getType(); @@ -4350,8 +4348,7 @@ void WasmBinaryBuilder::visitLoop(Loop* curr) { curr->finalize(curr->type); } -WasmBinaryBuilder::BreakTarget -WasmBinaryBuilder::getBreakTarget(int32_t offset) { +WasmBinaryReader::BreakTarget WasmBinaryReader::getBreakTarget(int32_t offset) { BYN_TRACE("getBreakTarget " << offset << std::endl); if (breakStack.size() < 1 + size_t(offset)) { throwError("bad breakindex (low)"); @@ -4371,7 +4368,7 @@ WasmBinaryBuilder::getBreakTarget(int32_t offset) { return ret; } -Name WasmBinaryBuilder::getExceptionTargetName(int32_t offset) { +Name WasmBinaryReader::getExceptionTargetName(int32_t offset) { BYN_TRACE("getExceptionTarget " << offset << std::endl); // We always start parsing a function by creating a block label and pushing it // in breakStack in getBlockOrSingleton, so if a 'delegate''s target is that @@ -4393,7 +4390,7 @@ Name WasmBinaryBuilder::getExceptionTargetName(int32_t offset) { return ret.name; } -void WasmBinaryBuilder::visitBreak(Break* curr, uint8_t code) { +void WasmBinaryReader::visitBreak(Break* curr, uint8_t code) { BYN_TRACE("zz node: Break, code " << int32_t(code) << std::endl); BreakTarget target = getBreakTarget(getU32LEB()); curr->name = target.name; @@ -4406,7 +4403,7 @@ void WasmBinaryBuilder::visitBreak(Break* curr, uint8_t code) { curr->finalize(); } -void WasmBinaryBuilder::visitSwitch(Switch* curr) { +void WasmBinaryReader::visitSwitch(Switch* curr) { BYN_TRACE("zz node: Switch\n"); curr->condition = popNonVoidExpression(); auto numTargets = getU32LEB(); @@ -4423,7 +4420,7 @@ void WasmBinaryBuilder::visitSwitch(Switch* curr) { curr->finalize(); } -void WasmBinaryBuilder::visitCall(Call* curr) { +void WasmBinaryReader::visitCall(Call* curr) { BYN_TRACE("zz node: Call\n"); auto index = getU32LEB(); auto sig = getSignatureByFunctionIndex(index); @@ -4438,7 +4435,7 @@ void WasmBinaryBuilder::visitCall(Call* curr) { curr->finalize(); } -void WasmBinaryBuilder::visitCallIndirect(CallIndirect* curr) { +void WasmBinaryReader::visitCallIndirect(CallIndirect* curr) { BYN_TRACE("zz node: CallIndirect\n"); auto index = getU32LEB(); curr->heapType = getTypeByIndex(index); @@ -4455,7 +4452,7 @@ void WasmBinaryBuilder::visitCallIndirect(CallIndirect* curr) { curr->finalize(); } -void WasmBinaryBuilder::visitLocalGet(LocalGet* curr) { +void WasmBinaryReader::visitLocalGet(LocalGet* curr) { BYN_TRACE("zz node: LocalGet " << pos << std::endl); requireFunctionContext("local.get"); curr->index = getU32LEB(); @@ -4466,7 +4463,7 @@ void WasmBinaryBuilder::visitLocalGet(LocalGet* curr) { curr->finalize(); } -void WasmBinaryBuilder::visitLocalSet(LocalSet* curr, uint8_t code) { +void WasmBinaryReader::visitLocalSet(LocalSet* curr, uint8_t code) { BYN_TRACE("zz node: Set|LocalTee\n"); requireFunctionContext("local.set outside of function"); curr->index = getU32LEB(); @@ -4482,7 +4479,7 @@ void WasmBinaryBuilder::visitLocalSet(LocalSet* curr, uint8_t code) { curr->finalize(); } -void WasmBinaryBuilder::visitGlobalGet(GlobalGet* curr) { +void WasmBinaryReader::visitGlobalGet(GlobalGet* curr) { BYN_TRACE("zz node: GlobalGet " << pos << std::endl); auto index = getU32LEB(); if (index >= wasm.globals.size()) { @@ -4494,7 +4491,7 @@ void WasmBinaryBuilder::visitGlobalGet(GlobalGet* curr) { globalRefs[index].push_back(&curr->name); // we don't know the final name yet } -void WasmBinaryBuilder::visitGlobalSet(GlobalSet* curr) { +void WasmBinaryReader::visitGlobalSet(GlobalSet* curr) { BYN_TRACE("zz node: GlobalSet\n"); auto index = getU32LEB(); if (index >= wasm.globals.size()) { @@ -4506,7 +4503,7 @@ void WasmBinaryBuilder::visitGlobalSet(GlobalSet* curr) { curr->finalize(); } -Index WasmBinaryBuilder::readMemoryAccess(Address& alignment, Address& offset) { +Index WasmBinaryReader::readMemoryAccess(Address& alignment, Address& offset) { auto rawAlignment = getU32LEB(); bool hasMemIdx = false; Index memIdx = 0; @@ -4535,9 +4532,9 @@ Index WasmBinaryBuilder::readMemoryAccess(Address& alignment, Address& offset) { return memIdx; } -bool WasmBinaryBuilder::maybeVisitLoad(Expression*& out, - uint8_t code, - bool isAtomic) { +bool WasmBinaryReader::maybeVisitLoad(Expression*& out, + uint8_t code, + bool isAtomic) { Load* curr; auto allocate = [&]() { curr = allocator.alloc<Load>(); @@ -4675,9 +4672,9 @@ bool WasmBinaryBuilder::maybeVisitLoad(Expression*& out, return true; } -bool WasmBinaryBuilder::maybeVisitStore(Expression*& out, - uint8_t code, - bool isAtomic) { +bool WasmBinaryReader::maybeVisitStore(Expression*& out, + uint8_t code, + bool isAtomic) { Store* curr; if (!isAtomic) { switch (code) { @@ -4782,7 +4779,7 @@ bool WasmBinaryBuilder::maybeVisitStore(Expression*& out, return true; } -bool WasmBinaryBuilder::maybeVisitAtomicRMW(Expression*& out, uint8_t code) { +bool WasmBinaryReader::maybeVisitAtomicRMW(Expression*& out, uint8_t code) { if (code < BinaryConsts::AtomicRMWOps_Begin || code > BinaryConsts::AtomicRMWOps_End) { return false; @@ -4846,8 +4843,7 @@ bool WasmBinaryBuilder::maybeVisitAtomicRMW(Expression*& out, uint8_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitAtomicCmpxchg(Expression*& out, - uint8_t code) { +bool WasmBinaryReader::maybeVisitAtomicCmpxchg(Expression*& out, uint8_t code) { if (code < BinaryConsts::AtomicCmpxchgOps_Begin || code > BinaryConsts::AtomicCmpxchgOps_End) { return false; @@ -4900,7 +4896,7 @@ bool WasmBinaryBuilder::maybeVisitAtomicCmpxchg(Expression*& out, return true; } -bool WasmBinaryBuilder::maybeVisitAtomicWait(Expression*& out, uint8_t code) { +bool WasmBinaryReader::maybeVisitAtomicWait(Expression*& out, uint8_t code) { if (code < BinaryConsts::I32AtomicWait || code > BinaryConsts::I64AtomicWait) { return false; @@ -4933,7 +4929,7 @@ bool WasmBinaryBuilder::maybeVisitAtomicWait(Expression*& out, uint8_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitAtomicNotify(Expression*& out, uint8_t code) { +bool WasmBinaryReader::maybeVisitAtomicNotify(Expression*& out, uint8_t code) { if (code != BinaryConsts::AtomicNotify) { return false; } @@ -4954,7 +4950,7 @@ bool WasmBinaryBuilder::maybeVisitAtomicNotify(Expression*& out, uint8_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitAtomicFence(Expression*& out, uint8_t code) { +bool WasmBinaryReader::maybeVisitAtomicFence(Expression*& out, uint8_t code) { if (code != BinaryConsts::AtomicFence) { return false; } @@ -4966,7 +4962,7 @@ bool WasmBinaryBuilder::maybeVisitAtomicFence(Expression*& out, uint8_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitConst(Expression*& out, uint8_t code) { +bool WasmBinaryReader::maybeVisitConst(Expression*& out, uint8_t code) { Const* curr; BYN_TRACE("zz node: Const, code " << code << std::endl); switch (code) { @@ -4995,7 +4991,7 @@ bool WasmBinaryBuilder::maybeVisitConst(Expression*& out, uint8_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitUnary(Expression*& out, uint8_t code) { +bool WasmBinaryReader::maybeVisitUnary(Expression*& out, uint8_t code) { Unary* curr; switch (code) { case BinaryConsts::I32Clz: @@ -5222,7 +5218,7 @@ bool WasmBinaryBuilder::maybeVisitUnary(Expression*& out, uint8_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitTruncSat(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitTruncSat(Expression*& out, uint32_t code) { Unary* curr; switch (code) { case BinaryConsts::I32STruncSatF32: @@ -5267,7 +5263,7 @@ bool WasmBinaryBuilder::maybeVisitTruncSat(Expression*& out, uint32_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitMemoryInit(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitMemoryInit(Expression*& out, uint32_t code) { if (code != BinaryConsts::MemoryInit) { return false; } @@ -5284,7 +5280,7 @@ bool WasmBinaryBuilder::maybeVisitMemoryInit(Expression*& out, uint32_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitDataDrop(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitDataDrop(Expression*& out, uint32_t code) { if (code != BinaryConsts::DataDrop) { return false; } @@ -5296,7 +5292,7 @@ bool WasmBinaryBuilder::maybeVisitDataDrop(Expression*& out, uint32_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitMemoryCopy(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitMemoryCopy(Expression*& out, uint32_t code) { if (code != BinaryConsts::MemoryCopy) { return false; } @@ -5313,7 +5309,7 @@ bool WasmBinaryBuilder::maybeVisitMemoryCopy(Expression*& out, uint32_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitMemoryFill(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitMemoryFill(Expression*& out, uint32_t code) { if (code != BinaryConsts::MemoryFill) { return false; } @@ -5328,7 +5324,7 @@ bool WasmBinaryBuilder::maybeVisitMemoryFill(Expression*& out, uint32_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitTableSize(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitTableSize(Expression*& out, uint32_t code) { if (code != BinaryConsts::TableSize) { return false; } @@ -5344,7 +5340,7 @@ bool WasmBinaryBuilder::maybeVisitTableSize(Expression*& out, uint32_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitTableGrow(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitTableGrow(Expression*& out, uint32_t code) { if (code != BinaryConsts::TableGrow) { return false; } @@ -5362,7 +5358,7 @@ bool WasmBinaryBuilder::maybeVisitTableGrow(Expression*& out, uint32_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitBinary(Expression*& out, uint8_t code) { +bool WasmBinaryReader::maybeVisitBinary(Expression*& out, uint8_t code) { Binary* curr; #define INT_TYPED_CODE(code) \ { \ @@ -5440,7 +5436,7 @@ bool WasmBinaryBuilder::maybeVisitBinary(Expression*& out, uint8_t code) { #undef FLOAT_TYPED_CODE } -bool WasmBinaryBuilder::maybeVisitSIMDBinary(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitSIMDBinary(Expression*& out, uint32_t code) { Binary* curr; switch (code) { case BinaryConsts::I8x16Eq: @@ -5961,7 +5957,7 @@ bool WasmBinaryBuilder::maybeVisitSIMDBinary(Expression*& out, uint32_t code) { out = curr; return true; } -bool WasmBinaryBuilder::maybeVisitSIMDUnary(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitSIMDUnary(Expression*& out, uint32_t code) { Unary* curr; switch (code) { case BinaryConsts::I8x16Splat: @@ -6249,7 +6245,7 @@ bool WasmBinaryBuilder::maybeVisitSIMDUnary(Expression*& out, uint32_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitSIMDConst(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitSIMDConst(Expression*& out, uint32_t code) { if (code != BinaryConsts::V128Const) { return false; } @@ -6260,7 +6256,7 @@ bool WasmBinaryBuilder::maybeVisitSIMDConst(Expression*& out, uint32_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitSIMDStore(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitSIMDStore(Expression*& out, uint32_t code) { if (code != BinaryConsts::V128Store) { return false; } @@ -6277,7 +6273,7 @@ bool WasmBinaryBuilder::maybeVisitSIMDStore(Expression*& out, uint32_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitSIMDExtract(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitSIMDExtract(Expression*& out, uint32_t code) { SIMDExtract* curr; switch (code) { case BinaryConsts::I8x16ExtractLaneS: @@ -6329,7 +6325,7 @@ bool WasmBinaryBuilder::maybeVisitSIMDExtract(Expression*& out, uint32_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitSIMDReplace(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitSIMDReplace(Expression*& out, uint32_t code) { SIMDReplace* curr; switch (code) { case BinaryConsts::I8x16ReplaceLane: @@ -6372,7 +6368,7 @@ bool WasmBinaryBuilder::maybeVisitSIMDReplace(Expression*& out, uint32_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitSIMDShuffle(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitSIMDShuffle(Expression*& out, uint32_t code) { if (code != BinaryConsts::I8x16Shuffle) { return false; } @@ -6387,7 +6383,7 @@ bool WasmBinaryBuilder::maybeVisitSIMDShuffle(Expression*& out, uint32_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitSIMDTernary(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitSIMDTernary(Expression*& out, uint32_t code) { SIMDTernary* curr; switch (code) { case BinaryConsts::V128Bitselect: @@ -6441,7 +6437,7 @@ bool WasmBinaryBuilder::maybeVisitSIMDTernary(Expression*& out, uint32_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitSIMDShift(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitSIMDShift(Expression*& out, uint32_t code) { SIMDShift* curr; switch (code) { case BinaryConsts::I8x16Shl: @@ -6502,7 +6498,7 @@ bool WasmBinaryBuilder::maybeVisitSIMDShift(Expression*& out, uint32_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitSIMDLoad(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitSIMDLoad(Expression*& out, uint32_t code) { if (code == BinaryConsts::V128Load) { auto* curr = allocator.alloc<Load>(); curr->type = Type::v128; @@ -6576,8 +6572,8 @@ bool WasmBinaryBuilder::maybeVisitSIMDLoad(Expression*& out, uint32_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitSIMDLoadStoreLane(Expression*& out, - uint32_t code) { +bool WasmBinaryReader::maybeVisitSIMDLoadStoreLane(Expression*& out, + uint32_t code) { SIMDLoadStoreLaneOp op; size_t lanes; switch (code) { @@ -6628,7 +6624,7 @@ bool WasmBinaryBuilder::maybeVisitSIMDLoadStoreLane(Expression*& out, return true; } -void WasmBinaryBuilder::visitSelect(Select* curr, uint8_t code) { +void WasmBinaryReader::visitSelect(Select* curr, uint8_t code) { BYN_TRACE("zz node: Select, code " << int32_t(code) << std::endl); if (code == BinaryConsts::SelectWithType) { size_t numTypes = getU32LEB(); @@ -6648,7 +6644,7 @@ void WasmBinaryBuilder::visitSelect(Select* curr, uint8_t code) { } } -void WasmBinaryBuilder::visitReturn(Return* curr) { +void WasmBinaryReader::visitReturn(Return* curr) { BYN_TRACE("zz node: Return\n"); requireFunctionContext("return"); Type type = currFunction->getResults(); @@ -6658,7 +6654,7 @@ void WasmBinaryBuilder::visitReturn(Return* curr) { curr->finalize(); } -void WasmBinaryBuilder::visitMemorySize(MemorySize* curr) { +void WasmBinaryReader::visitMemorySize(MemorySize* curr) { BYN_TRACE("zz node: MemorySize\n"); Index index = getU32LEB(); if (getMemory(index)->is64()) { @@ -6668,7 +6664,7 @@ void WasmBinaryBuilder::visitMemorySize(MemorySize* curr) { memoryRefs[index].push_back(&curr->memory); } -void WasmBinaryBuilder::visitMemoryGrow(MemoryGrow* curr) { +void WasmBinaryReader::visitMemoryGrow(MemoryGrow* curr) { BYN_TRACE("zz node: MemoryGrow\n"); curr->delta = popNonVoidExpression(); Index index = getU32LEB(); @@ -6678,30 +6674,30 @@ void WasmBinaryBuilder::visitMemoryGrow(MemoryGrow* curr) { memoryRefs[index].push_back(&curr->memory); } -void WasmBinaryBuilder::visitNop(Nop* curr) { BYN_TRACE("zz node: Nop\n"); } +void WasmBinaryReader::visitNop(Nop* curr) { BYN_TRACE("zz node: Nop\n"); } -void WasmBinaryBuilder::visitUnreachable(Unreachable* curr) { +void WasmBinaryReader::visitUnreachable(Unreachable* curr) { BYN_TRACE("zz node: Unreachable\n"); } -void WasmBinaryBuilder::visitDrop(Drop* curr) { +void WasmBinaryReader::visitDrop(Drop* curr) { BYN_TRACE("zz node: Drop\n"); curr->value = popNonVoidExpression(); curr->finalize(); } -void WasmBinaryBuilder::visitRefNull(RefNull* curr) { +void WasmBinaryReader::visitRefNull(RefNull* curr) { BYN_TRACE("zz node: RefNull\n"); curr->finalize(getHeapType().getBottom()); } -void WasmBinaryBuilder::visitRefIsNull(RefIsNull* curr) { +void WasmBinaryReader::visitRefIsNull(RefIsNull* curr) { BYN_TRACE("zz node: RefIsNull\n"); curr->value = popNonVoidExpression(); curr->finalize(); } -void WasmBinaryBuilder::visitRefFunc(RefFunc* curr) { +void WasmBinaryReader::visitRefFunc(RefFunc* curr) { BYN_TRACE("zz node: RefFunc\n"); Index index = getU32LEB(); // We don't know function names yet, so record this use to be updated later. @@ -6715,14 +6711,14 @@ void WasmBinaryBuilder::visitRefFunc(RefFunc* curr) { curr->finalize(Type(getTypeByFunctionIndex(index), NonNullable)); } -void WasmBinaryBuilder::visitRefEq(RefEq* curr) { +void WasmBinaryReader::visitRefEq(RefEq* curr) { BYN_TRACE("zz node: RefEq\n"); curr->right = popNonVoidExpression(); curr->left = popNonVoidExpression(); curr->finalize(); } -void WasmBinaryBuilder::visitTableGet(TableGet* curr) { +void WasmBinaryReader::visitTableGet(TableGet* curr) { BYN_TRACE("zz node: TableGet\n"); Index tableIdx = getU32LEB(); if (tableIdx >= wasm.tables.size()) { @@ -6735,7 +6731,7 @@ void WasmBinaryBuilder::visitTableGet(TableGet* curr) { tableRefs[tableIdx].push_back(&curr->table); } -void WasmBinaryBuilder::visitTableSet(TableSet* curr) { +void WasmBinaryReader::visitTableSet(TableSet* curr) { BYN_TRACE("zz node: TableSet\n"); Index tableIdx = getU32LEB(); if (tableIdx >= wasm.tables.size()) { @@ -6748,7 +6744,7 @@ void WasmBinaryBuilder::visitTableSet(TableSet* curr) { tableRefs[tableIdx].push_back(&curr->table); } -void WasmBinaryBuilder::visitTryOrTryInBlock(Expression*& out) { +void WasmBinaryReader::visitTryOrTryInBlock(Expression*& out) { BYN_TRACE("zz node: Try\n"); auto* curr = allocator.alloc<Try>(); startControlFlow(curr); @@ -6901,7 +6897,7 @@ void WasmBinaryBuilder::visitTryOrTryInBlock(Expression*& out) { breakTargetNames.erase(catchLabel); } -void WasmBinaryBuilder::visitThrow(Throw* curr) { +void WasmBinaryReader::visitThrow(Throw* curr) { BYN_TRACE("zz node: Throw\n"); auto index = getU32LEB(); if (index >= wasm.tags.size()) { @@ -6918,7 +6914,7 @@ void WasmBinaryBuilder::visitThrow(Throw* curr) { curr->finalize(); } -void WasmBinaryBuilder::visitRethrow(Rethrow* curr) { +void WasmBinaryReader::visitRethrow(Rethrow* curr) { BYN_TRACE("zz node: Rethrow\n"); curr->target = getExceptionTargetName(getU32LEB()); // This special target is valid only for delegates @@ -6929,7 +6925,7 @@ void WasmBinaryBuilder::visitRethrow(Rethrow* curr) { curr->finalize(); } -void WasmBinaryBuilder::visitCallRef(CallRef* curr) { +void WasmBinaryReader::visitCallRef(CallRef* curr) { BYN_TRACE("zz node: CallRef\n"); curr->target = popNonVoidExpression(); HeapType heapType = getTypeByIndex(getU32LEB()); @@ -6949,7 +6945,7 @@ void WasmBinaryBuilder::visitCallRef(CallRef* curr) { curr->finalize(sig.results); } -bool WasmBinaryBuilder::maybeVisitI31New(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitI31New(Expression*& out, uint32_t code) { if (code != BinaryConsts::I31New) { return false; } @@ -6960,7 +6956,7 @@ bool WasmBinaryBuilder::maybeVisitI31New(Expression*& out, uint32_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitI31Get(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitI31Get(Expression*& out, uint32_t code) { I31Get* curr; switch (code) { case BinaryConsts::I31GetS: @@ -6980,7 +6976,7 @@ bool WasmBinaryBuilder::maybeVisitI31Get(Expression*& out, uint32_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitRefTest(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitRefTest(Expression*& out, uint32_t code) { if (code == BinaryConsts::RefTestStatic || code == BinaryConsts::RefTest || code == BinaryConsts::RefTestNull) { bool legacy = code == BinaryConsts::RefTestStatic; @@ -6994,7 +6990,7 @@ bool WasmBinaryBuilder::maybeVisitRefTest(Expression*& out, uint32_t code) { return false; } -void WasmBinaryBuilder::visitRefAsCast(RefCast* curr, uint32_t code) { +void WasmBinaryReader::visitRefAsCast(RefCast* curr, uint32_t code) { // TODO: These instructions are deprecated. Remove them. switch (code) { case BinaryConsts::RefAsFunc: @@ -7011,7 +7007,7 @@ void WasmBinaryBuilder::visitRefAsCast(RefCast* curr, uint32_t code) { curr->finalize(); } -bool WasmBinaryBuilder::maybeVisitRefCast(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitRefCast(Expression*& out, uint32_t code) { if (code == BinaryConsts::RefCastStatic || code == BinaryConsts::RefCast || code == BinaryConsts::RefCastNull || code == BinaryConsts::RefCastNop) { bool legacy = code == BinaryConsts::RefCastStatic; @@ -7033,7 +7029,7 @@ bool WasmBinaryBuilder::maybeVisitRefCast(Expression*& out, uint32_t code) { return false; } -bool WasmBinaryBuilder::maybeVisitBrOn(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitBrOn(Expression*& out, uint32_t code) { Type castType = Type::none; BrOnOp op; switch (code) { @@ -7107,7 +7103,7 @@ bool WasmBinaryBuilder::maybeVisitBrOn(Expression*& out, uint32_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitStructNew(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitStructNew(Expression*& out, uint32_t code) { if (code == BinaryConsts::StructNew || code == BinaryConsts::StructNewDefault) { auto heapType = getIndexedHeapType(); @@ -7125,7 +7121,7 @@ bool WasmBinaryBuilder::maybeVisitStructNew(Expression*& out, uint32_t code) { return false; } -bool WasmBinaryBuilder::maybeVisitStructGet(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitStructGet(Expression*& out, uint32_t code) { bool signed_ = false; switch (code) { case BinaryConsts::StructGet: @@ -7152,7 +7148,7 @@ bool WasmBinaryBuilder::maybeVisitStructGet(Expression*& out, uint32_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitStructSet(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitStructSet(Expression*& out, uint32_t code) { if (code != BinaryConsts::StructSet) { return false; } @@ -7167,8 +7163,7 @@ bool WasmBinaryBuilder::maybeVisitStructSet(Expression*& out, uint32_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitArrayNewData(Expression*& out, - uint32_t code) { +bool WasmBinaryReader::maybeVisitArrayNewData(Expression*& out, uint32_t code) { if (code == BinaryConsts::ArrayNew || code == BinaryConsts::ArrayNewDefault) { auto heapType = getIndexedHeapType(); auto* size = popNonVoidExpression(); @@ -7182,8 +7177,7 @@ bool WasmBinaryBuilder::maybeVisitArrayNewData(Expression*& out, return false; } -bool WasmBinaryBuilder::maybeVisitArrayNewElem(Expression*& out, - uint32_t code) { +bool WasmBinaryReader::maybeVisitArrayNewElem(Expression*& out, uint32_t code) { if (code == BinaryConsts::ArrayNewData || code == BinaryConsts::ArrayNewElem) { auto isData = code == BinaryConsts::ArrayNewData; @@ -7207,8 +7201,8 @@ bool WasmBinaryBuilder::maybeVisitArrayNewElem(Expression*& out, return false; } -bool WasmBinaryBuilder::maybeVisitArrayNewFixed(Expression*& out, - uint32_t code) { +bool WasmBinaryReader::maybeVisitArrayNewFixed(Expression*& out, + uint32_t code) { if (code == BinaryConsts::ArrayNewFixed) { auto heapType = getIndexedHeapType(); auto size = getU32LEB(); @@ -7222,7 +7216,7 @@ bool WasmBinaryBuilder::maybeVisitArrayNewFixed(Expression*& out, return false; } -bool WasmBinaryBuilder::maybeVisitArrayGet(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitArrayGet(Expression*& out, uint32_t code) { bool signed_ = false; switch (code) { case BinaryConsts::ArrayGet: @@ -7246,7 +7240,7 @@ bool WasmBinaryBuilder::maybeVisitArrayGet(Expression*& out, uint32_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitArraySet(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitArraySet(Expression*& out, uint32_t code) { if (code != BinaryConsts::ArraySet) { return false; } @@ -7259,7 +7253,7 @@ bool WasmBinaryBuilder::maybeVisitArraySet(Expression*& out, uint32_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitArrayLen(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitArrayLen(Expression*& out, uint32_t code) { if (code == BinaryConsts::ArrayLenAnnotated) { // Ignore the type annotation and don't bother validating it. getU32LEB(); @@ -7271,7 +7265,7 @@ bool WasmBinaryBuilder::maybeVisitArrayLen(Expression*& out, uint32_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitArrayCopy(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitArrayCopy(Expression*& out, uint32_t code) { if (code != BinaryConsts::ArrayCopy) { return false; } @@ -7289,7 +7283,7 @@ bool WasmBinaryBuilder::maybeVisitArrayCopy(Expression*& out, uint32_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitArrayFill(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitArrayFill(Expression*& out, uint32_t code) { if (code != BinaryConsts::ArrayFill) { return false; } @@ -7303,7 +7297,7 @@ bool WasmBinaryBuilder::maybeVisitArrayFill(Expression*& out, uint32_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitArrayInit(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitArrayInit(Expression*& out, uint32_t code) { bool isData = true; switch (code) { case BinaryConsts::ArrayInitData: @@ -7335,7 +7329,7 @@ bool WasmBinaryBuilder::maybeVisitArrayInit(Expression*& out, uint32_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitStringNew(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitStringNew(Expression*& out, uint32_t code) { StringNewOp op; Expression* length = nullptr; Expression* start = nullptr; @@ -7411,7 +7405,7 @@ bool WasmBinaryBuilder::maybeVisitStringNew(Expression*& out, uint32_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitStringConst(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitStringConst(Expression*& out, uint32_t code) { if (code != BinaryConsts::StringConst) { return false; } @@ -7423,8 +7417,8 @@ bool WasmBinaryBuilder::maybeVisitStringConst(Expression*& out, uint32_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitStringMeasure(Expression*& out, - uint32_t code) { +bool WasmBinaryReader::maybeVisitStringMeasure(Expression*& out, + uint32_t code) { StringMeasureOp op; if (code == BinaryConsts::StringMeasureUTF8) { op = StringMeasureUTF8; @@ -7446,8 +7440,7 @@ bool WasmBinaryBuilder::maybeVisitStringMeasure(Expression*& out, return true; } -bool WasmBinaryBuilder::maybeVisitStringEncode(Expression*& out, - uint32_t code) { +bool WasmBinaryReader::maybeVisitStringEncode(Expression*& out, uint32_t code) { StringEncodeOp op; Expression* start = nullptr; // TODO: share this code with string.measure? @@ -7492,8 +7485,7 @@ bool WasmBinaryBuilder::maybeVisitStringEncode(Expression*& out, return true; } -bool WasmBinaryBuilder::maybeVisitStringConcat(Expression*& out, - uint32_t code) { +bool WasmBinaryReader::maybeVisitStringConcat(Expression*& out, uint32_t code) { if (code != BinaryConsts::StringConcat) { return false; } @@ -7503,7 +7495,7 @@ bool WasmBinaryBuilder::maybeVisitStringConcat(Expression*& out, return true; } -bool WasmBinaryBuilder::maybeVisitStringEq(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitStringEq(Expression*& out, uint32_t code) { StringEqOp op; if (code == BinaryConsts::StringEq) { op = StringEqEqual; @@ -7518,7 +7510,7 @@ bool WasmBinaryBuilder::maybeVisitStringEq(Expression*& out, uint32_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitStringAs(Expression*& out, uint32_t code) { +bool WasmBinaryReader::maybeVisitStringAs(Expression*& out, uint32_t code) { StringAsOp op; if (code == BinaryConsts::StringAsWTF8) { op = StringAsWTF8; @@ -7534,8 +7526,8 @@ bool WasmBinaryBuilder::maybeVisitStringAs(Expression*& out, uint32_t code) { return true; } -bool WasmBinaryBuilder::maybeVisitStringWTF8Advance(Expression*& out, - uint32_t code) { +bool WasmBinaryReader::maybeVisitStringWTF8Advance(Expression*& out, + uint32_t code) { if (code != BinaryConsts::StringViewWTF8Advance) { return false; } @@ -7546,8 +7538,8 @@ bool WasmBinaryBuilder::maybeVisitStringWTF8Advance(Expression*& out, return true; } -bool WasmBinaryBuilder::maybeVisitStringWTF16Get(Expression*& out, - uint32_t code) { +bool WasmBinaryReader::maybeVisitStringWTF16Get(Expression*& out, + uint32_t code) { if (code != BinaryConsts::StringViewWTF16GetCodePoint) { return false; } @@ -7557,8 +7549,8 @@ bool WasmBinaryBuilder::maybeVisitStringWTF16Get(Expression*& out, return true; } -bool WasmBinaryBuilder::maybeVisitStringIterNext(Expression*& out, - uint32_t code) { +bool WasmBinaryReader::maybeVisitStringIterNext(Expression*& out, + uint32_t code) { if (code != BinaryConsts::StringViewIterNext) { return false; } @@ -7567,8 +7559,8 @@ bool WasmBinaryBuilder::maybeVisitStringIterNext(Expression*& out, return true; } -bool WasmBinaryBuilder::maybeVisitStringIterMove(Expression*& out, - uint32_t code) { +bool WasmBinaryReader::maybeVisitStringIterMove(Expression*& out, + uint32_t code) { StringIterMoveOp op; if (code == BinaryConsts::StringViewIterAdvance) { op = StringIterMoveAdvance; @@ -7583,8 +7575,8 @@ bool WasmBinaryBuilder::maybeVisitStringIterMove(Expression*& out, return true; } -bool WasmBinaryBuilder::maybeVisitStringSliceWTF(Expression*& out, - uint32_t code) { +bool WasmBinaryReader::maybeVisitStringSliceWTF(Expression*& out, + uint32_t code) { StringSliceWTFOp op; if (code == BinaryConsts::StringViewWTF8Slice) { op = StringSliceWTF8; @@ -7600,8 +7592,8 @@ bool WasmBinaryBuilder::maybeVisitStringSliceWTF(Expression*& out, return true; } -bool WasmBinaryBuilder::maybeVisitStringSliceIter(Expression*& out, - uint32_t code) { +bool WasmBinaryReader::maybeVisitStringSliceIter(Expression*& out, + uint32_t code) { if (code != BinaryConsts::StringViewIterSlice) { return false; } @@ -7611,7 +7603,7 @@ bool WasmBinaryBuilder::maybeVisitStringSliceIter(Expression*& out, return true; } -void WasmBinaryBuilder::visitRefAs(RefAs* curr, uint8_t code) { +void WasmBinaryReader::visitRefAs(RefAs* curr, uint8_t code) { BYN_TRACE("zz node: RefAs\n"); switch (code) { case BinaryConsts::RefAsNonNull: @@ -7633,12 +7625,12 @@ void WasmBinaryBuilder::visitRefAs(RefAs* curr, uint8_t code) { curr->finalize(); } -void WasmBinaryBuilder::throwError(std::string text) { +void WasmBinaryReader::throwError(std::string text) { throw ParseException(text, 0, pos); } -void WasmBinaryBuilder::validateHeapTypeUsingChild(Expression* child, - HeapType heapType) { +void WasmBinaryReader::validateHeapTypeUsingChild(Expression* child, + HeapType heapType) { if (child->type == Type::unreachable) { return; } diff --git a/src/wasm/wasm-io.cpp b/src/wasm/wasm-io.cpp index b544046f6..65e6a982a 100644 --- a/src/wasm/wasm-io.cpp +++ b/src/wasm/wasm-io.cpp @@ -63,7 +63,7 @@ void ModuleReader::readBinaryData(std::vector<char>& input, std::unique_ptr<std::ifstream> sourceMapStream; // Assume that the wasm has had its initial features applied, and use those // while parsing. - WasmBinaryBuilder parser(wasm, wasm.features, input); + WasmBinaryReader parser(wasm, wasm.features, input); parser.setDebugInfo(debugInfo); parser.setDWARF(DWARF); parser.setSkipFunctionBodies(skipFunctionBodies); diff --git a/src/wasm/wasm-s-parser.cpp b/src/wasm/wasm-s-parser.cpp index a51ad3716..e99200d58 100644 --- a/src/wasm/wasm-s-parser.cpp +++ b/src/wasm/wasm-s-parser.cpp @@ -364,7 +364,7 @@ SExpressionWasmBuilder::SExpressionWasmBuilder(Module& wasm, stringToBinary(*module[i], module[i]->str().str, data); } // TODO: support applying features here - WasmBinaryBuilder binaryBuilder(wasm, FeatureSet::MVP, data); + WasmBinaryReader binaryBuilder(wasm, FeatureSet::MVP, data); binaryBuilder.read(); return; } |