| OLD | NEW |
| 1 //===-- NaClCompress.cpp - Bitcode (abbrev) compression -----------------===// | 1 //===-- NaClCompress.cpp - Bitcode (abbrev) compression -----------------===// |
| 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 // Analyzes the data in memory buffer, and determines what | 10 // Analyzes the data in memory buffer, and determines what |
| (...skipping 447 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 458 Abbrevs = new BlockAbbrevs(BlockID); | 458 Abbrevs = new BlockAbbrevs(BlockID); |
| 459 AbbrevsMap[BlockID] = Abbrevs; | 459 AbbrevsMap[BlockID] = Abbrevs; |
| 460 } | 460 } |
| 461 return Abbrevs; | 461 return Abbrevs; |
| 462 } | 462 } |
| 463 | 463 |
| 464 /// Parses the bitcode file, analyzes it, and generates the | 464 /// Parses the bitcode file, analyzes it, and generates the |
| 465 /// corresponding lists of global abbreviations to use in the | 465 /// corresponding lists of global abbreviations to use in the |
| 466 /// generated (compressed) bitcode file. | 466 /// generated (compressed) bitcode file. |
| 467 class NaClAnalyzeParser : public NaClBitcodeParser { | 467 class NaClAnalyzeParser : public NaClBitcodeParser { |
| 468 NaClAnalyzeParser(const NaClAnalyzeParser&) | 468 NaClAnalyzeParser(const NaClAnalyzeParser&) = delete; |
| 469 LLVM_DELETED_FUNCTION; | 469 void operator=(const NaClAnalyzeParser&) = delete; |
| 470 void operator=(const NaClAnalyzeParser&) | |
| 471 LLVM_DELETED_FUNCTION; | |
| 472 | 470 |
| 473 public: | 471 public: |
| 474 // Creates the analysis parser, which will fill the given | 472 // Creates the analysis parser, which will fill the given |
| 475 // BlockAbbrevsMap with appropriate abbreviations, after | 473 // BlockAbbrevsMap with appropriate abbreviations, after |
| 476 // analyzing the bitcode file defined by Cursor. | 474 // analyzing the bitcode file defined by Cursor. |
| 477 NaClAnalyzeParser(const NaClBitcodeCompressor::CompressFlags &Flags, | 475 NaClAnalyzeParser(const NaClBitcodeCompressor::CompressFlags &Flags, |
| 478 NaClBitstreamCursor &Cursor, | 476 NaClBitstreamCursor &Cursor, |
| 479 BlockAbbrevsMapType &BlockAbbrevsMap) | 477 BlockAbbrevsMapType &BlockAbbrevsMap) |
| 480 : NaClBitcodeParser(Cursor), Flags(Flags), | 478 : NaClBitcodeParser(Cursor), Flags(Flags), |
| 481 BlockAbbrevsMap(BlockAbbrevsMap), | 479 BlockAbbrevsMap(BlockAbbrevsMap), |
| (...skipping 14 matching lines...) Expand all Loading... |
| 496 BlockAbbrevsMapType &BlockAbbrevsMap; | 494 BlockAbbrevsMapType &BlockAbbrevsMap; |
| 497 | 495 |
| 498 // Nested distribution capturing distribution of records in bitcode file. | 496 // Nested distribution capturing distribution of records in bitcode file. |
| 499 NaClBitcodeBlockDist BlockDist; | 497 NaClBitcodeBlockDist BlockDist; |
| 500 | 498 |
| 501 // Listener used to get abbreviations as they are read. | 499 // Listener used to get abbreviations as they are read. |
| 502 NaClBitcodeParserListener AbbrevListener; | 500 NaClBitcodeParserListener AbbrevListener; |
| 503 }; | 501 }; |
| 504 | 502 |
| 505 class NaClBlockAnalyzeParser : public NaClBitcodeParser { | 503 class NaClBlockAnalyzeParser : public NaClBitcodeParser { |
| 506 NaClBlockAnalyzeParser(const NaClBlockAnalyzeParser&) | 504 NaClBlockAnalyzeParser(const NaClBlockAnalyzeParser&) = delete; |
| 507 LLVM_DELETED_FUNCTION; | 505 void operator=(NaClBlockAnalyzeParser&) = delete; |
| 508 void operator=(NaClBlockAnalyzeParser&) | |
| 509 LLVM_DELETED_FUNCTION; | |
| 510 | 506 |
| 511 public: | 507 public: |
| 512 /// Top-level constructor to build the top-level block with the | 508 /// Top-level constructor to build the top-level block with the |
| 513 /// given BlockID, and collect data (for compression) in that block. | 509 /// given BlockID, and collect data (for compression) in that block. |
| 514 NaClBlockAnalyzeParser(unsigned BlockID, | 510 NaClBlockAnalyzeParser(unsigned BlockID, |
| 515 NaClAnalyzeParser *Context) | 511 NaClAnalyzeParser *Context) |
| 516 : NaClBitcodeParser(BlockID, Context), Context(Context) { | 512 : NaClBitcodeParser(BlockID, Context), Context(Context) { |
| 517 init(); | 513 init(); |
| 518 } | 514 } |
| 519 | 515 |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 645 /// in [VBR(6), Lit(4), VBR(6), Array(VBR(6))]. | 641 /// in [VBR(6), Lit(4), VBR(6), Array(VBR(6))]. |
| 646 /// | 642 /// |
| 647 /// After we have done appropriate substitutions, we can simplify the | 643 /// After we have done appropriate substitutions, we can simplify the |
| 648 /// unrolled abbreviation by calling method Restore. | 644 /// unrolled abbreviation by calling method Restore. |
| 649 /// | 645 /// |
| 650 /// Note: We unroll in the form that best matches the distribution | 646 /// Note: We unroll in the form that best matches the distribution |
| 651 /// map. Hence, the code is stored as a separate operator. We also | 647 /// map. Hence, the code is stored as a separate operator. We also |
| 652 /// keep the array abbreviation op, for untracked elements within the | 648 /// keep the array abbreviation op, for untracked elements within the |
| 653 /// distribution maps. | 649 /// distribution maps. |
| 654 class UnrolledAbbreviation { | 650 class UnrolledAbbreviation { |
| 655 void operator=(const UnrolledAbbreviation&) LLVM_DELETED_FUNCTION; | 651 void operator=(const UnrolledAbbreviation&) = delete; |
| 656 public: | 652 public: |
| 657 /// Unroll the given abbreviation, assuming it has the given size | 653 /// Unroll the given abbreviation, assuming it has the given size |
| 658 /// (as specified in the distribution maps). | 654 /// (as specified in the distribution maps). |
| 659 /// | 655 /// |
| 660 /// If argument CanBeBigger is true, then we do not assume that we | 656 /// If argument CanBeBigger is true, then we do not assume that we |
| 661 /// can remove the trailing array when expanding, because the | 657 /// can remove the trailing array when expanding, because the |
| 662 /// actual size of the corresponding record using this abbreviation | 658 /// actual size of the corresponding record using this abbreviation |
| 663 /// may be bigger. | 659 /// may be bigger. |
| 664 UnrolledAbbreviation(NaClBitCodeAbbrev *Abbrev, unsigned Size, | 660 UnrolledAbbreviation(NaClBitCodeAbbrev *Abbrev, unsigned Size, |
| 665 bool CanBeBigger = false) | 661 bool CanBeBigger = false) |
| (...skipping 982 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1648 BlockAbbrevsQueueMap AbbrevsQueueMap; | 1644 BlockAbbrevsQueueMap AbbrevsQueueMap; |
| 1649 bool Result = true; | 1645 bool Result = true; |
| 1650 if (chooseAbbrevs(MemBuf, BlockAbbrevsMap, AbbrevsQueueMap)) | 1646 if (chooseAbbrevs(MemBuf, BlockAbbrevsMap, AbbrevsQueueMap)) |
| 1651 Result = false; | 1647 Result = false; |
| 1652 else if (copyBitcode(Flags, MemBuf, BitcodeOutput, BlockAbbrevsMap, | 1648 else if (copyBitcode(Flags, MemBuf, BitcodeOutput, BlockAbbrevsMap, |
| 1653 AbbrevsQueueMap)) | 1649 AbbrevsQueueMap)) |
| 1654 Result = false; | 1650 Result = false; |
| 1655 DeleteContainerSeconds(AbbrevsQueueMap); | 1651 DeleteContainerSeconds(AbbrevsQueueMap); |
| 1656 return Result; | 1652 return Result; |
| 1657 } | 1653 } |
| OLD | NEW |