[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