aboutsummaryrefslogtreecommitdiff
path: root/archival/libarchive
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2018-02-03 17:22:06 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2018-02-03 17:22:06 +0100
commit2109fce41093ad38c94fafcf610957b5c38b0b4c (patch)
treeeca3e3bc63385bdd300967bfca586fb7ce71ac4f /archival/libarchive
parentaaa3818a75bb64bb96a1cda9412162aa7a8a44de (diff)
downloadbusybox-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.c65
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;