函数逻辑报告 |
Source Code:lib\zstd\compress.c |
Create Date:2022-07-27 08:01:27 |
Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
首页 | 函数Tree |
注解内核,赢得工具 | 下载SCCT | English |
函数名称:ZSTD_compressBlock_doubleFast_extDict_generic
函数原型:static void ZSTD_compressBlock_doubleFast_extDict_generic(ZSTD_CCtx *ctx, const void *src, size_t srcSize, const U32 mls)
返回类型:void
参数:
类型 | 参数 | 名称 |
---|---|---|
ZSTD_CCtx * | ctx | |
const void * | src | |
size_t | srcSize | |
const U32 | mls |
1399 | hashSmall等于chainTable |
1401 | seqStorePtr等于seqStore的地址 |
1407 | lowestIndex等于lowLimit |
1408 | dictStart等于dictBase加lowestIndex |
1410 | lowPrefixPtr等于base加dictLimit |
1418 | hSmall等于ZSTD_hashPtr(ip, hBitsS, mls) |
1419 | matchIndex等于hashSmall[hSmall] |
1420 | matchBase等于如果matchIndex小于dictLimit则dictBase否则base |
1421 | match等于matchBase加matchIndex |
1423 | hLong等于ZSTD_hashPtr(ip, hBitsL, 8) |
1424 | matchLongIndex等于hashLong[hLong] |
1425 | matchLongBase等于如果matchLongIndex小于dictLimit则dictBase否则base |
1435 | 如果dictLimit减1减repIndex大于等于3按位与repIndex大于lowestIndex且ZSTD_read32(repMatch)恒等于ZSTD_read32(ip + 1)则 |
1437 | repMatchEnd等于如果repIndex小于dictLimit则dictEnd否则iend |
1438 | mLength等于ZSTD_count_2segments() :* can count match length with `ip` & `match` in 2 different segments.* convention : on reaching mEnd, match count continue starting from iStart加4 |
1439 | ip自加 |
1441 | 否则 |
1442 | 如果matchLongIndex大于lowestIndex且ZSTD_read64(matchLong)恒等于ZSTD_read64(ip)则 |
1443 | matchEnd等于如果matchLongIndex小于dictLimit则dictEnd否则iend |
1444 | lowMatchPtr等于如果matchLongIndex小于dictLimit则dictStart否则lowPrefixPtr |
1446 | mLength等于ZSTD_count_2segments() :* can count match length with `ip` & `match` in 2 different segments.* convention : on reaching mEnd, match count continue starting from iStart加8 |
1447 | offset等于curr减matchLongIndex |
1457 | 否则如果matchIndex大于lowestIndex且ZSTD_read32(match)恒等于ZSTD_read32(ip)则 |
1458 | h3等于ZSTD_hashPtr(ip + 1, hBitsL, 8) |
1459 | matchIndex3等于hashLong[h3] |
1460 | match3Base等于如果matchIndex3小于dictLimit则dictBase否则base |
1461 | match3等于match3Base加matchIndex3 |
1464 | 如果matchIndex3大于lowestIndex且ZSTD_read64(match3)恒等于ZSTD_read64(ip + 1)则 |
1465 | matchEnd等于如果matchIndex3小于dictLimit则dictEnd否则iend |
1466 | lowMatchPtr等于如果matchIndex3小于dictLimit则dictStart否则lowPrefixPtr |
1467 | mLength等于ZSTD_count_2segments() :* can count match length with `ip` & `match` in 2 different segments.* convention : on reaching mEnd, match count continue starting from iStart加8 |
1468 | ip自加 |
1469 | offset等于curr加1减matchIndex3 |
1475 | 否则 |
1476 | matchEnd等于如果matchIndex小于dictLimit则dictEnd否则iend |
1477 | lowMatchPtr等于如果matchIndex小于dictLimit则dictStart否则lowPrefixPtr |
1478 | mLength等于ZSTD_count_2segments() :* can count match length with `ip` & `match` in 2 different segments.* convention : on reaching mEnd, match count continue starting from iStart加4 |
1479 | offset等于curr减matchIndex |
1490 | 否则 |
1491 | ip加等于ip减anchor右移control skip over incompressible data 位的值加1 |
1492 | 继续下一循环 |
1511 | 如果dictLimit减1减repIndex2大于等于3按位与repIndex2大于lowestIndex且ZSTD_read32(repMatch2)恒等于ZSTD_read32(ip)则 |
1514 | repLength2等于ZSTD_count_2segments() :* can count match length with `ip` & `match` in 2 different segments.* convention : on reaching mEnd, match count continue starting from iStart加EQUAL_READ32 |
1521 | hashLong[ZSTD_hashPtr(ip, hBitsL, 8)]等于curr2 |
1522 | ip加等于repLength2 |
1524 | 继续下一循环 |
1526 | 退出 |
1532 | repToConfirm[0]等于offset_1 |
1533 | repToConfirm[1]等于offset_2 |
源代码转换工具 开放的插件接口 | X |
---|---|
支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |