| Index: include/llvm/Bitcode/NaCl/NaClBitcodeBitsAndAbbrevsDist.h
|
| diff --git a/include/llvm/Bitcode/NaCl/NaClBitcodeBitsAndAbbrevsDist.h b/include/llvm/Bitcode/NaCl/NaClBitcodeBitsAndAbbrevsDist.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..9e7a47be06af30f267ac34e3d7e1e1a5a6f039d8
|
| --- /dev/null
|
| +++ b/include/llvm/Bitcode/NaCl/NaClBitcodeBitsAndAbbrevsDist.h
|
| @@ -0,0 +1,70 @@
|
| +//===- NaClBitcodeBitsAndAbbrevsDist.h --------------------*- C++ -*-===//
|
| +// Maps distributions of values with corresponding number of bits,
|
| +// and percentage of abbreviations used 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 distribution map of values and the
|
| +// correspdonding bits and abbreviations in PNaCl bitcode records.
|
| +
|
| +#ifndef LLVM_BITCODE_NACL_NACLBITCODEBITSANDABBREVSDIST_H
|
| +#define LLVM_BITCODE_NACL_NACLBITCODEBITSANDABBREVSDIST_H
|
| +
|
| +#include "llvm/Bitcode/NaCl/NaClBitcodeBitsDist.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 NaClBitcodeBitsAndAbbrevsDistElement : public NaClBitcodeBitsDistElement {
|
| + NaClBitcodeBitsAndAbbrevsDistElement(
|
| + const NaClBitcodeBitsAndAbbrevsDistElement&) LLVM_DELETED_FUNCTION;
|
| + void operator=(const NaClBitcodeBitsAndAbbrevsDistElement&)
|
| + LLVM_DELETED_FUNCTION;
|
| +
|
| +public:
|
| + static bool classof(const NaClBitcodeDistElement *Dist) {
|
| + return Dist->getKind() >= RDE_BitsAndAbbrevsDist
|
| + && Dist->getKind() < RDE_BitsAndAbbrevsDistLast;
|
| + }
|
| +
|
| + // Create an element with no instances.
|
| + explicit NaClBitcodeBitsAndAbbrevsDistElement(
|
| + NaClBitcodeDistElementKind Kind=RDE_BitsAndAbbrevsDist)
|
| + : NaClBitcodeBitsDistElement(Kind),
|
| + NumAbbrevs(0)
|
| + {}
|
| +
|
| + virtual ~NaClBitcodeBitsAndAbbrevsDistElement();
|
| +
|
| + virtual void AddRecord(const NaClBitcodeRecord &Record);
|
| +
|
| + // Note: No AddBlock method override because abbrevations only
|
| + // apply to records.
|
| +
|
| + // Returns the number of times an abbreviation was used to represent
|
| + // the value.
|
| + unsigned GetNumAbbrevs() const {
|
| + return NumAbbrevs;
|
| + }
|
| +
|
| + virtual void PrintStatsHeader(raw_ostream &Stream) const;
|
| +
|
| + virtual void PrintRowStats(raw_ostream &Stream,
|
| + const NaClBitcodeDist *Distribution) const;
|
| +
|
| +private:
|
| + // Number of times an abbreviation is used for the value.
|
| + unsigned NumAbbrevs;
|
| +};
|
| +
|
| +}
|
| +
|
| +#endif
|
|
|