Function report

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:lib\zstd\compress.c Create Date:2022-07-28 07:03:48
Last Modify:2020-03-12 14:18:49 Copyright©Brick
home page Tree
Annotation kernel can get tool activityDownload SCCTChinese

Name:ZSTD_compressBlock_doubleFast_extDict_generic

Proto:static void ZSTD_compressBlock_doubleFast_extDict_generic(ZSTD_CCtx *ctx, const void *src, size_t srcSize, const U32 mls)

Type:void

Parameter:

TypeParameterName
ZSTD_CCtx *ctx
const void *src
size_tsrcSize
const U32mls
1397  hashLong = hashTable
1398  hBitsL = hashLog
1399  hashSmall = chainTable
1400  hBitsS = chainLog
1401  seqStorePtr = &seqStore
1402  base = base
1403  dictBase = dictBase
1404  istart = src
1405  ip = istart
1406  anchor = istart
1407  lowestIndex = lowLimit
1408  dictStart = dictBase + lowestIndex
1409  dictLimit = dictLimit
1410  lowPrefixPtr = base + dictLimit
1411  dictEnd = dictBase + dictLimit
1412  iend = istart + srcSize
1413  ilimit = iend - 8
1414  offset_1 = rep[0] , offset_2 = rep[1]
1417  When ip < ilimit cycle
1418  hSmall = ZSTD_hashPtr(ip, hBitsS, mls)
1419  matchIndex = hashSmall[hSmall]
1420  matchBase = If matchIndex < dictLimit Then dictBase Else base
1421  match = matchBase + matchIndex
1423  hLong = ZSTD_hashPtr(ip, hBitsL, 8)
1424  matchLongIndex = hashLong[hLong]
1425  matchLongBase = If matchLongIndex < dictLimit Then dictBase Else base
1426  matchLong = matchLongBase + matchLongIndex
1428  curr = ip - base
1429  repIndex = curr + 1 - offset_1
1430  repBase = If repIndex < dictLimit Then dictBase Else base
1431  repMatch = repBase + repIndex
1433  hashSmall[hSmall] = hashLong[hLong] = curr
1435  If dictLimit - 1 - repIndex >= 3 & repIndex > lowestIndex && ZSTD_read32(repMatch) == ZSTD_read32(ip + 1) Then
1437  repMatchEnd = If repIndex < dictLimit Then dictEnd Else iend
1439  ip++
1441  Else
1457  Else if matchIndex > lowestIndex && ZSTD_read32(match) == ZSTD_read32(ip) Then
1458  h3 = ZSTD_hashPtr(ip + 1, hBitsL, 8)
1459  matchIndex3 = hashLong[h3]
1460  match3Base = If matchIndex3 < dictLimit Then dictBase Else base
1463  hashLong[h3] = curr + 1
1464  If matchIndex3 > lowestIndex && ZSTD_read64(match3) == ZSTD_read64(ip + 1) Then
1475  Else
1486  offset_2 = offset_1
1487  offset_1 = offset
1490  Else
1492  Continue
1497  ip += mLength
1498  anchor = ip
1500  If ip <= ilimit Then
1502  hashSmall[ZSTD_hashPtr(base + curr + 2, hBitsS, mls)] = curr + 2
1503  hashLong[ZSTD_hashPtr(base + curr + 2, hBitsL, 8)] = curr + 2
1504  hashSmall[ZSTD_hashPtr(ip - 2, hBitsS, mls)] = ip - 2 - base
1505  hashLong[ZSTD_hashPtr(ip - 2, hBitsL, 8)] = ip - 2 - base
1507  When ip <= ilimit cycle
1532  repToConfirm[0] = offset_1
1533  repToConfirm[1] = offset_2
1537  lastLLSize = iend - anchor
1538  No 3D Now!(lit, anchor, lastLLSize)
1539  lit += lastLLSize
Caller
NameDescribe
ZSTD_compressBlock_doubleFast_extDict