bzip2: code size shrink
This commit is contained in:
parent
be5a7b9655
commit
9435993b01
@ -46,10 +46,16 @@ in the file LICENSE.
|
|||||||
heap[zz] = tmp; \
|
heap[zz] = tmp; \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define DOWNHEAP(z) \
|
|
||||||
|
/* 90 bytes, 0.3% of overall compress speed */
|
||||||
|
#if CONFIG_BZIP2_FEATURE_SPEED >= 1
|
||||||
|
|
||||||
|
/* macro works better than inline (gcc 4.2.1) */
|
||||||
|
#define DOWNHEAP1(heap, weight, Heap) \
|
||||||
{ \
|
{ \
|
||||||
int32_t zz, yy, tmp; \
|
int32_t zz, yy, tmp; \
|
||||||
zz = z; tmp = heap[zz]; \
|
zz = 1; \
|
||||||
|
tmp = heap[zz]; \
|
||||||
while (1) { \
|
while (1) { \
|
||||||
yy = zz << 1; \
|
yy = zz << 1; \
|
||||||
if (yy > nHeap) \
|
if (yy > nHeap) \
|
||||||
@ -65,6 +71,30 @@ in the file LICENSE.
|
|||||||
heap[zz] = tmp; \
|
heap[zz] = tmp; \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
static
|
||||||
|
void DOWNHEAP1(int32_t *heap, int32_t *weight, int32_t nHeap)
|
||||||
|
{
|
||||||
|
int32_t zz, yy, tmp;
|
||||||
|
zz = 1;
|
||||||
|
tmp = heap[zz];
|
||||||
|
while (1) {
|
||||||
|
yy = zz << 1;
|
||||||
|
if (yy > nHeap)
|
||||||
|
break;
|
||||||
|
if (yy < nHeap
|
||||||
|
&& weight[heap[yy + 1]] < weight[heap[yy]])
|
||||||
|
yy++;
|
||||||
|
if (weight[tmp] < weight[heap[yy]])
|
||||||
|
break;
|
||||||
|
heap[zz] = heap[yy];
|
||||||
|
zz = yy;
|
||||||
|
}
|
||||||
|
heap[zz] = tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
/*---------------------------------------------------*/
|
/*---------------------------------------------------*/
|
||||||
static
|
static
|
||||||
@ -105,8 +135,8 @@ void BZ2_hbMakeCodeLengths(uint8_t *len,
|
|||||||
AssertH(nHeap < (BZ_MAX_ALPHA_SIZE+2), 2001);
|
AssertH(nHeap < (BZ_MAX_ALPHA_SIZE+2), 2001);
|
||||||
|
|
||||||
while (nHeap > 1) {
|
while (nHeap > 1) {
|
||||||
n1 = heap[1]; heap[1] = heap[nHeap]; nHeap--; DOWNHEAP(1);
|
n1 = heap[1]; heap[1] = heap[nHeap]; nHeap--; DOWNHEAP1(heap, weight, nHeap);
|
||||||
n2 = heap[1]; heap[1] = heap[nHeap]; nHeap--; DOWNHEAP(1);
|
n2 = heap[1]; heap[1] = heap[nHeap]; nHeap--; DOWNHEAP1(heap, weight, nHeap);
|
||||||
nNodes++;
|
nNodes++;
|
||||||
parent[n1] = parent[n2] = nNodes;
|
parent[n1] = parent[n2] = nNodes;
|
||||||
weight[nNodes] = ADDWEIGHTS(weight[n1], weight[n2]);
|
weight[nNodes] = ADDWEIGHTS(weight[n1], weight[n2]);
|
||||||
|
Loading…
Reference in New Issue
Block a user