OLD | NEW |
1 //===- NaClBitstreamReader.h -----------------------------------*- C++ -*-===// | 1 //===- NaClBitstreamReader.h -----------------------------------*- C++ -*-===// |
2 // Low-level bitstream reader interface | 2 // Low-level bitstream reader interface |
3 // | 3 // |
4 // The LLVM Compiler Infrastructure | 4 // The LLVM Compiler Infrastructure |
5 // | 5 // |
6 // This file is distributed under the University of Illinois Open Source | 6 // This file is distributed under the University of Illinois Open Source |
7 // License. See LICENSE.TXT for details. | 7 // License. See LICENSE.TXT for details. |
8 // | 8 // |
9 //===----------------------------------------------------------------------===// | 9 //===----------------------------------------------------------------------===// |
10 // | 10 // |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
66 | 66 |
67 std::unique_ptr<MemoryObject> BitcodeBytes; | 67 std::unique_ptr<MemoryObject> BitcodeBytes; |
68 | 68 |
69 std::vector<BlockInfo> BlockInfoRecords; | 69 std::vector<BlockInfo> BlockInfoRecords; |
70 | 70 |
71 /// \brief Holds the offset of the first byte after the header. | 71 /// \brief Holds the offset of the first byte after the header. |
72 size_t InitialAddress; | 72 size_t InitialAddress; |
73 | 73 |
74 // True if filler should be added to byte align records. | 74 // True if filler should be added to byte align records. |
75 bool AlignBitcodeRecords = false; | 75 bool AlignBitcodeRecords = false; |
| 76 NaClBitstreamReader(const NaClBitstreamReader&) = delete; |
| 77 void operator=(const NaClBitstreamReader&) = delete; |
76 | 78 |
77 NaClBitstreamReader(const NaClBitstreamReader&) LLVM_DELETED_FUNCTION; | |
78 void operator=(const NaClBitstreamReader&) LLVM_DELETED_FUNCTION; | |
79 | 79 |
80 void initFromHeader(NaClBitcodeHeader &Header) { | 80 void initFromHeader(NaClBitcodeHeader &Header) { |
81 InitialAddress = Header.getHeaderSize(); | 81 InitialAddress = Header.getHeaderSize(); |
82 AlignBitcodeRecords = Header.getAlignBitcodeRecords(); | 82 AlignBitcodeRecords = Header.getAlignBitcodeRecords(); |
83 } | 83 } |
84 | 84 |
85 public: | 85 public: |
86 /// Read stream from sequence of bytes [Start .. End) after parsing | 86 /// Read stream from sequence of bytes [Start .. End) after parsing |
87 /// the given bitcode header. | 87 /// the given bitcode header. |
88 NaClBitstreamReader(const unsigned char *Start, const unsigned char *End, | 88 NaClBitstreamReader(const unsigned char *Start, const unsigned char *End, |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
191 /// NaClBitcodeParser to listen to record details when processing | 191 /// NaClBitcodeParser to listen to record details when processing |
192 /// abbreviations. The major reason for using a listener is that the | 192 /// abbreviations. The major reason for using a listener is that the |
193 /// NaCl bitcode reader would require a major rewrite (including the | 193 /// NaCl bitcode reader would require a major rewrite (including the |
194 /// introduction of more overhead) if we were to lift abbreviations up | 194 /// introduction of more overhead) if we were to lift abbreviations up |
195 /// to the bitcode reader. That is, not only would we have to lift the | 195 /// to the bitcode reader. That is, not only would we have to lift the |
196 /// block processing up into the readers (i.e. many blocks in | 196 /// block processing up into the readers (i.e. many blocks in |
197 /// NaClBitcodeReader and NaClBitcodeParser), but add many new API's | 197 /// NaClBitcodeReader and NaClBitcodeParser), but add many new API's |
198 /// to allow the readers to update internals of the bit stream reader | 198 /// to allow the readers to update internals of the bit stream reader |
199 /// appropriately. | 199 /// appropriately. |
200 class NaClAbbrevListener { | 200 class NaClAbbrevListener { |
201 NaClAbbrevListener(const NaClAbbrevListener&) LLVM_DELETED_FUNCTION; | 201 NaClAbbrevListener(const NaClAbbrevListener&) = delete; |
202 void operator=(const NaClAbbrevListener&) LLVM_DELETED_FUNCTION; | 202 void operator=(const NaClAbbrevListener&) = delete; |
203 public: | 203 public: |
204 NaClAbbrevListener() {} | 204 NaClAbbrevListener() {} |
205 virtual ~NaClAbbrevListener() {} | 205 virtual ~NaClAbbrevListener() {} |
206 | 206 |
207 /// Called to process the read abbreviation. | 207 /// Called to process the read abbreviation. |
208 virtual void ProcessAbbreviation(NaClBitCodeAbbrev *Abbrev, | 208 virtual void ProcessAbbreviation(NaClBitCodeAbbrev *Abbrev, |
209 bool IsLocal) = 0; | 209 bool IsLocal) = 0; |
210 | 210 |
211 /// Called after entering block. NumWords is the number of words | 211 /// Called after entering block. NumWords is the number of words |
212 /// in the block. | 212 /// in the block. |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
287 NaClBitcodeSelectorAbbrev PrevCodeSize; | 287 NaClBitcodeSelectorAbbrev PrevCodeSize; |
288 std::vector<NaClBitCodeAbbrev*> PrevAbbrevs; | 288 std::vector<NaClBitCodeAbbrev*> PrevAbbrevs; |
289 Block() : PrevCodeSize() {} | 289 Block() : PrevCodeSize() {} |
290 explicit Block(const NaClBitcodeSelectorAbbrev& PCS) | 290 explicit Block(const NaClBitcodeSelectorAbbrev& PCS) |
291 : PrevCodeSize(PCS) {} | 291 : PrevCodeSize(PCS) {} |
292 }; | 292 }; |
293 | 293 |
294 /// This tracks the codesize of parent blocks. | 294 /// This tracks the codesize of parent blocks. |
295 SmallVector<Block, 8> BlockScope; | 295 SmallVector<Block, 8> BlockScope; |
296 | 296 |
297 NaClBitstreamCursor(const NaClBitstreamCursor &) LLVM_DELETED_FUNCTION; | 297 NaClBitstreamCursor(const NaClBitstreamCursor &) = delete; |
298 NaClBitstreamCursor &operator=(const NaClBitstreamCursor &) LLVM_DELETED_FUNCT
ION; | 298 NaClBitstreamCursor &operator=(const NaClBitstreamCursor &) = delete; |
299 | 299 |
300 public: | 300 public: |
301 NaClBitstreamCursor() : ErrHandler(new ErrorHandler(*this)) { | 301 NaClBitstreamCursor() : ErrHandler(new ErrorHandler(*this)) { |
302 init(nullptr); | 302 init(nullptr); |
303 } | 303 } |
304 | 304 |
305 explicit NaClBitstreamCursor(NaClBitstreamReader &R) | 305 explicit NaClBitstreamCursor(NaClBitstreamReader &R) |
306 : ErrHandler(new ErrorHandler(*this)) { init(&R); } | 306 : ErrHandler(new ErrorHandler(*this)) { init(&R); } |
307 | 307 |
308 void init(NaClBitstreamReader *R) { | 308 void init(NaClBitstreamReader *R) { |
(...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
679 // Skips over an abbreviation record. Duplicates code of ReadAbbrevRecord, | 679 // Skips over an abbreviation record. Duplicates code of ReadAbbrevRecord, |
680 // except that no abbreviation is built. | 680 // except that no abbreviation is built. |
681 void SkipAbbrevRecord(); | 681 void SkipAbbrevRecord(); |
682 | 682 |
683 bool ReadBlockInfoBlock(NaClAbbrevListener *Listener); | 683 bool ReadBlockInfoBlock(NaClAbbrevListener *Listener); |
684 }; | 684 }; |
685 | 685 |
686 } // End llvm namespace | 686 } // End llvm namespace |
687 | 687 |
688 #endif | 688 #endif |
OLD | NEW |