[llvm] 1c7b841 - [WebAssembly] Make tag attribute's encoding uint8
Heejin Ahn via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 21 21:23:08 PDT 2021
Author: Heejin Ahn
Date: 2021-06-21T21:22:39-07:00
New Revision: 1c7b84108861ac92fb353891e7e4c747b6ea9f28
URL: https://github.com/llvm/llvm-project/commit/1c7b84108861ac92fb353891e7e4c747b6ea9f28
DIFF: https://github.com/llvm/llvm-project/commit/1c7b84108861ac92fb353891e7e4c747b6ea9f28.diff
LOG: [WebAssembly] Make tag attribute's encoding uint8
This changes the encoding of the `attribute` field, which currently only
contains the value `0` denoting this tag is for an exception, from
`varuint32` to `uint8`. This field is effectively unused at the moment
and reserved for future use, and it is not likely to need `varuint32`
even in future.
See https://github.com/WebAssembly/exception-handling/pull/162.
This does not change any encoded binaries because `0` is encoded in the
same way both in `varuint32` and `uint8`.
Reviewed By: tlively
Differential Revision: https://reviews.llvm.org/D104571
Added:
Modified:
llvm/include/llvm/BinaryFormat/Wasm.h
llvm/lib/MC/WasmObjectWriter.cpp
llvm/lib/Object/WasmObjectFile.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/BinaryFormat/Wasm.h b/llvm/include/llvm/BinaryFormat/Wasm.h
index 9dfe1d1e10681..61544c364a3ba 100644
--- a/llvm/include/llvm/BinaryFormat/Wasm.h
+++ b/llvm/include/llvm/BinaryFormat/Wasm.h
@@ -103,7 +103,7 @@ struct WasmGlobal {
struct WasmTagType {
// Kind of tag. Currently only WASM_TAG_ATTRIBUTE_EXCEPTION is possible.
- uint32_t Attribute;
+ uint8_t Attribute;
uint32_t SigIndex;
};
@@ -363,7 +363,7 @@ enum WasmSegmentFlag : unsigned {
};
// Kinds of tag attributes.
-enum WasmTagAttribute : unsigned {
+enum WasmTagAttribute : uint8_t {
WASM_TAG_ATTRIBUTE_EXCEPTION = 0x0,
};
diff --git a/llvm/lib/MC/WasmObjectWriter.cpp b/llvm/lib/MC/WasmObjectWriter.cpp
index 41f50f636112c..4832cd3ff54ee 100644
--- a/llvm/lib/MC/WasmObjectWriter.cpp
+++ b/llvm/lib/MC/WasmObjectWriter.cpp
@@ -814,7 +814,7 @@ void WasmObjectWriter::writeImportSection(ArrayRef<wasm::WasmImport> Imports,
encodeULEB128(NumElements, W->OS); // initial
break;
case wasm::WASM_EXTERNAL_TAG:
- encodeULEB128(Import.Tag.Attribute, W->OS);
+ W->OS << char(Import.Tag.Attribute);
encodeULEB128(Import.Tag.SigIndex, W->OS);
break;
default:
@@ -848,7 +848,7 @@ void WasmObjectWriter::writeTagSection(ArrayRef<wasm::WasmTagType> Tags) {
encodeULEB128(Tags.size(), W->OS);
for (const wasm::WasmTagType &Tag : Tags) {
- encodeULEB128(Tag.Attribute, W->OS);
+ W->OS << char(Tag.Attribute);
encodeULEB128(Tag.SigIndex, W->OS);
}
diff --git a/llvm/lib/Object/WasmObjectFile.cpp b/llvm/lib/Object/WasmObjectFile.cpp
index 0f4eaa1a3555d..518803792f5d9 100644
--- a/llvm/lib/Object/WasmObjectFile.cpp
+++ b/llvm/lib/Object/WasmObjectFile.cpp
@@ -1066,7 +1066,7 @@ Error WasmObjectFile::parseImportSection(ReadContext &Ctx) {
}
case wasm::WASM_EXTERNAL_TAG:
NumImportedTags++;
- Im.Tag.Attribute = readVarint32(Ctx);
+ Im.Tag.Attribute = readUint8(Ctx);
Im.Tag.SigIndex = readVarint32(Ctx);
break;
default:
@@ -1143,7 +1143,7 @@ Error WasmObjectFile::parseTagSection(ReadContext &Ctx) {
while (Count--) {
wasm::WasmTag Tag;
Tag.Index = NumImportedTags + Tags.size();
- Tag.Type.Attribute = readVaruint32(Ctx);
+ Tag.Type.Attribute = readUint8(Ctx);
Tag.Type.SigIndex = readVaruint32(Ctx);
Tags.push_back(Tag);
}
More information about the llvm-commits
mailing list