[llvm] r326454 - [WebAssembly] Use uint8_t for single byte values to match the spec

Sam Clegg via llvm-commits llvm-commits at lists.llvm.org
Thu Mar 1 10:06:21 PST 2018


Author: sbc
Date: Thu Mar  1 10:06:21 2018
New Revision: 326454

URL: http://llvm.org/viewvc/llvm-project?rev=326454&view=rev
Log:
[WebAssembly] Use uint8_t for single byte values to match the spec

The original BinaryEncoding.md document used to specify that
these values were `varint7`, but the official spec lists them
explicitly as single byte values and not LEB.

A similar change for wabt is in flight:
 https://github.com/WebAssembly/wabt/pull/782

Differential Revision: https://reviews.llvm.org/D43921

Modified:
    llvm/trunk/include/llvm/BinaryFormat/Wasm.h
    llvm/trunk/include/llvm/ObjectYAML/WasmYAML.h
    llvm/trunk/lib/MC/WasmObjectWriter.cpp
    llvm/trunk/lib/Object/WasmObjectFile.cpp
    llvm/trunk/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyTargetStreamer.cpp
    llvm/trunk/lib/Target/WebAssembly/WebAssemblyMCInstLower.cpp
    llvm/trunk/tools/yaml2obj/yaml2wasm.cpp

Modified: llvm/trunk/include/llvm/BinaryFormat/Wasm.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/BinaryFormat/Wasm.h?rev=326454&r1=326453&r2=326454&view=diff
==============================================================================
--- llvm/trunk/include/llvm/BinaryFormat/Wasm.h (original)
+++ llvm/trunk/include/llvm/BinaryFormat/Wasm.h Thu Mar  1 10:06:21 2018
@@ -33,24 +33,24 @@ struct WasmObjectHeader {
 };
 
 struct WasmSignature {
-  std::vector<int32_t> ParamTypes;
-  int32_t ReturnType;
+  std::vector<uint8_t> ParamTypes;
+  uint8_t ReturnType;
 };
 
 struct WasmExport {
   StringRef Name;
-  uint32_t Kind;
+  uint8_t Kind;
   uint32_t Index;
 };
 
 struct WasmLimits {
-  uint32_t Flags;
+  uint8_t Flags;
   uint32_t Initial;
   uint32_t Maximum;
 };
 
 struct WasmTable {
-  int32_t ElemType;
+  uint8_t ElemType;
   WasmLimits Limits;
 };
 
@@ -66,7 +66,7 @@ struct WasmInitExpr {
 };
 
 struct WasmGlobalType {
-  int32_t Type;
+  uint8_t Type;
   bool Mutable;
 };
 
@@ -79,7 +79,7 @@ struct WasmGlobal {
 struct WasmImport {
   StringRef Module;
   StringRef Field;
-  uint32_t Kind;
+  uint8_t Kind;
   union {
     uint32_t SigIndex;
     WasmGlobalType Global;
@@ -89,7 +89,7 @@ struct WasmImport {
 };
 
 struct WasmLocalDecl {
-  int32_t Type;
+  uint8_t Type;
   uint32_t Count;
 };
 
@@ -128,7 +128,7 @@ struct WasmDataReference {
 };
 
 struct WasmRelocation {
-  uint32_t Type;   // The type of the relocation.
+  uint8_t Type;    // The type of the relocation.
   uint32_t Index;  // Index into either symbol or type index space.
   uint64_t Offset; // Offset from the start of the section.
   int64_t Addend;  // A value to add to the symbol.
@@ -141,7 +141,7 @@ struct WasmInitFunc {
 
 struct WasmSymbolInfo {
   StringRef Name;
-  uint32_t Kind;
+  uint8_t Kind;
   uint32_t Flags;
   union {
     // For function or global symbols, the index in function of global index
@@ -178,18 +178,18 @@ enum : unsigned {
 };
 
 // Type immediate encodings used in various contexts.
-enum {
-  WASM_TYPE_I32 = -0x01,
-  WASM_TYPE_I64 = -0x02,
-  WASM_TYPE_F32 = -0x03,
-  WASM_TYPE_F64 = -0x04,
-  WASM_TYPE_ANYFUNC = -0x10,
-  WASM_TYPE_FUNC = -0x20,
-  WASM_TYPE_NORESULT = -0x40, // for blocks with no result values
+enum : uint8_t {
+  WASM_TYPE_I32 = 0x7F,
+  WASM_TYPE_I64 = 0x7E,
+  WASM_TYPE_F32 = 0x7D,
+  WASM_TYPE_F64 = 0x7C,
+  WASM_TYPE_ANYFUNC = 0x70,
+  WASM_TYPE_FUNC = 0x60,
+  WASM_TYPE_NORESULT = 0x40, // for blocks with no result values
 };
 
 // Kinds of externals (for imports and exports).
-enum : unsigned {
+enum : uint8_t {
   WASM_EXTERNAL_FUNCTION = 0x0,
   WASM_EXTERNAL_TABLE = 0x1,
   WASM_EXTERNAL_MEMORY = 0x2,
@@ -239,7 +239,7 @@ enum : unsigned {
 };
 
 // Kind codes used in the custom "linking" section in the WASM_SYMBOL_TABLE
-enum WasmSymbolType : unsigned {
+enum WasmSymbolType : uint8_t {
   WASM_SYMBOL_TYPE_FUNCTION = 0x0,
   WASM_SYMBOL_TYPE_DATA     = 0x1,
   WASM_SYMBOL_TYPE_GLOBAL   = 0x2,
@@ -257,7 +257,7 @@ const unsigned WASM_SYMBOL_UNDEFINED
 
 #define WASM_RELOC(name, value) name = value,
 
-enum : unsigned {
+enum : uint8_t {
 #include "WasmRelocs.def"
 };
 

Modified: llvm/trunk/include/llvm/ObjectYAML/WasmYAML.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ObjectYAML/WasmYAML.h?rev=326454&r1=326453&r2=326454&view=diff
==============================================================================
--- llvm/trunk/include/llvm/ObjectYAML/WasmYAML.h (original)
+++ llvm/trunk/include/llvm/ObjectYAML/WasmYAML.h Thu Mar  1 10:06:21 2018
@@ -28,17 +28,17 @@ namespace llvm {
 namespace WasmYAML {
 
 LLVM_YAML_STRONG_TYPEDEF(uint32_t, SectionType)
-LLVM_YAML_STRONG_TYPEDEF(int32_t, ValueType)
-LLVM_YAML_STRONG_TYPEDEF(int32_t, TableType)
-LLVM_YAML_STRONG_TYPEDEF(int32_t, SignatureForm)
-LLVM_YAML_STRONG_TYPEDEF(uint32_t, ExportKind)
+LLVM_YAML_STRONG_TYPEDEF(uint8_t, ValueType)
+LLVM_YAML_STRONG_TYPEDEF(uint8_t, TableType)
+LLVM_YAML_STRONG_TYPEDEF(uint8_t, SignatureForm)
+LLVM_YAML_STRONG_TYPEDEF(uint8_t, ExportKind)
 LLVM_YAML_STRONG_TYPEDEF(uint32_t, Opcode)
-LLVM_YAML_STRONG_TYPEDEF(uint32_t, RelocType)
+LLVM_YAML_STRONG_TYPEDEF(uint8_t, RelocType)
 LLVM_YAML_STRONG_TYPEDEF(uint32_t, SymbolFlags)
-LLVM_YAML_STRONG_TYPEDEF(uint32_t, SymbolKind)
+LLVM_YAML_STRONG_TYPEDEF(uint8_t, SymbolKind)
 LLVM_YAML_STRONG_TYPEDEF(uint32_t, SegmentFlags)
-LLVM_YAML_STRONG_TYPEDEF(uint32_t, LimitFlags)
-LLVM_YAML_STRONG_TYPEDEF(uint32_t, ComdatKind)
+LLVM_YAML_STRONG_TYPEDEF(uint8_t, LimitFlags)
+LLVM_YAML_STRONG_TYPEDEF(uint8_t, ComdatKind)
 
 struct FileHeader {
   yaml::Hex32 Version;

Modified: llvm/trunk/lib/MC/WasmObjectWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/WasmObjectWriter.cpp?rev=326454&r1=326453&r2=326454&view=diff
==============================================================================
--- llvm/trunk/lib/MC/WasmObjectWriter.cpp (original)
+++ llvm/trunk/lib/MC/WasmObjectWriter.cpp Thu Mar  1 10:06:21 2018
@@ -258,7 +258,7 @@ private:
   }
 
   void writeValueType(wasm::ValType Ty) {
-    encodeSLEB128(int32_t(Ty), getStream());
+    write8(static_cast<uint8_t>(Ty));
   }
 
   void writeTypeSection(ArrayRef<WasmFunctionType> FunctionTypes);
@@ -300,7 +300,7 @@ void WasmObjectWriter::startSection(Sect
          "Only custom sections can have names");
 
   DEBUG(dbgs() << "startSection " << SectionId << ": " << Name << "\n");
-  encodeULEB128(SectionId, getStream());
+  write8(SectionId);
 
   Section.SizeOffset = getStream().tell();
 
@@ -625,7 +625,7 @@ void WasmObjectWriter::writeRelocations(
                       RelEntry.FixupSection->getSectionOffset();
     uint32_t Index = getRelocationIndexValue(RelEntry);
 
-    encodeULEB128(RelEntry.Type, Stream);
+    write8(RelEntry.Type);
     encodeULEB128(Offset, Stream);
     encodeULEB128(Index, Stream);
     if (RelEntry.hasAddend())
@@ -644,7 +644,7 @@ void WasmObjectWriter::writeTypeSection(
   encodeULEB128(FunctionTypes.size(), getStream());
 
   for (const WasmFunctionType &FuncTy : FunctionTypes) {
-    encodeSLEB128(wasm::WASM_TYPE_FUNC, getStream());
+    write8(wasm::WASM_TYPE_FUNC);
     encodeULEB128(FuncTy.Params.size(), getStream());
     for (wasm::ValType Ty : FuncTy.Params)
       writeValueType(Ty);
@@ -671,22 +671,22 @@ void WasmObjectWriter::writeImportSectio
   for (const wasm::WasmImport &Import : Imports) {
     writeString(Import.Module);
     writeString(Import.Field);
-    encodeULEB128(Import.Kind, getStream());
+    write8(Import.Kind);
 
     switch (Import.Kind) {
     case wasm::WASM_EXTERNAL_FUNCTION:
       encodeULEB128(Import.SigIndex, getStream());
       break;
     case wasm::WASM_EXTERNAL_GLOBAL:
-      encodeSLEB128(Import.Global.Type, getStream());
-      encodeULEB128(uint32_t(Import.Global.Mutable), getStream());
+      write8(Import.Global.Type);
+      write8(Import.Global.Mutable ? 1 : 0);
       break;
     case wasm::WASM_EXTERNAL_MEMORY:
       encodeULEB128(0, getStream()); // flags
       encodeULEB128(NumPages, getStream()); // initial
       break;
     case wasm::WASM_EXTERNAL_TABLE:
-      encodeSLEB128(Import.Table.ElemType, getStream());
+      write8(Import.Table.ElemType);
       encodeULEB128(0, getStream()); // flags
       encodeULEB128(NumElements, getStream()); // initial
       break;
@@ -742,7 +742,7 @@ void WasmObjectWriter::writeExportSectio
   encodeULEB128(Exports.size(), getStream());
   for (const wasm::WasmExport &Export : Exports) {
     writeString(Export.Name);
-    encodeSLEB128(Export.Kind, getStream());
+    write8(Export.Kind);
     encodeULEB128(Export.Index, getStream());
   }
 

Modified: llvm/trunk/lib/Object/WasmObjectFile.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/WasmObjectFile.cpp?rev=326454&r1=326453&r2=326454&view=diff
==============================================================================
--- llvm/trunk/lib/Object/WasmObjectFile.cpp (original)
+++ llvm/trunk/lib/Object/WasmObjectFile.cpp Thu Mar  1 10:06:21 2018
@@ -99,18 +99,6 @@ static uint8_t readVaruint1(const uint8_
   return result;
 }
 
-static int8_t readVarint7(const uint8_t *&Ptr) {
-  int64_t result = readLEB128(Ptr);
-  assert(result <= VARINT7_MAX && result >= VARINT7_MIN);
-  return result;
-}
-
-static uint8_t readVaruint7(const uint8_t *&Ptr) {
-  uint64_t result = readULEB128(Ptr);
-  assert(result <= VARUINT7_MAX);
-  return result;
-}
-
 static int32_t readVarint32(const uint8_t *&Ptr) {
   int64_t result = readLEB128(Ptr);
   assert(result <= INT32_MAX && result >= INT32_MIN);
@@ -174,7 +162,7 @@ static wasm::WasmLimits readLimits(const
 
 static wasm::WasmTable readTable(const uint8_t *&Ptr) {
   wasm::WasmTable Table;
-  Table.ElemType = readVarint7(Ptr);
+  Table.ElemType = readUint8(Ptr);
   Table.Limits = readLimits(Ptr);
   return Table;
 }
@@ -182,7 +170,7 @@ static wasm::WasmTable readTable(const u
 static Error readSection(WasmSection &Section, const uint8_t *&Ptr,
                          const uint8_t *Start, const uint8_t *Eof) {
   Section.Offset = Ptr - Start;
-  Section.Type = readVaruint7(Ptr);
+  Section.Type = readUint8(Ptr);
   uint32_t Size = readVaruint32(Ptr);
   if (Size == 0)
     return make_error<StringError>("Zero length section",
@@ -274,7 +262,7 @@ Error WasmObjectFile::parseNameSection(c
   }
 
   while (Ptr < End) {
-    uint8_t Type = readVarint7(Ptr);
+    uint8_t Type = readUint8(Ptr);
     uint32_t Size = readVaruint32(Ptr);
     const uint8_t *SubSectionEnd = Ptr + Size;
     switch (Type) {
@@ -324,7 +312,7 @@ Error WasmObjectFile::parseLinkingSectio
   }
 
   while (Ptr < End) {
-    uint8_t Type = readVarint7(Ptr);
+    uint8_t Type = readUint8(Ptr);
     uint32_t Size = readVaruint32(Ptr);
     const uint8_t *SubSectionEnd = Ptr + Size;
     switch (Type) {
@@ -548,7 +536,7 @@ WasmSection* WasmObjectFile::findSection
 
 Error WasmObjectFile::parseRelocSection(StringRef Name, const uint8_t *Ptr,
                                         const uint8_t *End) {
-  uint8_t SectionCode = readVarint7(Ptr);
+  uint8_t SectionCode = readUint8(Ptr);
   WasmSection* Section = nullptr;
   if (SectionCode == wasm::WASM_SEC_CUSTOM) {
     StringRef Name = readString(Ptr);
@@ -613,7 +601,7 @@ Error WasmObjectFile::parseTypeSection(c
   while (Count--) {
     wasm::WasmSignature Sig;
     Sig.ReturnType = wasm::WASM_TYPE_NORESULT;
-    int8_t Form = readVarint7(Ptr);
+    uint8_t Form = readUint8(Ptr);
     if (Form != wasm::WASM_TYPE_FUNC) {
       return make_error<GenericBinaryError>("Invalid signature type",
                                             object_error::parse_failed);
@@ -621,7 +609,7 @@ Error WasmObjectFile::parseTypeSection(c
     uint32_t ParamCount = readVaruint32(Ptr);
     Sig.ParamTypes.reserve(ParamCount);
     while (ParamCount--) {
-      uint32_t ParamType = readVarint7(Ptr);
+      uint32_t ParamType = readUint8(Ptr);
       Sig.ParamTypes.push_back(ParamType);
     }
     uint32_t ReturnCount = readVaruint32(Ptr);
@@ -630,7 +618,7 @@ Error WasmObjectFile::parseTypeSection(c
         return make_error<GenericBinaryError>(
             "Multiple return types not supported", object_error::parse_failed);
       }
-      Sig.ReturnType = readVarint7(Ptr);
+      Sig.ReturnType = readUint8(Ptr);
     }
     Signatures.push_back(Sig);
   }
@@ -655,7 +643,7 @@ Error WasmObjectFile::parseImportSection
       break;
     case wasm::WASM_EXTERNAL_GLOBAL:
       NumImportedGlobals++;
-      Im.Global.Type = readVarint7(Ptr);
+      Im.Global.Type = readUint8(Ptr);
       Im.Global.Mutable = readVaruint1(Ptr);
       break;
     case wasm::WASM_EXTERNAL_MEMORY:
@@ -726,7 +714,7 @@ Error WasmObjectFile::parseGlobalSection
   while (Count--) {
     wasm::WasmGlobal Global;
     Global.Index = NumImportedGlobals + Globals.size();
-    Global.Type.Type = readVarint7(Ptr);
+    Global.Type.Type = readUint8(Ptr);
     Global.Type.Mutable = readVaruint1(Ptr);
     if (Error Err = readInitExpr(Global.InitExpr, Ptr))
       return Err;
@@ -834,7 +822,7 @@ Error WasmObjectFile::parseCodeSection(c
     while (NumLocalDecls--) {
       wasm::WasmLocalDecl Decl;
       Decl.Count = readVaruint32(Ptr);
-      Decl.Type = readVarint7(Ptr);
+      Decl.Type = readUint8(Ptr);
       Function.Locals.push_back(Decl);
     }
 

Modified: llvm/trunk/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyTargetStreamer.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyTargetStreamer.cpp?rev=326454&r1=326453&r2=326454&view=diff
==============================================================================
--- llvm/trunk/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyTargetStreamer.cpp (original)
+++ llvm/trunk/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyTargetStreamer.cpp Thu Mar  1 10:06:21 2018
@@ -31,7 +31,7 @@ WebAssemblyTargetStreamer::WebAssemblyTa
     : MCTargetStreamer(S) {}
 
 void WebAssemblyTargetStreamer::emitValueType(wasm::ValType Type) {
-  Streamer.EmitSLEB128IntValue(int32_t(Type));
+  Streamer.EmitIntValue(uint8_t(Type), 1);
 }
 
 WebAssemblyTargetAsmStreamer::WebAssemblyTargetAsmStreamer(

Modified: llvm/trunk/lib/Target/WebAssembly/WebAssemblyMCInstLower.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/WebAssembly/WebAssemblyMCInstLower.cpp?rev=326454&r1=326453&r2=326454&view=diff
==============================================================================
--- llvm/trunk/lib/Target/WebAssembly/WebAssemblyMCInstLower.cpp (original)
+++ llvm/trunk/lib/Target/WebAssembly/WebAssemblyMCInstLower.cpp Thu Mar  1 10:06:21 2018
@@ -95,10 +95,10 @@ MCSymbol *WebAssemblyMCInstLower::GetExt
   // here; this method is precisely there for fetching the signatures of known
   // Clang-provided symbols.
   if (strcmp(Name, "__stack_pointer") == 0) {
-    wasm::ValType iPTR =
-        Subtarget.hasAddr64() ? wasm::ValType::I64 : wasm::ValType::I32;
     WasmSym->setType(wasm::WASM_SYMBOL_TYPE_GLOBAL);
-    WasmSym->setGlobalType(wasm::WasmGlobalType{int32_t(iPTR), true});
+    WasmSym->setGlobalType(wasm::WasmGlobalType{
+        Subtarget.hasAddr64() ? wasm::WASM_TYPE_I64 : wasm::WASM_TYPE_I32,
+        true});
     return WasmSym;
   }
 

Modified: llvm/trunk/tools/yaml2obj/yaml2wasm.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/yaml2obj/yaml2wasm.cpp?rev=326454&r1=326453&r2=326454&view=diff
==============================================================================
--- llvm/trunk/tools/yaml2obj/yaml2wasm.cpp (original)
+++ llvm/trunk/tools/yaml2obj/yaml2wasm.cpp Thu Mar  1 10:06:21 2018
@@ -78,7 +78,7 @@ static int writeStringRef(const StringRe
 }
 
 static int writeLimits(const WasmYAML::Limits &Lim, raw_ostream &OS) {
-  encodeULEB128(Lim.Flags, OS);
+  writeUint8(OS, Lim.Flags);
   encodeULEB128(Lim.Initial, OS);
   if (Lim.Flags & wasm::WASM_LIMITS_FLAG_HAS_MAX)
     encodeULEB128(Lim.Maximum, OS);
@@ -138,7 +138,7 @@ int WasmWriter::writeSectionContent(raw_
 
   // SYMBOL_TABLE subsection
   if (Section.SymbolTable.size()) {
-    encodeULEB128(wasm::WASM_SYMBOL_TABLE, OS);
+    writeUint8(OS, wasm::WASM_SYMBOL_TABLE);
 
     encodeULEB128(Section.SymbolTable.size(), SubSection.GetStream());
 #ifndef NDEBUG
@@ -146,7 +146,7 @@ int WasmWriter::writeSectionContent(raw_
 #endif
     for (const WasmYAML::SymbolInfo &Info : Section.SymbolTable) {
       assert(Info.Index == SymbolIndex++);
-      encodeULEB128(Info.Kind, SubSection.GetStream());
+      writeUint8(SubSection.GetStream(), Info.Kind);
       encodeULEB128(Info.Flags, SubSection.GetStream());
       switch (Info.Kind) {
       case wasm::WASM_SYMBOL_TYPE_FUNCTION:
@@ -173,7 +173,7 @@ int WasmWriter::writeSectionContent(raw_
 
   // SEGMENT_NAMES subsection
   if (Section.SegmentInfos.size()) {
-    encodeULEB128(wasm::WASM_SEGMENT_INFO, OS);
+    writeUint8(OS, wasm::WASM_SEGMENT_INFO);
     encodeULEB128(Section.SegmentInfos.size(), SubSection.GetStream());
     for (const WasmYAML::SegmentInfo &SegmentInfo : Section.SegmentInfos) {
       writeStringRef(SegmentInfo.Name, SubSection.GetStream());
@@ -185,7 +185,7 @@ int WasmWriter::writeSectionContent(raw_
 
   // INIT_FUNCS subsection
   if (Section.InitFunctions.size()) {
-    encodeULEB128(wasm::WASM_INIT_FUNCS, OS);
+    writeUint8(OS, wasm::WASM_INIT_FUNCS);
     encodeULEB128(Section.InitFunctions.size(), SubSection.GetStream());
     for (const WasmYAML::InitFunction &Func : Section.InitFunctions) {
       encodeULEB128(Func.Priority, SubSection.GetStream());
@@ -196,14 +196,14 @@ int WasmWriter::writeSectionContent(raw_
 
   // COMDAT_INFO subsection
   if (Section.Comdats.size()) {
-    encodeULEB128(wasm::WASM_COMDAT_INFO, OS);
+    writeUint8(OS, wasm::WASM_COMDAT_INFO);
     encodeULEB128(Section.Comdats.size(), SubSection.GetStream());
     for (const auto &C : Section.Comdats) {
       writeStringRef(C.Name, SubSection.GetStream());
       encodeULEB128(0, SubSection.GetStream()); // flags for future use
       encodeULEB128(C.Entries.size(), SubSection.GetStream());
       for (const WasmYAML::ComdatEntry &Entry : C.Entries) {
-        encodeULEB128(Entry.Kind, SubSection.GetStream());
+        writeUint8(SubSection.GetStream(), Entry.Kind);
         encodeULEB128(Entry.Index, SubSection.GetStream());
       }
     }
@@ -216,7 +216,7 @@ int WasmWriter::writeSectionContent(raw_
 int WasmWriter::writeSectionContent(raw_ostream &OS, WasmYAML::NameSection &Section) {
   writeStringRef(Section.Name, OS);
   if (Section.FunctionNames.size()) {
-    encodeULEB128(wasm::WASM_NAMES_FUNCTION, OS);
+    writeUint8(OS, wasm::WASM_NAMES_FUNCTION);
 
     SubSectionWriter SubSection(OS);
 
@@ -255,15 +255,15 @@ int WasmWriter::writeSectionContent(raw_
       return 1;
     }
     ++ExpectedIndex;
-    encodeSLEB128(Sig.Form, OS);
+    writeUint8(OS, Sig.Form);
     encodeULEB128(Sig.ParamTypes.size(), OS);
     for (auto ParamType : Sig.ParamTypes)
-      encodeSLEB128(ParamType, OS);
+      writeUint8(OS, ParamType);
     if (Sig.ReturnType == wasm::WASM_TYPE_NORESULT) {
-      encodeSLEB128(0, OS);
+      encodeULEB128(0, OS);
     } else {
       encodeULEB128(1, OS);
-      encodeSLEB128(Sig.ReturnType, OS);
+      writeUint8(OS, Sig.ReturnType);
     }
   }
   return 0;
@@ -275,14 +275,14 @@ int WasmWriter::writeSectionContent(raw_
   for (const WasmYAML::Import &Import : Section.Imports) {
     writeStringRef(Import.Module, OS);
     writeStringRef(Import.Field, OS);
-    encodeULEB128(Import.Kind, OS);
+    writeUint8(OS, Import.Kind);
     switch (Import.Kind) {
     case wasm::WASM_EXTERNAL_FUNCTION:
       encodeULEB128(Import.SigIndex, OS);
       NumImportedFunctions++;
       break;
     case wasm::WASM_EXTERNAL_GLOBAL:
-      encodeSLEB128(Import.GlobalImport.Type, OS);
+      writeUint8(OS, Import.GlobalImport.Type);
       writeUint8(OS, Import.GlobalImport.Mutable);
       NumImportedGlobals++;
       break;
@@ -290,7 +290,7 @@ int WasmWriter::writeSectionContent(raw_
       writeLimits(Import.Memory, OS);
       break;
     case wasm::WASM_EXTERNAL_TABLE:
-      encodeSLEB128(Import.TableImport.ElemType, OS);
+      writeUint8(OS,Import.TableImport.ElemType);
       writeLimits(Import.TableImport.TableLimits, OS);
       break;
     default:
@@ -315,7 +315,7 @@ int WasmWriter::writeSectionContent(raw_
   encodeULEB128(Section.Exports.size(), OS);
   for (const WasmYAML::Export &Export : Section.Exports) {
     writeStringRef(Export.Name, OS);
-    encodeULEB128(Export.Kind, OS);
+    writeUint8(OS, Export.Kind);
     encodeULEB128(Export.Index, OS);
   }
   return 0;
@@ -331,7 +331,7 @@ int WasmWriter::writeSectionContent(raw_
                                     WasmYAML::TableSection &Section) {
   encodeULEB128(Section.Tables.size(), OS);
   for (auto &Table : Section.Tables) {
-    encodeSLEB128(Table.ElemType, OS);
+    writeUint8(OS, Table.ElemType);
     writeLimits(Table.TableLimits, OS);
   }
   return 0;
@@ -356,7 +356,7 @@ int WasmWriter::writeSectionContent(raw_
       return 1;
     }
     ++ExpectedIndex;
-    encodeSLEB128(Global.Type, OS);
+    writeUint8(OS, Global.Type);
     writeUint8(OS, Global.Mutable);
     writeInitExpr(Global.InitExpr, OS);
   }
@@ -394,7 +394,7 @@ int WasmWriter::writeSectionContent(raw_
     encodeULEB128(Func.Locals.size(), StringStream);
     for (auto &LocalDecl : Func.Locals) {
       encodeULEB128(LocalDecl.Count, StringStream);
-      encodeSLEB128(LocalDecl.Type, StringStream);
+      writeUint8(StringStream, LocalDecl.Type);
     }
 
     Func.Body.writeAsBinary(StringStream);
@@ -435,11 +435,11 @@ int WasmWriter::writeRelocSection(raw_os
   }
 
   writeStringRef(Name, OS);
-  encodeULEB128(Sec.Type, OS);
+  writeUint8(OS, Sec.Type);
   encodeULEB128(Sec.Relocations.size(), OS);
 
   for (auto Reloc: Sec.Relocations) {
-    encodeULEB128(Reloc.Type, OS);
+    writeUint8(OS, Reloc.Type);
     encodeULEB128(Reloc.Offset, OS);
     encodeULEB128(Reloc.Index, OS);
     switch (Reloc.Type) {
@@ -525,7 +525,7 @@ int WasmWriter::writeWasm(raw_ostream &O
     if (Sec->Relocations.empty())
       continue;
 
-    encodeULEB128(wasm::WASM_SEC_CUSTOM, OS);
+    writeUint8(OS, wasm::WASM_SEC_CUSTOM);
     std::string OutString;
     raw_string_ostream StringStream(OutString);
     writeRelocSection(StringStream, *Sec);




More information about the llvm-commits mailing list