| Index: include/llvm/Bitcode/NaCl/NaClBitcodeMungeUtils.h
|
| diff --git a/include/llvm/Bitcode/NaCl/NaClBitcodeMungeUtils.h b/include/llvm/Bitcode/NaCl/NaClBitcodeMungeUtils.h
|
| index 6f8a05a8f29aa93f8dec5e1c796b8b8f2c8f148d..b1da3ea102608d4cd5a7d6db01353dc5b59b5a65 100644
|
| --- a/include/llvm/Bitcode/NaCl/NaClBitcodeMungeUtils.h
|
| +++ b/include/llvm/Bitcode/NaCl/NaClBitcodeMungeUtils.h
|
| @@ -81,6 +81,7 @@
|
|
|
| namespace llvm {
|
|
|
| +class MemoryBuffer; // Buffer to read bitcode from
|
| class NaClBitcodeAbbrevRecord; // bitcode record.
|
| class NaClMungedBitcodeIter; // iterator over edited bitcode records.
|
|
|
| @@ -99,6 +100,10 @@ void readNaClBitcodeRecordList(NaClBitcodeRecordList &RecordList,
|
| size_t RecordsSize,
|
| uint64_t RecordTerminator);
|
|
|
| +/// \brief Read in the list of records from bitcode in a memory buffer.
|
| +void readNaClBitcodeRecordList(NaClBitcodeRecordList &RecordList,
|
| + std::unique_ptr<MemoryBuffer> InputBuffer);
|
| +
|
| /// \brief An edited (i.e. munged) list of bitcode records. Edits are
|
| /// always relative to the initial list of records.
|
| class NaClMungedBitcode {
|
| @@ -111,6 +116,9 @@ public:
|
| /// \brief Iterator over edited records.
|
| typedef NaClMungedBitcodeIter iterator;
|
|
|
| + /// \brief Read in initial list of records from bitcode in a memory buffer.
|
| + explicit NaClMungedBitcode(std::unique_ptr<MemoryBuffer> InputBuffer);
|
| +
|
| /// \brief Initialize the list of records to be edited.
|
| explicit NaClMungedBitcode(std::unique_ptr<NaClBitcodeRecordList> BaseRecords)
|
| : BaseRecords(std::move(BaseRecords)) {}
|
| @@ -160,6 +168,16 @@ public:
|
| /// \brief Print out the resulting edited list of records.
|
| void print(raw_ostream &Out) const;
|
|
|
| + /// \brief Write out the edited list of bitcode records using
|
| + /// the given buffer.
|
| + ///
|
| + /// \param Buffer The buffer to write into.
|
| + /// \param AddHeader Add header block when true.
|
| + /// \param RecoverOnBadAbbrevId When true, try to recover and when
|
| + /// given a bad abbreviation index.
|
| + void write(SmallVectorImpl<char> &Buffer, bool AddHeader,
|
| + bool RecoverOnBadAbbrevId) const;
|
| +
|
| /// \brief The types of editing actions that can be applied.
|
| enum EditAction {
|
| AddBefore, // Insert new record before base record at index.
|
| @@ -190,6 +208,11 @@ public:
|
| /// set of base records.
|
| void removeEdits();
|
|
|
| + /// Returns the unedited list of bitcode records.
|
| + const NaClBitcodeRecordList &getBaseRecords() const {
|
| + return *BaseRecords;
|
| + }
|
| +
|
| private:
|
| typedef std::list<NaClBitcodeAbbrevRecord *> RecordListType;
|
| typedef std::map<size_t, RecordListType *> InsertionsMapType;
|
| @@ -241,7 +264,7 @@ public:
|
| /// \param Code The selector code of the record.
|
| /// \param Values The values associated with the selector code.
|
| NaClBitcodeAbbrevRecord(unsigned Abbrev, unsigned Code,
|
| - NaClRecordVector &Values)
|
| + const NaClRecordVector &Values)
|
| : NaClBitcodeRecordData(Code, Values), Abbrev(Abbrev) {}
|
|
|
| /// \brief Creates a copy of the given abbreviated bitcode record.
|
|
|