338 bytes (code) saved from bzip2

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@1210 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
eccles 2002-09-27 23:27:36 +00:00
parent b663923ebc
commit d02c47ebd5
3 changed files with 180 additions and 194 deletions

View file

@ -519,26 +519,26 @@ void unRLE_obuf_to_output_SMALL ( DState* s )
} }
/* can a new run be started? */ /* can a new run be started? */
if (s->nblock_used == s->save_nblock+1) return; if (s->nblock_used == s->save.nblock+1) return;
s->state_out_len = 1; s->state_out_len = 1;
s->state_out_ch = s->k0; s->state_out_ch = s->k0;
BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK; BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK;
k1 ^= BZ_RAND_MASK; s->nblock_used++; k1 ^= BZ_RAND_MASK; s->nblock_used++;
if (s->nblock_used == s->save_nblock+1) continue; if (s->nblock_used == s->save.nblock+1) continue;
if (k1 != s->k0) { s->k0 = k1; continue; }; if (k1 != s->k0) { s->k0 = k1; continue; };
s->state_out_len = 2; s->state_out_len = 2;
BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK; BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK;
k1 ^= BZ_RAND_MASK; s->nblock_used++; k1 ^= BZ_RAND_MASK; s->nblock_used++;
if (s->nblock_used == s->save_nblock+1) continue; if (s->nblock_used == s->save.nblock+1) continue;
if (k1 != s->k0) { s->k0 = k1; continue; }; if (k1 != s->k0) { s->k0 = k1; continue; };
s->state_out_len = 3; s->state_out_len = 3;
BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK; BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK;
k1 ^= BZ_RAND_MASK; s->nblock_used++; k1 ^= BZ_RAND_MASK; s->nblock_used++;
if (s->nblock_used == s->save_nblock+1) continue; if (s->nblock_used == s->save.nblock+1) continue;
if (k1 != s->k0) { s->k0 = k1; continue; }; if (k1 != s->k0) { s->k0 = k1; continue; };
BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK; BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK;
@ -564,22 +564,22 @@ void unRLE_obuf_to_output_SMALL ( DState* s )
} }
/* can a new run be started? */ /* can a new run be started? */
if (s->nblock_used == s->save_nblock+1) return; if (s->nblock_used == s->save.nblock+1) return;
s->state_out_len = 1; s->state_out_len = 1;
s->state_out_ch = s->k0; s->state_out_ch = s->k0;
BZ_GET_SMALL(k1); s->nblock_used++; BZ_GET_SMALL(k1); s->nblock_used++;
if (s->nblock_used == s->save_nblock+1) continue; if (s->nblock_used == s->save.nblock+1) continue;
if (k1 != s->k0) { s->k0 = k1; continue; }; if (k1 != s->k0) { s->k0 = k1; continue; };
s->state_out_len = 2; s->state_out_len = 2;
BZ_GET_SMALL(k1); s->nblock_used++; BZ_GET_SMALL(k1); s->nblock_used++;
if (s->nblock_used == s->save_nblock+1) continue; if (s->nblock_used == s->save.nblock+1) continue;
if (k1 != s->k0) { s->k0 = k1; continue; }; if (k1 != s->k0) { s->k0 = k1; continue; };
s->state_out_len = 3; s->state_out_len = 3;
BZ_GET_SMALL(k1); s->nblock_used++; BZ_GET_SMALL(k1); s->nblock_used++;
if (s->nblock_used == s->save_nblock+1) continue; if (s->nblock_used == s->save.nblock+1) continue;
if (k1 != s->k0) { s->k0 = k1; continue; }; if (k1 != s->k0) { s->k0 = k1; continue; };
BZ_GET_SMALL(k1); s->nblock_used++; BZ_GET_SMALL(k1); s->nblock_used++;
@ -612,26 +612,26 @@ void unRLE_obuf_to_output_FAST ( DState* s )
} }
/* can a new run be started? */ /* can a new run be started? */
if (s->nblock_used == s->save_nblock+1) return; if (s->nblock_used == s->save.nblock+1) return;
s->state_out_len = 1; s->state_out_len = 1;
s->state_out_ch = s->k0; s->state_out_ch = s->k0;
BZ_GET_FAST(k1); BZ_RAND_UPD_MASK; BZ_GET_FAST(k1); BZ_RAND_UPD_MASK;
k1 ^= BZ_RAND_MASK; s->nblock_used++; k1 ^= BZ_RAND_MASK; s->nblock_used++;
if (s->nblock_used == s->save_nblock+1) continue; if (s->nblock_used == s->save.nblock+1) continue;
if (k1 != s->k0) { s->k0 = k1; continue; }; if (k1 != s->k0) { s->k0 = k1; continue; };
s->state_out_len = 2; s->state_out_len = 2;
BZ_GET_FAST(k1); BZ_RAND_UPD_MASK; BZ_GET_FAST(k1); BZ_RAND_UPD_MASK;
k1 ^= BZ_RAND_MASK; s->nblock_used++; k1 ^= BZ_RAND_MASK; s->nblock_used++;
if (s->nblock_used == s->save_nblock+1) continue; if (s->nblock_used == s->save.nblock+1) continue;
if (k1 != s->k0) { s->k0 = k1; continue; }; if (k1 != s->k0) { s->k0 = k1; continue; };
s->state_out_len = 3; s->state_out_len = 3;
BZ_GET_FAST(k1); BZ_RAND_UPD_MASK; BZ_GET_FAST(k1); BZ_RAND_UPD_MASK;
k1 ^= BZ_RAND_MASK; s->nblock_used++; k1 ^= BZ_RAND_MASK; s->nblock_used++;
if (s->nblock_used == s->save_nblock+1) continue; if (s->nblock_used == s->save.nblock+1) continue;
if (k1 != s->k0) { s->k0 = k1; continue; }; if (k1 != s->k0) { s->k0 = k1; continue; };
BZ_GET_FAST(k1); BZ_RAND_UPD_MASK; BZ_GET_FAST(k1); BZ_RAND_UPD_MASK;
@ -656,7 +656,7 @@ void unRLE_obuf_to_output_FAST ( DState* s )
/* end restore */ /* end restore */
UInt32 avail_out_INIT = cs_avail_out; UInt32 avail_out_INIT = cs_avail_out;
Int32 s_save_nblockPP = s->save_nblock+1; Int32 s_save_nblockPP = s->save.nblock+1;
// unsigned int total_out_lo32_old; // unsigned int total_out_lo32_old;
while (True) { while (True) {
@ -747,7 +747,7 @@ int BZ_API(BZ2_bzDecompress) ( bz_stream *strm )
#else #else
unRLE_obuf_to_output_FAST ( s ); unRLE_obuf_to_output_FAST ( s );
#endif #endif
if (s->nblock_used == s->save_nblock+1 && s->state_out_len == 0) { if (s->nblock_used == s->save.nblock+1 && s->state_out_len == 0) {
s->state = BZ_X_BLKHDR_1; s->state = BZ_X_BLKHDR_1;
} else { } else {
return BZ_OK; return BZ_OK;

View file

@ -67,7 +67,6 @@
#include "bzlib.h" #include "bzlib.h"
/*-- General stuff. --*/ /*-- General stuff. --*/
#define BZ_VERSION "1.0.1, 23-June-2000" #define BZ_VERSION "1.0.1, 23-June-2000"
@ -103,6 +102,7 @@ typedef unsigned short UInt16;
#define BZALLOC(items) my_GlobalAlloc(items) #define BZALLOC(items) my_GlobalAlloc(items)
#else // def EXEHEAD #else // def EXEHEAD
#define BZALLOC(items) GlobalAlloc(GPTR,items) #define BZALLOC(items) GlobalAlloc(GPTR,items)
#define mini_memcpy memcpy
#endif // def EXEHEAD #endif // def EXEHEAD
#define BZFREE(addr) { if (addr) GlobalFree(addr); } #define BZFREE(addr) { if (addr) GlobalFree(addr); }
@ -316,6 +316,34 @@ BZ2_hbMakeCodeLengths ( UChar*, Int32*, Int32, Int32 );
/* save area for scalars in the main decompress code */
typedef struct {
Int32 i;
Int32 j;
Int32 t;
Int32 alphaSize;
Int32 nGroups;
Int32 nSelectors;
Int32 EOB;
Int32 groupNo;
Int32 groupPos;
Int32 nextSym;
Int32 nblockMAX;
Int32 nblock;
Int32 es;
Int32 N;
Int32 curr;
Int32 zt;
Int32 zn;
Int32 zvec;
Int32 zj;
Int32 gSel;
Int32 gMinlen;
Int32* gLimit;
Int32* gBase;
Int32* gPerm;
} DState_save;
/*-- Structure holding all the decompression-side stuff. --*/ /*-- Structure holding all the decompression-side stuff. --*/
typedef typedef
@ -383,30 +411,7 @@ typedef
Int32 minLens[BZ_N_GROUPS]; Int32 minLens[BZ_N_GROUPS];
/* save area for scalars in the main decompress code */ /* save area for scalars in the main decompress code */
Int32 save_i; DState_save save;
Int32 save_j;
Int32 save_t;
Int32 save_alphaSize;
Int32 save_nGroups;
Int32 save_nSelectors;
Int32 save_EOB;
Int32 save_groupNo;
Int32 save_groupPos;
Int32 save_nextSym;
Int32 save_nblockMAX;
Int32 save_nblock;
Int32 save_es;
Int32 save_N;
Int32 save_curr;
Int32 save_zt;
Int32 save_zn;
Int32 save_zvec;
Int32 save_zj;
Int32 save_gSel;
Int32 save_gMinlen;
Int32* save_gLimit;
Int32* save_gBase;
Int32* save_gPerm;
} }
DState; DState;

View file

@ -152,56 +152,35 @@ Int32 BZ2_decompress ( DState* s )
bz_stream* strm = s->strm; bz_stream* strm = s->strm;
/* stuff that needs to be saved/restored */ /* stuff that needs to be saved/restored */
Int32 i; DState_save sv;
Int32 j;
Int32 t;
Int32 alphaSize;
Int32 nGroups;
Int32 nSelectors;
Int32 EOB;
Int32 groupNo;
Int32 groupPos;
Int32 nextSym;
Int32 nblockMAX;
Int32 nblock;
Int32 es;
Int32 N;
Int32 curr;
Int32 zt;
Int32 zn;
Int32 zvec;
Int32 zj;
Int32 gSel;
Int32 gMinlen;
Int32* gLimit;
Int32* gBase;
Int32* gPerm;
/*restore from the save area*/ /*restore from the save area*/
i = s->save_i; mini_memcpy(&sv, &(s->save), sizeof(sv));
j = s->save_j;
t = s->save_t; #define i (sv.i)
alphaSize = s->save_alphaSize; #define j (sv.j)
nGroups = s->save_nGroups; #define t (sv.t)
nSelectors = s->save_nSelectors; #define alphaSize (sv.alphaSize)
EOB = s->save_EOB; #define nGroups (sv.nGroups)
groupNo = s->save_groupNo; #define nSelectors (sv.nSelectors)
groupPos = s->save_groupPos; #define EOB (sv.EOB)
nextSym = s->save_nextSym; #define groupNo (sv.groupNo)
nblockMAX = s->save_nblockMAX; #define groupPos (sv.groupPos)
nblock = s->save_nblock; #define nextSym (sv.nextSym)
es = s->save_es; #define nblockMAX (sv.nblockMAX)
N = s->save_N; #define nblock (sv.nblock)
curr = s->save_curr; #define es (sv.es)
zt = s->save_zt; #define N (sv.N)
zn = s->save_zn; #define curr (sv.curr)
zvec = s->save_zvec; #define zt (sv.zt)
zj = s->save_zj; #define zn (sv.zn)
gSel = s->save_gSel; #define zvec (sv.zvec)
gMinlen = s->save_gMinlen; #define zj (sv.zj)
gLimit = s->save_gLimit; #define gSel (sv.gSel)
gBase = s->save_gBase; #define gMinlen (sv.gMinlen)
gPerm = s->save_gPerm; #define gLimit (sv.gLimit)
#define gBase (sv.gBase)
#define gPerm (sv.gPerm)
retVal = BZ_OK; retVal = BZ_OK;
@ -529,30 +508,32 @@ Int32 BZ2_decompress ( DState* s )
save_state_and_return: save_state_and_return:
s->save_i = i; mini_memcpy(&(s->save), &sv, sizeof(sv));
s->save_j = j;
s->save_t = t; #undef i
s->save_alphaSize = alphaSize; #undef j
s->save_nGroups = nGroups; #undef t
s->save_nSelectors = nSelectors; #undef alphaSize
s->save_EOB = EOB; #undef nGroups
s->save_groupNo = groupNo; #undef nSelectors
s->save_groupPos = groupPos; #undef EOB
s->save_nextSym = nextSym; #undef groupNo
s->save_nblockMAX = nblockMAX; #undef groupPos
s->save_nblock = nblock; #undef nextSym
s->save_es = es; #undef nblockMAX
s->save_N = N; #undef nblock
s->save_curr = curr; #undef es
s->save_zt = zt; #undef N
s->save_zn = zn; #undef curr
s->save_zvec = zvec; #undef zt
s->save_zj = zj; #undef zn
s->save_gSel = gSel; #undef zvec
s->save_gMinlen = gMinlen; #undef zj
s->save_gLimit = gLimit; #undef gSel
s->save_gBase = gBase; #undef gMinlen
s->save_gPerm = gPerm; #undef gLimit
#undef gBase
#undef gPerm
return retVal; return retVal;
} }