diff options
| author | Denys Vlasenko <vda.linux@googlemail.com> | 2018-02-03 03:12:14 +0100 |
|---|---|---|
| committer | Denys Vlasenko <vda.linux@googlemail.com> | 2018-02-03 03:14:07 +0100 |
| commit | 3a2c97bd123477aba8ea5c2d88f374d53f84b3de (patch) | |
| tree | 1e33458c0d3cd2f8525fd4ed0e84dbe80784a4e7 | |
| parent | 359230da8ea92d980ec2a852754e8e63aa893f73 (diff) | |
| download | busybox-w32-3a2c97bd123477aba8ea5c2d88f374d53f84b3de.tar.gz busybox-w32-3a2c97bd123477aba8ea5c2d88f374d53f84b3de.tar.bz2 busybox-w32-3a2c97bd123477aba8ea5c2d88f374d53f84b3de.zip | |
bgip2: fewer specifically-sized [u]int32_t's locals in sendMTFValues
Generic ints/unsigneds are usually fine. Yes, really.
function old new delta
sendMTFValues 2100 2093 -7
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| -rw-r--r-- | archival/libarchive/bz/compress.c | 44 |
1 files changed, 32 insertions, 12 deletions
diff --git a/archival/libarchive/bz/compress.c b/archival/libarchive/bz/compress.c index 992fd5884..ab0c5d9ec 100644 --- a/archival/libarchive/bz/compress.c +++ b/archival/libarchive/bz/compress.c | |||
| @@ -260,8 +260,11 @@ void generateMTFValues(EState* s) | |||
| 260 | static NOINLINE | 260 | static NOINLINE |
| 261 | void sendMTFValues(EState* s) | 261 | void sendMTFValues(EState* s) |
| 262 | { | 262 | { |
| 263 | int32_t v, t, i, j, gs, ge, bt, bc, iter; | 263 | int32_t t, i; |
| 264 | int32_t nSelectors, alphaSize, minLen, maxLen, selCtr; | 264 | unsigned iter; |
| 265 | unsigned gs; | ||
| 266 | int32_t alphaSize; | ||
| 267 | unsigned nSelectors, selCtr; | ||
| 265 | int32_t nGroups; | 268 | int32_t nGroups; |
| 266 | 269 | ||
| 267 | /* | 270 | /* |
| @@ -277,15 +280,17 @@ void sendMTFValues(EState* s) | |||
| 277 | #define rfreq sendMTFValues__rfreq | 280 | #define rfreq sendMTFValues__rfreq |
| 278 | #define len_pack sendMTFValues__len_pack | 281 | #define len_pack sendMTFValues__len_pack |
| 279 | 282 | ||
| 280 | uint16_t cost[BZ_N_GROUPS]; | 283 | unsigned /*uint16_t*/ cost[BZ_N_GROUPS]; |
| 281 | int32_t fave[BZ_N_GROUPS]; | 284 | int32_t fave[BZ_N_GROUPS]; |
| 282 | 285 | ||
| 283 | uint16_t* mtfv = s->mtfv; | 286 | uint16_t* mtfv = s->mtfv; |
| 284 | 287 | ||
| 285 | alphaSize = s->nInUse + 2; | 288 | alphaSize = s->nInUse + 2; |
| 286 | for (t = 0; t < BZ_N_GROUPS; t++) | 289 | for (t = 0; t < BZ_N_GROUPS; t++) { |
| 290 | unsigned v; | ||
| 287 | for (v = 0; v < alphaSize; v++) | 291 | for (v = 0; v < alphaSize; v++) |
| 288 | s->len[t][v] = BZ_GREATER_ICOST; | 292 | s->len[t][v] = BZ_GREATER_ICOST; |
| 293 | } | ||
| 289 | 294 | ||
| 290 | /*--- Decide how many coding tables to use ---*/ | 295 | /*--- Decide how many coding tables to use ---*/ |
| 291 | AssertH(s->nMTF > 0, 3001); | 296 | AssertH(s->nMTF > 0, 3001); |
| @@ -302,16 +307,20 @@ void sendMTFValues(EState* s) | |||
| 302 | 307 | ||
| 303 | /*--- Generate an initial set of coding tables ---*/ | 308 | /*--- Generate an initial set of coding tables ---*/ |
| 304 | { | 309 | { |
| 305 | int32_t nPart, remF, tFreq, aFreq; | 310 | unsigned nPart, remF; |
| 306 | 311 | ||
| 307 | nPart = nGroups; | 312 | nPart = nGroups; |
| 308 | remF = s->nMTF; | 313 | remF = s->nMTF; |
| 309 | gs = 0; | 314 | gs = 0; |
| 310 | while (nPart > 0) { | 315 | while (nPart > 0) { |
| 316 | unsigned v; | ||
| 317 | unsigned ge; | ||
| 318 | unsigned tFreq, aFreq; | ||
| 319 | |||
| 311 | tFreq = remF / nPart; | 320 | tFreq = remF / nPart; |
| 312 | ge = gs - 1; | 321 | ge = gs - 1; //underflows on 1st iteration |
| 313 | aFreq = 0; | 322 | aFreq = 0; |
| 314 | while (aFreq < tFreq && ge < alphaSize-1) { | 323 | while (aFreq < tFreq && (int)ge < (int)alphaSize-1) { |
| 315 | ge++; | 324 | ge++; |
| 316 | aFreq += s->mtfFreq[ge]; | 325 | aFreq += s->mtfFreq[ge]; |
| 317 | } | 326 | } |
| @@ -343,9 +352,11 @@ void sendMTFValues(EState* s) | |||
| 343 | for (t = 0; t < nGroups; t++) | 352 | for (t = 0; t < nGroups; t++) |
| 344 | fave[t] = 0; | 353 | fave[t] = 0; |
| 345 | 354 | ||
| 346 | for (t = 0; t < nGroups; t++) | 355 | for (t = 0; t < nGroups; t++) { |
| 356 | unsigned v; | ||
| 347 | for (v = 0; v < alphaSize; v++) | 357 | for (v = 0; v < alphaSize; v++) |
| 348 | s->rfreq[t][v] = 0; | 358 | s->rfreq[t][v] = 0; |
| 359 | } | ||
| 349 | 360 | ||
| 350 | #if CONFIG_BZIP2_FAST >= 5 | 361 | #if CONFIG_BZIP2_FAST >= 5 |
| 351 | /* | 362 | /* |
| @@ -353,6 +364,7 @@ void sendMTFValues(EState* s) | |||
| 353 | * the common case (nGroups == 6). | 364 | * the common case (nGroups == 6). |
| 354 | */ | 365 | */ |
| 355 | if (nGroups == 6) { | 366 | if (nGroups == 6) { |
| 367 | unsigned v; | ||
| 356 | for (v = 0; v < alphaSize; v++) { | 368 | for (v = 0; v < alphaSize; v++) { |
| 357 | s->len_pack[v][0] = (s->len[1][v] << 16) | s->len[0][v]; | 369 | s->len_pack[v][0] = (s->len[1][v] << 16) | s->len[0][v]; |
| 358 | s->len_pack[v][1] = (s->len[3][v] << 16) | s->len[2][v]; | 370 | s->len_pack[v][1] = (s->len[3][v] << 16) | s->len[2][v]; |
| @@ -363,6 +375,9 @@ void sendMTFValues(EState* s) | |||
| 363 | nSelectors = 0; | 375 | nSelectors = 0; |
| 364 | gs = 0; | 376 | gs = 0; |
| 365 | while (1) { | 377 | while (1) { |
| 378 | unsigned ge; | ||
| 379 | unsigned bt, bc; | ||
| 380 | |||
| 366 | /*--- Set group start & end marks. --*/ | 381 | /*--- Set group start & end marks. --*/ |
| 367 | if (gs >= s->nMTF) | 382 | if (gs >= s->nMTF) |
| 368 | break; | 383 | break; |
| @@ -406,7 +421,7 @@ void sendMTFValues(EState* s) | |||
| 406 | { | 421 | { |
| 407 | /*--- slow version which correctly handles all situations ---*/ | 422 | /*--- slow version which correctly handles all situations ---*/ |
| 408 | for (i = gs; i <= ge; i++) { | 423 | for (i = gs; i <= ge; i++) { |
| 409 | uint16_t icv = mtfv[i]; | 424 | unsigned /*uint16_t*/ icv = mtfv[i]; |
| 410 | for (t = 0; t < nGroups; t++) | 425 | for (t = 0; t < nGroups; t++) |
| 411 | cost[t] += s->len[t][icv]; | 426 | cost[t] += s->len[t][icv]; |
| 412 | } | 427 | } |
| @@ -480,6 +495,7 @@ void sendMTFValues(EState* s) | |||
| 480 | for (i = 0; i < nGroups; i++) | 495 | for (i = 0; i < nGroups; i++) |
| 481 | pos[i] = i; | 496 | pos[i] = i; |
| 482 | for (i = 0; i < nSelectors; i++) { | 497 | for (i = 0; i < nSelectors; i++) { |
| 498 | unsigned j; | ||
| 483 | ll_i = s->selector[i]; | 499 | ll_i = s->selector[i]; |
| 484 | j = 0; | 500 | j = 0; |
| 485 | tmp = pos[j]; | 501 | tmp = pos[j]; |
| @@ -496,8 +512,8 @@ void sendMTFValues(EState* s) | |||
| 496 | 512 | ||
| 497 | /*--- Assign actual codes for the tables. --*/ | 513 | /*--- Assign actual codes for the tables. --*/ |
| 498 | for (t = 0; t < nGroups; t++) { | 514 | for (t = 0; t < nGroups; t++) { |
| 499 | minLen = 32; | 515 | unsigned minLen = 32; //todo: s->len[t][0]; |
| 500 | maxLen = 0; | 516 | unsigned maxLen = 0; //todo: s->len[t][0]; |
| 501 | for (i = 0; i < alphaSize; i++) { | 517 | for (i = 0; i < alphaSize; i++) { |
| 502 | if (s->len[t][i] > maxLen) maxLen = s->len[t][i]; | 518 | if (s->len[t][i] > maxLen) maxLen = s->len[t][i]; |
| 503 | if (s->len[t][i] < minLen) minLen = s->len[t][i]; | 519 | if (s->len[t][i] < minLen) minLen = s->len[t][i]; |
| @@ -531,6 +547,7 @@ void sendMTFValues(EState* s) | |||
| 531 | for (i = 0; i < 16; i++) { | 547 | for (i = 0; i < 16; i++) { |
| 532 | if (inUse16 < 0) { | 548 | if (inUse16 < 0) { |
| 533 | unsigned v16 = 0; | 549 | unsigned v16 = 0; |
| 550 | unsigned j; | ||
| 534 | for (j = 0; j < 16; j++) | 551 | for (j = 0; j < 16; j++) |
| 535 | v16 = v16*2 + s->inUse[i * 16 + j]; | 552 | v16 = v16*2 + s->inUse[i * 16 + j]; |
| 536 | bsW16(s, v16); | 553 | bsW16(s, v16); |
| @@ -543,6 +560,7 @@ void sendMTFValues(EState* s) | |||
| 543 | bsW(s, 3, nGroups); | 560 | bsW(s, 3, nGroups); |
| 544 | bsW(s, 15, nSelectors); | 561 | bsW(s, 15, nSelectors); |
| 545 | for (i = 0; i < nSelectors; i++) { | 562 | for (i = 0; i < nSelectors; i++) { |
| 563 | unsigned j; | ||
| 546 | for (j = 0; j < s->selectorMtf[i]; j++) | 564 | for (j = 0; j < s->selectorMtf[i]; j++) |
| 547 | bsW(s, 1, 1); | 565 | bsW(s, 1, 1); |
| 548 | bsW(s, 1, 0); | 566 | bsW(s, 1, 0); |
| @@ -550,7 +568,7 @@ void sendMTFValues(EState* s) | |||
| 550 | 568 | ||
| 551 | /*--- Now the coding tables. ---*/ | 569 | /*--- Now the coding tables. ---*/ |
| 552 | for (t = 0; t < nGroups; t++) { | 570 | for (t = 0; t < nGroups; t++) { |
| 553 | int32_t curr = s->len[t][0]; | 571 | unsigned curr = s->len[t][0]; |
| 554 | bsW(s, 5, curr); | 572 | bsW(s, 5, curr); |
| 555 | for (i = 0; i < alphaSize; i++) { | 573 | for (i = 0; i < alphaSize; i++) { |
| 556 | while (curr < s->len[t][i]) { bsW(s, 2, 2); curr++; /* 10 */ }; | 574 | while (curr < s->len[t][i]) { bsW(s, 2, 2); curr++; /* 10 */ }; |
| @@ -563,6 +581,8 @@ void sendMTFValues(EState* s) | |||
| 563 | selCtr = 0; | 581 | selCtr = 0; |
| 564 | gs = 0; | 582 | gs = 0; |
| 565 | while (1) { | 583 | while (1) { |
| 584 | unsigned ge; | ||
| 585 | |||
| 566 | if (gs >= s->nMTF) | 586 | if (gs >= s->nMTF) |
| 567 | break; | 587 | break; |
| 568 | ge = gs + BZ_G_SIZE - 1; | 588 | ge = gs + BZ_G_SIZE - 1; |
