diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2018-02-03 17:22:06 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2018-02-03 17:22:06 +0100 |
commit | 2109fce41093ad38c94fafcf610957b5c38b0b4c (patch) | |
tree | eca3e3bc63385bdd300967bfca586fb7ce71ac4f /archival/libarchive | |
parent | aaa3818a75bb64bb96a1cda9412162aa7a8a44de (diff) | |
download | busybox-w32-2109fce41093ad38c94fafcf610957b5c38b0b4c.tar.gz busybox-w32-2109fce41093ad38c94fafcf610957b5c38b0b4c.tar.bz2 busybox-w32-2109fce41093ad38c94fafcf610957b5c38b0b4c.zip |
bzip2: make locals in mainSort() saner, convert one of them from uint16 to unsigned
function old new delta
mainSort 1192 1178 -14
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'archival/libarchive')
-rw-r--r-- | archival/libarchive/bz/blocksort.c | 65 |
1 files changed, 36 insertions, 29 deletions
diff --git a/archival/libarchive/bz/blocksort.c b/archival/libarchive/bz/blocksort.c index 19341369c..a95d1f54d 100644 --- a/archival/libarchive/bz/blocksort.c +++ b/archival/libarchive/bz/blocksort.c | |||
@@ -729,10 +729,8 @@ void mainSort(EState* state, | |||
729 | int32_t nblock, | 729 | int32_t nblock, |
730 | int32_t* budget) | 730 | int32_t* budget) |
731 | { | 731 | { |
732 | int32_t i, j, k, ss, sb; | 732 | int32_t i, j; |
733 | uint8_t c1; | ||
734 | int32_t numQSorted; | 733 | int32_t numQSorted; |
735 | uint16_t s; | ||
736 | Bool bigDone[256]; | 734 | Bool bigDone[256]; |
737 | /* bbox: moved to EState to save stack | 735 | /* bbox: moved to EState to save stack |
738 | int32_t runningOrder[256]; | 736 | int32_t runningOrder[256]; |
@@ -785,33 +783,36 @@ void mainSort(EState* state, | |||
785 | ftab[i] = j; | 783 | ftab[i] = j; |
786 | } | 784 | } |
787 | 785 | ||
788 | s = block[0] << 8; | 786 | { |
789 | i = nblock - 1; | 787 | unsigned s; |
788 | s = block[0] << 8; | ||
789 | i = nblock - 1; | ||
790 | #if CONFIG_BZIP2_FAST >= 2 | 790 | #if CONFIG_BZIP2_FAST >= 2 |
791 | for (; i >= 3; i -= 4) { | 791 | for (; i >= 3; i -= 4) { |
792 | s = (s >> 8) | (block[i] << 8); | 792 | s = (s >> 8) | (block[i] << 8); |
793 | j = ftab[s] - 1; | 793 | j = ftab[s] - 1; |
794 | ftab[s] = j; | 794 | ftab[s] = j; |
795 | ptr[j] = i; | 795 | ptr[j] = i; |
796 | s = (s >> 8) | (block[i-1] << 8); | 796 | s = (s >> 8) | (block[i-1] << 8); |
797 | j = ftab[s] - 1; | 797 | j = ftab[s] - 1; |
798 | ftab[s] = j; | 798 | ftab[s] = j; |
799 | ptr[j] = i-1; | 799 | ptr[j] = i-1; |
800 | s = (s >> 8) | (block[i-2] << 8); | 800 | s = (s >> 8) | (block[i-2] << 8); |
801 | j = ftab[s] - 1; | 801 | j = ftab[s] - 1; |
802 | ftab[s] = j; | 802 | ftab[s] = j; |
803 | ptr[j] = i-2; | 803 | ptr[j] = i-2; |
804 | s = (s >> 8) | (block[i-3] << 8); | 804 | s = (s >> 8) | (block[i-3] << 8); |
805 | j = ftab[s] - 1; | 805 | j = ftab[s] - 1; |
806 | ftab[s] = j; | 806 | ftab[s] = j; |
807 | ptr[j] = i-3; | 807 | ptr[j] = i-3; |
808 | } | 808 | } |
809 | #endif | 809 | #endif |
810 | for (; i >= 0; i--) { | 810 | for (; i >= 0; i--) { |
811 | s = (s >> 8) | (block[i] << 8); | 811 | s = (s >> 8) | (block[i] << 8); |
812 | j = ftab[s] - 1; | 812 | j = ftab[s] - 1; |
813 | ftab[s] = j; | 813 | ftab[s] = j; |
814 | ptr[j] = i; | 814 | ptr[j] = i; |
815 | } | ||
815 | } | 816 | } |
816 | 817 | ||
817 | /* | 818 | /* |
@@ -827,7 +828,7 @@ void mainSort(EState* state, | |||
827 | { | 828 | { |
828 | /* bbox: was: int32_t h = 1; */ | 829 | /* bbox: was: int32_t h = 1; */ |
829 | /* do h = 3 * h + 1; while (h <= 256); */ | 830 | /* do h = 3 * h + 1; while (h <= 256); */ |
830 | uint32_t h = 364; | 831 | unsigned h = 364; |
831 | 832 | ||
832 | do { | 833 | do { |
833 | /*h = h / 3;*/ | 834 | /*h = h / 3;*/ |
@@ -855,6 +856,7 @@ void mainSort(EState* state, | |||
855 | numQSorted = 0; | 856 | numQSorted = 0; |
856 | 857 | ||
857 | for (i = 0; /*i <= 255*/; i++) { | 858 | for (i = 0; /*i <= 255*/; i++) { |
859 | int32_t ss; | ||
858 | 860 | ||
859 | /* | 861 | /* |
860 | * Process big buckets, starting with the least full. | 862 | * Process big buckets, starting with the least full. |
@@ -874,6 +876,7 @@ void mainSort(EState* state, | |||
874 | */ | 876 | */ |
875 | for (j = 0; j <= 255; j++) { | 877 | for (j = 0; j <= 255; j++) { |
876 | if (j != ss) { | 878 | if (j != ss) { |
879 | int32_t sb; | ||
877 | sb = (ss << 8) + j; | 880 | sb = (ss << 8) + j; |
878 | if (!(ftab[sb] & SETMASK)) { | 881 | if (!(ftab[sb] & SETMASK)) { |
879 | int32_t lo = ftab[sb] & CLEARMASK; | 882 | int32_t lo = ftab[sb] & CLEARMASK; |
@@ -906,6 +909,8 @@ void mainSort(EState* state, | |||
906 | copyEnd [j] = (ftab[(j << 8) + ss + 1] & CLEARMASK) - 1; | 909 | copyEnd [j] = (ftab[(j << 8) + ss + 1] & CLEARMASK) - 1; |
907 | } | 910 | } |
908 | for (j = ftab[ss << 8] & CLEARMASK; j < copyStart[ss]; j++) { | 911 | for (j = ftab[ss << 8] & CLEARMASK; j < copyStart[ss]; j++) { |
912 | unsigned c1; | ||
913 | int32_t k; | ||
909 | k = ptr[j] - 1; | 914 | k = ptr[j] - 1; |
910 | if (k < 0) | 915 | if (k < 0) |
911 | k += nblock; | 916 | k += nblock; |
@@ -914,6 +919,8 @@ void mainSort(EState* state, | |||
914 | ptr[copyStart[c1]++] = k; | 919 | ptr[copyStart[c1]++] = k; |
915 | } | 920 | } |
916 | for (j = (ftab[(ss+1) << 8] & CLEARMASK) - 1; j > copyEnd[ss]; j--) { | 921 | for (j = (ftab[(ss+1) << 8] & CLEARMASK) - 1; j > copyEnd[ss]; j--) { |
922 | unsigned c1; | ||
923 | int32_t k; | ||
917 | k = ptr[j]-1; | 924 | k = ptr[j]-1; |
918 | if (k < 0) | 925 | if (k < 0) |
919 | k += nblock; | 926 | k += nblock; |