MCPcopy
hub / github.com/klauspost/compress / initPredefined

Function initPredefined

zstd/fse_predefined.go:75–158  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

73var predef sync.Once
74
75func initPredefined() {
76 predef.Do(func() {
77 // Literals length codes
78 tmp := make([]baseOffset, 36)
79 for i := range tmp[:16] {
80 tmp[i] = baseOffset{
81 baseLine: uint32(i),
82 addBits: 0,
83 }
84 }
85 fillBase(tmp[16:], 16, 1, 1, 1, 1, 2, 2, 3, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
86 symbolTableX[tableLiteralLengths] = tmp
87
88 // Match length codes
89 tmp = make([]baseOffset, 53)
90 for i := range tmp[:32] {
91 tmp[i] = baseOffset{
92 // The transformation adds the 3 length.
93 baseLine: uint32(i) + 3,
94 addBits: 0,
95 }
96 }
97 fillBase(tmp[32:], 35, 1, 1, 1, 1, 2, 2, 3, 3, 4, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
98 symbolTableX[tableMatchLengths] = tmp
99
100 // Offset codes
101 tmp = make([]baseOffset, maxOffsetBits+1)
102 tmp[1] = baseOffset{
103 baseLine: 1,
104 addBits: 1,
105 }
106 fillBase(tmp[2:], 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30)
107 symbolTableX[tableOffsets] = tmp
108
109 // Fill predefined tables and transform them.
110 // https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#default-distributions
111 for i := range fsePredef[:] {
112 f := &fsePredef[i]
113 switch tableIndex(i) {
114 case tableLiteralLengths:
115 // https://github.com/facebook/zstd/blob/ededcfca57366461021c922720878c81a5854a0a/lib/decompress/zstd_decompress_block.c#L243
116 f.actualTableLog = 6
117 copy(f.norm[:], []int16{4, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1,
118 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 1, 1, 1, 1, 1,
119 -1, -1, -1, -1})
120 f.symbolLen = 36
121 case tableOffsets:
122 // https://github.com/facebook/zstd/blob/ededcfca57366461021c922720878c81a5854a0a/lib/decompress/zstd_decompress_block.c#L281
123 f.actualTableLog = 5
124 copy(f.norm[:], []int16{
125 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1,
126 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1})
127 f.symbolLen = 29
128 case tableMatchLengths:
129 //https://github.com/facebook/zstd/blob/ededcfca57366461021c922720878c81a5854a0a/lib/decompress/zstd_decompress_block.c#L304
130 f.actualTableLog = 6
131 copy(f.norm[:], []int16{
132 1, 4, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1,

Callers 6

NewReaderFunction · 0.85
NewWriterFunction · 0.85
ConvertMethod · 0.85
TestPredefTablesFunction · 0.85
InspectDictionaryFunction · 0.85
BuildDictFunction · 0.85

Calls 6

fillBaseFunction · 0.85
tableIndexTypeAlias · 0.85
transformMethod · 0.80
setBitsMethod · 0.80
buildDtableMethod · 0.45
buildCTableMethod · 0.45

Tested by 1

TestPredefTablesFunction · 0.68

Used in the wild real call sites across dependent graphs

searching dependent graphs…