函数逻辑报告 |
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 插件可实现:逻辑报告 代码生成和批量转换代码 |