bzip2: reuse zPend processing code
function old new delta generateMTFValues 378 357 -21 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
2cfe10a558
commit
9e5662ea74
@ -162,7 +162,7 @@ static NOINLINE
|
|||||||
void generateMTFValues(EState* s)
|
void generateMTFValues(EState* s)
|
||||||
{
|
{
|
||||||
uint8_t yy[256];
|
uint8_t yy[256];
|
||||||
int32_t i, j;
|
int i;
|
||||||
int zPend;
|
int zPend;
|
||||||
int32_t wr;
|
int32_t wr;
|
||||||
int32_t EOB;
|
int32_t EOB;
|
||||||
@ -195,16 +195,18 @@ void generateMTFValues(EState* s)
|
|||||||
makeMaps_e(s);
|
makeMaps_e(s);
|
||||||
EOB = s->nInUse+1;
|
EOB = s->nInUse+1;
|
||||||
|
|
||||||
|
wr = 0;
|
||||||
|
zPend = 0;
|
||||||
for (i = 0; i <= EOB; i++)
|
for (i = 0; i <= EOB; i++)
|
||||||
s->mtfFreq[i] = 0;
|
s->mtfFreq[i] = 0;
|
||||||
|
|
||||||
wr = 0;
|
|
||||||
zPend = 0;
|
|
||||||
for (i = 0; i < s->nInUse; i++)
|
for (i = 0; i < s->nInUse; i++)
|
||||||
yy[i] = (uint8_t) i;
|
yy[i] = (uint8_t) i;
|
||||||
|
|
||||||
for (i = 0; i < s->nblock; i++) {
|
for (i = 0; i < s->nblock; i++) {
|
||||||
uint8_t ll_i;
|
uint8_t ll_i = ll_i; /* gcc 4.3.1 thinks it may be used w/o init */
|
||||||
|
int32_t j;
|
||||||
|
|
||||||
AssertD(wr <= i, "generateMTFValues(1)");
|
AssertD(wr <= i, "generateMTFValues(1)");
|
||||||
j = ptr[i] - 1;
|
j = ptr[i] - 1;
|
||||||
if (j < 0)
|
if (j < 0)
|
||||||
@ -216,6 +218,7 @@ void generateMTFValues(EState* s)
|
|||||||
zPend++;
|
zPend++;
|
||||||
} else {
|
} else {
|
||||||
if (zPend > 0) {
|
if (zPend > 0) {
|
||||||
|
process_zPend:
|
||||||
zPend--;
|
zPend--;
|
||||||
while (1) {
|
while (1) {
|
||||||
#if 0
|
#if 0
|
||||||
@ -238,6 +241,8 @@ void generateMTFValues(EState* s)
|
|||||||
zPend = (unsigned)zPend / 2;
|
zPend = (unsigned)zPend / 2;
|
||||||
/* bbox: unsigned div is easier */
|
/* bbox: unsigned div is easier */
|
||||||
}
|
}
|
||||||
|
if (i < 0) /* came via "goto process_zPend"? exit */
|
||||||
|
goto end;
|
||||||
zPend = 0;
|
zPend = 0;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@ -264,33 +269,10 @@ void generateMTFValues(EState* s)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (zPend > 0) {
|
i = -1;
|
||||||
zPend--;
|
if (zPend > 0)
|
||||||
while (1) {
|
goto process_zPend; /* "process it and come back here" */
|
||||||
#if 0
|
end:
|
||||||
if (zPend & 1) {
|
|
||||||
mtfv[wr] = BZ_RUNB;
|
|
||||||
wr++;
|
|
||||||
s->mtfFreq[BZ_RUNB]++;
|
|
||||||
} else {
|
|
||||||
mtfv[wr] = BZ_RUNA;
|
|
||||||
wr++;
|
|
||||||
s->mtfFreq[BZ_RUNA]++;
|
|
||||||
}
|
|
||||||
#else /* same as above, since BZ_RUNA is 0 and BZ_RUNB is 1 */
|
|
||||||
unsigned run = zPend & 1;
|
|
||||||
mtfv[wr] = run;
|
|
||||||
wr++;
|
|
||||||
s->mtfFreq[run]++;
|
|
||||||
#endif
|
|
||||||
zPend -= 2;
|
|
||||||
if (zPend < 0)
|
|
||||||
break;
|
|
||||||
zPend = (unsigned)zPend / 2;
|
|
||||||
/* bbox: unsigned div is easier */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
mtfv[wr] = EOB;
|
mtfv[wr] = EOB;
|
||||||
wr++;
|
wr++;
|
||||||
s->mtfFreq[EOB]++;
|
s->mtfFreq[EOB]++;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user