| Index: include/llvm/Bitcode/NaCl/NaClBitcodeBitsDist.h
|
| diff --git a/include/llvm/Bitcode/NaCl/NaClBitcodeBitsDist.h b/include/llvm/Bitcode/NaCl/NaClBitcodeBitsDist.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..4c96aa9693c80f8966eceeba19bff117f5a08a55
|
| --- /dev/null
|
| +++ b/include/llvm/Bitcode/NaCl/NaClBitcodeBitsDist.h
|
| @@ -0,0 +1,70 @@
|
| +//===- NaClBitcodeBitsDist.h ------------------------------------*- C++ -*-===//
|
| +// Maps distributions of values and corresponding number of
|
| +// bits in PNaCl bitcode records.
|
| +//
|
| +// The LLVM Compiler Infrastructure
|
| +//
|
| +// This file is distributed under the University of Illinois Open Source
|
| +// License. See LICENSE.TXT for details.
|
| +//
|
| +//===----------------------------------------------------------------------===//
|
| +//
|
| +// Creates a (nestable) distribution map of values, and the correspdonding
|
| +// bits, in PNaCl bitcode records. These distributions are built directly
|
| +// on top of the NaClBitcodeDistElement class.
|
| +
|
| +#ifndef LLVM_BITCODE_NACL_NACLBITCODEBITSDIST_H
|
| +#define LLVM_BITCODE_NACL_NACLBITCODEBITSDIST_H
|
| +
|
| +#include "llvm/Bitcode/NaCl/NaClBitcodeDist.h"
|
| +
|
| +namespace llvm {
|
| +
|
| +/// Defines the element type of a PNaCl bitcode distribution map when
|
| +/// we want to count both the number of instances, and the number of
|
| +/// bits used by each record. Also tracks the number to times an
|
| +/// abbreviation was used to parse the corresponding record.
|
| +class NaClBitcodeBitsDistElement : public NaClBitcodeDistElement {
|
| + NaClBitcodeBitsDistElement(const NaClBitcodeBitsDistElement&)
|
| + LLVM_DELETED_FUNCTION;
|
| + void operator=(const NaClBitcodeBitsDistElement&)
|
| + LLVM_DELETED_FUNCTION;
|
| +
|
| +public:
|
| + static bool classof(const NaClBitcodeDistElement *Dist) {
|
| + return Dist->getKind() >= RDE_BitsDist
|
| + && Dist->getKind() < RDE_BitsDistLast;
|
| + }
|
| +
|
| + // Create an element with no instances.
|
| + explicit NaClBitcodeBitsDistElement(
|
| + NaClBitcodeDistElementKind Kind=RDE_BitsDist)
|
| + : NaClBitcodeDistElement(Kind),
|
| + TotalBits(0)
|
| + {}
|
| +
|
| + virtual ~NaClBitcodeBitsDistElement();
|
| +
|
| + virtual void AddRecord(const NaClBitcodeRecord &Record);
|
| +
|
| + virtual void AddBlock(const NaClBitcodeBlock &Block);
|
| +
|
| + // Returns the total number of bits used to represent all instances
|
| + // of this value.
|
| + uint64_t GetTotalBits() const {
|
| + return TotalBits;
|
| + }
|
| +
|
| + virtual void PrintStatsHeader(raw_ostream &Stream) const;
|
| +
|
| + virtual void PrintRowStats(raw_ostream &Stream,
|
| + const NaClBitcodeDist *Distribution) const;
|
| +
|
| +private:
|
| + // Number of bits used to represent all instances of the value.
|
| + uint64_t TotalBits;
|
| +};
|
| +
|
| +}
|
| +
|
| +#endif
|
|
|