LLVM API Documentation
#include "bzlib_private.h"Include dependency graph for blocksort.c:

Go to the source code of this file.
Defines | |
| #define | fswap(zz1, zz2) { Int32 zztmp = zz1; zz1 = zz2; zz2 = zztmp; } |
| #define | fvswap(zzp1, zzp2, zzn) |
| #define | fmin(a, b) ((a) < (b)) ? (a) : (b) |
| #define | fpush(lz, hz) |
| #define | fpop(lz, hz) |
| #define | FALLBACK_QSORT_SMALL_THRESH 10 |
| #define | FALLBACK_QSORT_STACK_SIZE 100 |
| #define | SET_BH(zz) bhtab[(zz) >> 5] |= (1 << ((zz) & 31)) |
| #define | CLEAR_BH(zz) bhtab[(zz) >> 5] &= ~(1 << ((zz) & 31)) |
| #define | ISSET_BH(zz) (bhtab[(zz) >> 5] & (1 << ((zz) & 31))) |
| #define | WORD_BH(zz) bhtab[(zz) >> 5] |
| #define | UNALIGNED_BH(zz) ((zz) & 0x01f) |
| #define | mswap(zz1, zz2) { Int32 zztmp = zz1; zz1 = zz2; zz2 = zztmp; } |
| #define | mvswap(zzp1, zzp2, zzn) |
| #define | mmin(a, b) ((a) < (b)) ? (a) : (b) |
| #define | mpush(lz, hz, dz) |
| #define | mpop(lz, hz, dz) |
| #define | mnextsize(az) (nextHi[az]-nextLo[az]) |
| #define | mnextswap(az, bz) |
| #define | MAIN_QSORT_SMALL_THRESH 20 |
| #define | MAIN_QSORT_DEPTH_THRESH (BZ_N_RADIX + BZ_N_QSORT) |
| #define | MAIN_QSORT_STACK_SIZE 100 |
| #define | BIGFREQ(b) (ftab[((b)+1) << 8] - ftab[(b) << 8]) |
| #define | SETMASK (1 << 21) |
| #define | CLEARMASK (~(SETMASK)) |
Functions | |
| static __inline__ void | fallbackSimpleSort (UInt32 *fmap, UInt32 *eclass, Int32 lo, Int32 hi) |
| static void | fallbackQSort3 (UInt32 *fmap, UInt32 *eclass, Int32 loSt, Int32 hiSt) |
| static void | fallbackSort (UInt32 *fmap, UInt32 *eclass, UInt32 *bhtab, Int32 nblock, Int32 verb) |
| static __inline__ Bool | mainGtU (UInt32 i1, UInt32 i2, UChar *block, UInt16 *quadrant, UInt32 nblock, Int32 *budget) |
| static void | mainSimpleSort (UInt32 *ptr, UChar *block, UInt16 *quadrant, Int32 nblock, Int32 lo, Int32 hi, Int32 d, Int32 *budget) |
| static __inline__ UChar | mmed3 (UChar a, UChar b, UChar c) |
| static void | mainQSort3 (UInt32 *ptr, UChar *block, UInt16 *quadrant, Int32 nblock, Int32 loSt, Int32 hiSt, Int32 dSt, Int32 *budget) |
| static void | mainSort (UInt32 *ptr, UChar *block, UInt16 *quadrant, UInt32 *ftab, Int32 nblock, Int32 verb, Int32 *budget) |
| void | BZ2_blockSort (EState *s) |
Variables | |
| static Int32 | incs [14] |
| #define BIGFREQ | ( | b | ) | (ftab[((b)+1) << 8] - ftab[(b) << 8]) |
| #define CLEAR_BH | ( | zz | ) | bhtab[(zz) >> 5] &= ~(1 << ((zz) & 31)) |
| #define CLEARMASK (~(SETMASK)) |
| #define FALLBACK_QSORT_SMALL_THRESH 10 |
| #define FALLBACK_QSORT_STACK_SIZE 100 |
| #define fmin | ( | a, | |||
| b | ) | ((a) < (b)) ? (a) : (b) |
| #define fpop | ( | lz, | |||
| hz | ) |
Value:
{ sp--; \
lz = stackLo[sp]; \
hz = stackHi[sp]; }
Definition at line 131 of file blocksort.c.
Referenced by fallbackQSort3().
| #define fpush | ( | lz, | |||
| hz | ) |
Value:
{ stackLo[sp] = lz; \
stackHi[sp] = hz; \
sp++; }
Definition at line 127 of file blocksort.c.
Referenced by fallbackQSort3().
| #define fswap | ( | zz1, | |||
| zz2 | ) | { Int32 zztmp = zz1; zz1 = zz2; zz2 = zztmp; } |
| #define fvswap | ( | zzp1, | |||
| zzp2, | |||||
| zzn | ) |
Value:
{ \
Int32 yyp1 = (zzp1); \
Int32 yyp2 = (zzp2); \
Int32 yyn = (zzn); \
while (yyn > 0) { \
fswap(fmap[yyp1], fmap[yyp2]); \
yyp1++; yyp2++; yyn--; \
} \
}
Definition at line 113 of file blocksort.c.
Referenced by fallbackQSort3().
| #define ISSET_BH | ( | zz | ) | (bhtab[(zz) >> 5] & (1 << ((zz) & 31))) |
| #define MAIN_QSORT_DEPTH_THRESH (BZ_N_RADIX + BZ_N_QSORT) |
| #define MAIN_QSORT_SMALL_THRESH 20 |
| #define MAIN_QSORT_STACK_SIZE 100 |
| #define mmin | ( | a, | |||
| b | ) | ((a) < (b)) ? (a) : (b) |
| #define mnextsize | ( | az | ) | (nextHi[az]-nextLo[az]) |
| #define mnextswap | ( | az, | |||
| bz | ) |
Value:
{ Int32 tz; \
tz = nextLo[az]; nextLo[az] = nextLo[bz]; nextLo[bz] = tz; \
tz = nextHi[az]; nextHi[az] = nextHi[bz]; nextHi[bz] = tz; \
tz = nextD [az]; nextD [az] = nextD [bz]; nextD [bz] = tz; }
Definition at line 656 of file blocksort.c.
Referenced by mainQSort3().
| #define mpop | ( | lz, | |||
| hz, | |||||
| dz | ) |
Value:
{ sp--; \
lz = stackLo[sp]; \
hz = stackHi[sp]; \
dz = stackD [sp]; }
Definition at line 648 of file blocksort.c.
Referenced by mainQSort3().
| #define mpush | ( | lz, | |||
| hz, | |||||
| dz | ) |
Value:
{ stackLo[sp] = lz; \
stackHi[sp] = hz; \
stackD [sp] = dz; \
sp++; }
Definition at line 643 of file blocksort.c.
Referenced by mainQSort3().
| #define mswap | ( | zz1, | |||
| zz2 | ) | { Int32 zztmp = zz1; zz1 = zz2; zz2 = zztmp; } |
| #define mvswap | ( | zzp1, | |||
| zzp2, | |||||
| zzn | ) |
Value:
{ \
Int32 yyp1 = (zzp1); \
Int32 yyp2 = (zzp2); \
Int32 yyn = (zzn); \
while (yyn > 0) { \
mswap(ptr[yyp1], ptr[yyp2]); \
yyp1++; yyp2++; yyn--; \
} \
}
Definition at line 617 of file blocksort.c.
Referenced by mainQSort3().
| #define SET_BH | ( | zz | ) | bhtab[(zz) >> 5] |= (1 << ((zz) & 31)) |
| #define SETMASK (1 << 21) |
| #define UNALIGNED_BH | ( | zz | ) | ((zz) & 0x01f) |
| #define WORD_BH | ( | zz | ) | bhtab[(zz) >> 5] |
| void BZ2_blockSort | ( | EState * | s | ) |
Definition at line 1078 of file blocksort.c.
References EState::arr1, EState::arr2, AssertH, EState::block, BZ_N_OVERSHOOT, fallbackSort(), EState::ftab, mainSort(), EState::nblock, EState::origPtr, EState::ptr, EState::verbosity, VPrintf0, VPrintf3, and EState::workFactor.
Referenced by BZ2_compressBlock().
Definition at line 140 of file blocksort.c.
References AssertD, AssertH, FALLBACK_QSORT_SMALL_THRESH, FALLBACK_QSORT_STACK_SIZE, fallbackSimpleSort(), fmin, fpop, fpush, fswap, and fvswap.
Referenced by fallbackSort().
| static void fallbackSort | ( | UInt32 * | fmap, | |
| UInt32 * | eclass, | |||
| UInt32 * | bhtab, | |||
| Int32 | nblock, | |||
| Int32 | verb | |||
| ) | [static] |
Definition at line 259 of file blocksort.c.
References AssertH, CLEAR_BH, fallbackQSort3(), H, ISSET_BH, SET_BH, UNALIGNED_BH, VPrintf0, VPrintf1, and WORD_BH.
Referenced by BZ2_blockSort().
| static __inline__ Bool mainGtU | ( | UInt32 | i1, | |
| UInt32 | i2, | |||
| UChar * | block, | |||
| UInt16 * | quadrant, | |||
| UInt32 | nblock, | |||
| Int32 * | budget | |||
| ) | [static] |
Definition at line 394 of file blocksort.c.
References AssertD, and False.
Referenced by mainSimpleSort().
| static void mainQSort3 | ( | UInt32 * | ptr, | |
| UChar * | block, | |||
| UInt16 * | quadrant, | |||
| Int32 | nblock, | |||
| Int32 | loSt, | |||
| Int32 | hiSt, | |||
| Int32 | dSt, | |||
| Int32 * | budget | |||
| ) | [static] |
Definition at line 668 of file blocksort.c.
References AssertD, AssertH, MAIN_QSORT_DEPTH_THRESH, MAIN_QSORT_SMALL_THRESH, MAIN_QSORT_STACK_SIZE, mainSimpleSort(), mmed3(), mmin, mnextsize, mnextswap, mpop, mpush, mswap, mvswap, and True.
Referenced by mainSort().
| static void mainSimpleSort | ( | UInt32 * | ptr, | |
| UChar * | block, | |||
| UInt16 * | quadrant, | |||
| Int32 | nblock, | |||
| Int32 | lo, | |||
| Int32 | hi, | |||
| Int32 | d, | |||
| Int32 * | budget | |||
| ) | [static] |
Definition at line 532 of file blocksort.c.
References incs, mainGtU(), and True.
Referenced by mainQSort3().
| static void mainSort | ( | UInt32 * | ptr, | |
| UChar * | block, | |||
| UInt16 * | quadrant, | |||
| UInt32 * | ftab, | |||
| Int32 | nblock, | |||
| Int32 | verb, | |||
| Int32 * | budget | |||
| ) | [static] |
Definition at line 798 of file blocksort.c.
References AssertH, BIGFREQ, BZ_N_OVERSHOOT, BZ_N_RADIX, CLEARMASK, False, mainQSort3(), SETMASK, True, VPrintf0, VPrintf3, and VPrintf4.
Referenced by BZ2_blockSort().
Initial value:
{ 1, 4, 13, 40, 121, 364, 1093, 3280,
9841, 29524, 88573, 265720,
797161, 2391484 }
Definition at line 527 of file blocksort.c.
Referenced by mainSimpleSort().