LCOV - code coverage report
Current view: top level - include/llvm/MC - MCSymbolWasm.h (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 14 14 100.0 %
Date: 2018-06-17 00:07:59 Functions: 2 2 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : //===- MCSymbolWasm.h -  ----------------------------------------*- C++ -*-===//
       2             : //
       3             : //                     The LLVM Compiler Infrastructure
       4             : //
       5             : // This file is distributed under the University of Illinois Open Source
       6             : // License. See LICENSE.TXT for details.
       7             : //
       8             : //===----------------------------------------------------------------------===//
       9             : #ifndef LLVM_MC_MCSYMBOLWASM_H
      10             : #define LLVM_MC_MCSYMBOLWASM_H
      11             : 
      12             : #include "llvm/BinaryFormat/Wasm.h"
      13             : #include "llvm/MC/MCSymbol.h"
      14             : 
      15             : namespace llvm {
      16             : 
      17             : class MCSymbolWasm : public MCSymbol {
      18             :   wasm::WasmSymbolType Type = wasm::WASM_SYMBOL_TYPE_DATA;
      19             :   bool IsWeak = false;
      20             :   bool IsHidden = false;
      21             :   bool IsComdat = false;
      22             :   std::string ModuleName;
      23             :   SmallVector<wasm::ValType, 1> Returns;
      24             :   SmallVector<wasm::ValType, 4> Params;
      25             :   wasm::WasmGlobalType GlobalType;
      26             :   bool ParamsSet = false;
      27             :   bool ReturnsSet = false;
      28             :   bool GlobalTypeSet = false;
      29             : 
      30             :   /// An expression describing how to calculate the size of a symbol. If a
      31             :   /// symbol has no size this field will be NULL.
      32             :   const MCExpr *SymbolSize = nullptr;
      33             : 
      34             : public:
      35             :   // Use a module name of "env" for now, for compatibility with existing tools.
      36             :   // This is temporary, and may change, as the ABI is not yet stable.
      37        9650 :   MCSymbolWasm(const StringMapEntry<bool> *Name, bool isTemporary)
      38        9650 :       : MCSymbol(SymbolKindWasm, Name, isTemporary),
      39       19300 :         ModuleName("env") {}
      40             :   static bool classof(const MCSymbol *S) { return S->isWasm(); }
      41             : 
      42             :   const MCExpr *getSize() const { return SymbolSize; }
      43         409 :   void setSize(const MCExpr *SS) { SymbolSize = SS; }
      44             : 
      45         391 :   bool isFunction() const { return Type == wasm::WASM_SYMBOL_TYPE_FUNCTION; }
      46             :   bool isData() const { return Type == wasm::WASM_SYMBOL_TYPE_DATA; }
      47             :   bool isGlobal() const { return Type == wasm::WASM_SYMBOL_TYPE_GLOBAL; }
      48             :   bool isSection() const { return Type == wasm::WASM_SYMBOL_TYPE_SECTION; }
      49             :   wasm::WasmSymbolType getType() const { return Type; }
      50        7046 :   void setType(wasm::WasmSymbolType type) { Type = type; }
      51             : 
      52             :   bool isWeak() const { return IsWeak; }
      53          34 :   void setWeak(bool isWeak) { IsWeak = isWeak; }
      54             : 
      55             :   bool isHidden() const { return IsHidden; }
      56          87 :   void setHidden(bool isHidden) { IsHidden = isHidden; }
      57             : 
      58             :   bool isComdat() const { return IsComdat; }
      59           9 :   void setComdat(bool isComdat) { IsComdat = isComdat; }
      60             : 
      61             :   const StringRef getModuleName() const { return ModuleName; }
      62           3 :   void setModuleName(StringRef Name) { ModuleName = Name; }
      63             : 
      64             :   const SmallVector<wasm::ValType, 1> &getReturns() const {
      65             :     assert(ReturnsSet);
      66             :     return Returns;
      67             :   }
      68             : 
      69             :   void setReturns(SmallVectorImpl<wasm::ValType> &&Rets) {
      70         822 :     ReturnsSet = true;
      71             :     Returns = std::move(Rets);
      72             :   }
      73             : 
      74             :   const SmallVector<wasm::ValType, 4> &getParams() const {
      75             :     assert(ParamsSet);
      76             :     return Params;
      77             :   }
      78             : 
      79             :   void setParams(SmallVectorImpl<wasm::ValType> &&Pars) {
      80         822 :     ParamsSet = true;
      81             :     Params = std::move(Pars);
      82             :   }
      83             : 
      84             :   const wasm::WasmGlobalType &getGlobalType() const {
      85             :     assert(GlobalTypeSet);
      86             :     return GlobalType;
      87             :   }
      88             : 
      89             :   void setGlobalType(wasm::WasmGlobalType GT) {
      90         202 :     GlobalTypeSet = true;
      91         202 :     GlobalType = GT;
      92             :   }
      93             : };
      94             : 
      95             : }  // end namespace llvm
      96             : 
      97             : #endif // LLVM_MC_MCSYMBOLWASM_H

Generated by: LCOV version 1.13