Commits

Nadav Rotem committed 83c46b7462f
[Mangling] Add the name compression routines. This commit adds a number of compression routines: 1. A dictionary based compression. 2. Huffman based compression. 3. A compression algorithm for swift names that's based on the other two. This commit also adds two large autogenerated files: CBCTables.h and HuffTables.h. These files contain the autogenerated string tables and auto-generated code for fast compression/decompression. The internal tree data structures are lowered into code that does the variable length encoding/decoding and searching of fragments in the codebook. The files were generated by processing the symbols from several large swift applications (stdlib, unittests, simd, ui app, etc). The list of the programs is listed as part of the output of the tool in the header file. I decided to commit the auto-generated files for two reasons. First, we have a cyclic dependency problem where we need to analyze the output of the compiler (swift files) in order to generate the tables. And second, these tables will become a part of the Swift ABI and should remain constant. It should be possible to split the code that generates the Trie-based data structure and auto-generate it as part of the Swift build process.