| OLD | NEW |
| 1 //===- NaClBitstreamWriter.h - NaCl bitstream writer ------------*- C++ -*-===// | 1 //===- NaClBitstreamWriter.h - NaCl bitstream writer ------------*- C++ -*-===// |
| 2 // | 2 // |
| 3 // The LLVM Compiler Infrastructure | 3 // The LLVM Compiler Infrastructure |
| 4 // | 4 // |
| 5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
| 6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
| 7 // | 7 // |
| 8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
| 9 // | 9 // |
| 10 // This header defines the BitstreamWriter class. This class can be used to | 10 // This header defines the BitstreamWriter class. This class can be used to |
| (...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 424 } | 424 } |
| 425 } | 425 } |
| 426 assert(RecordIdx == Vals.size() && "Not all record operands emitted!"); | 426 assert(RecordIdx == Vals.size() && "Not all record operands emitted!"); |
| 427 } | 427 } |
| 428 | 428 |
| 429 public: | 429 public: |
| 430 | 430 |
| 431 /// Returns a pointer to the abbreviation currently associated with | 431 /// Returns a pointer to the abbreviation currently associated with |
| 432 /// the abbreviation index. Returns nullptr if no such abbreviation. | 432 /// the abbreviation index. Returns nullptr if no such abbreviation. |
| 433 const NaClBitCodeAbbrev *getAbbreviation(unsigned Index) const { | 433 const NaClBitCodeAbbrev *getAbbreviation(unsigned Index) const { |
| 434 if (Index < naclbitc::FIRST_APPLICATION_ABBREV) | 434 if (Index < naclbitc::FIRST_APPLICATION_ABBREV |
| 435 return nullptr; | 435 || BlockScope.empty() |
| 436 if (Index >= BlockScope.back().AbbreviationIndexLimit) | 436 || Index >= BlockScope.back().AbbreviationIndexLimit) |
| 437 return nullptr; | 437 return nullptr; |
| 438 unsigned AbbrevNo = Index - naclbitc::FIRST_APPLICATION_ABBREV; | 438 unsigned AbbrevNo = Index - naclbitc::FIRST_APPLICATION_ABBREV; |
| 439 if (AbbrevNo >= CurAbbrevs.size()) | 439 if (AbbrevNo >= CurAbbrevs.size()) |
| 440 return nullptr; | 440 return nullptr; |
| 441 return CurAbbrevs[AbbrevNo]; | 441 return CurAbbrevs[AbbrevNo]; |
| 442 } | 442 } |
| 443 | 443 |
| 444 /// EmitRecord - Emit the specified record to the stream, using an abbrev if | 444 /// EmitRecord - Emit the specified record to the stream, using an abbrev if |
| 445 /// we have one to compress the output. | 445 /// we have one to compress the output. |
| 446 template<typename uintty> | 446 template<typename uintty> |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 487 } | 487 } |
| 488 } | 488 } |
| 489 flushToByteIfAligned(); | 489 flushToByteIfAligned(); |
| 490 } | 490 } |
| 491 public: | 491 public: |
| 492 | 492 |
| 493 /// EmitAbbrev - This emits an abbreviation to the stream. Note that this | 493 /// EmitAbbrev - This emits an abbreviation to the stream. Note that this |
| 494 /// method takes ownership of the specified abbrev. | 494 /// method takes ownership of the specified abbrev. |
| 495 unsigned EmitAbbrev(NaClBitCodeAbbrev *Abbv) { | 495 unsigned EmitAbbrev(NaClBitCodeAbbrev *Abbv) { |
| 496 assert(Abbv->isValid() && "Can't emit invalid abbreviation!"); | 496 assert(Abbv->isValid() && "Can't emit invalid abbreviation!"); |
| 497 assert(!BlockScope.empty() && "Can't emit abbreviations outside of blocks"); |
| 497 // Emit the abbreviation as a record. | 498 // Emit the abbreviation as a record. |
| 498 EncodeAbbrev(Abbv); | 499 EncodeAbbrev(Abbv); |
| 499 CurAbbrevs.push_back(Abbv); | 500 CurAbbrevs.push_back(Abbv); |
| 500 return static_cast<unsigned>(CurAbbrevs.size())-1 + | 501 return static_cast<unsigned>(CurAbbrevs.size())-1 + |
| 501 naclbitc::FIRST_APPLICATION_ABBREV; | 502 naclbitc::FIRST_APPLICATION_ABBREV; |
| 502 } | 503 } |
| 503 | 504 |
| 504 //===--------------------------------------------------------------------===// | 505 //===--------------------------------------------------------------------===// |
| 505 // BlockInfo Block Emission | 506 // BlockInfo Block Emission |
| 506 //===--------------------------------------------------------------------===// | 507 //===--------------------------------------------------------------------===// |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 544 Info.Abbrevs.push_back(Abbv); | 545 Info.Abbrevs.push_back(Abbv); |
| 545 | 546 |
| 546 return Info.Abbrevs.size()-1+naclbitc::FIRST_APPLICATION_ABBREV; | 547 return Info.Abbrevs.size()-1+naclbitc::FIRST_APPLICATION_ABBREV; |
| 547 } | 548 } |
| 548 }; | 549 }; |
| 549 | 550 |
| 550 | 551 |
| 551 } // End llvm namespace | 552 } // End llvm namespace |
| 552 | 553 |
| 553 #endif | 554 #endif |
| OLD | NEW |