wok rev 25647

Backout salvador 10% speedup: crashes with large files
author Pascal Bellard <pascal.bellard@slitaz.org>
date Fri Jan 26 12:15:51 2024 +0000 (3 months ago)
parents eaa4b9eff943
children 8ed39abf4bbb
files emu2/receipt salvador/receipt salvador/stuff/shrink.u
line diff
     1.1 --- a/emu2/receipt	Sun Jan 21 10:02:07 2024 +0000
     1.2 +++ b/emu2/receipt	Fri Jan 26 12:15:51 2024 +0000
     1.3 @@ -24,6 +24,7 @@
     1.4  compile_rules()
     1.5  {
     1.6  	cp $stuff/* src
     1.7 +	sed -i '/HALT instruction/{N;s|.*|/*& */|}' src/cpu.c
     1.8  	mkdir obj
     1.9  	make CC=gcc-83 DESTDIR=$DESTDIR install
    1.10  }
    1.11 @@ -35,3 +36,28 @@
    1.12  	cp $src/README.md $install/usr/doc
    1.13  	cp -a $install/usr/bin $fs/usr
    1.14  }
    1.15 +
    1.16 +# Post install command for Tazpkg.
    1.17 +post_install()
    1.18 +{
    1.19 +	fmt="binfmt_misc"
    1.20 +	proc="/proc/sys/fs/binfmt_misc"
    1.21 +	exe=":EMU2:E::exe::/usr/bin/emu2:"
    1.22 +	com=":EMU2:E::com::/usr/bin/emu2:"
    1.23 +	cat > /tmp/runcom$$ <<EOT
    1.24 +[ ! -e $proc/register ] && modprobe $fmt && mount -t $fmt $fmt $proc
    1.25 +echo "$exe" >$proc/register
    1.26 +echo "$com" >$proc/register
    1.27 +EOT
    1.28 +	rc="$1/etc/init.d/local.sh"
    1.29 +	grep -q "$com" $rc || cat /tmp/runcom$$ >> $rc
    1.30 +	[ -n "$1" ] || . /tmp/runcom$$
    1.31 +	rm -f /tmp/runcom$$
    1.32 +}
    1.33 +
    1.34 +# Pre remove command for Tazpkg.
    1.35 +pre_remove()
    1.36 +{
    1.37 +	echo -1 > /proc/sys/fs/binfmt_misc/EMU2
    1.38 +	sed -i '/binfmt_misc/{NN;/EMU2:E::com/d}' "$1/etc/init.d/local.sh"
    1.39 +}
     2.1 --- a/salvador/receipt	Sun Jan 21 10:02:07 2024 +0000
     2.2 +++ b/salvador/receipt	Fri Jan 26 12:15:51 2024 +0000
     2.3 @@ -23,7 +23,6 @@
     2.4  {
     2.5  	sed -i 's|^CC=.*$|CC=gcc|;s|^CFLAGS=|&-std=gnu99 |' \
     2.6  		Makefile
     2.7 -	patch -p0 < $stuff/shrink.u
     2.8  	make
     2.9  }
    2.10  
     3.1 --- a/salvador/stuff/shrink.u	Sun Jan 21 10:02:07 2024 +0000
     3.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.3 @@ -1,102 +0,0 @@
     3.4 ---- src/shrink.c
     3.5 -+++ src/shrink.c
     3.6 -@@ -41,7 +41,9 @@
     3.7 - #define OFFSET_COST(__offset)    (((__offset) <= 128) ? 8 : (7 + salvador_get_elias_size((((__offset) - 1) >> 7) + 1)))
     3.8 - 
     3.9 - /** Costs, per length */
    3.10 --static const char salvador_cost_for_len[8192] = {
    3.11 -+static char salvador_cost_for_len[MAX_OFFSET];
    3.12 -+
    3.13 -+/**
    3.14 -    0, 2, 4, 4, 6, 6, 6, 6, 8, 8, 8, 8, 8, 8, 8, 8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
    3.15 -    18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
    3.16 -    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
    3.17 -@@ -74,7 +76,8 @@
    3.18 -    26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
    3.19 -    26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
    3.20 -    26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
    3.21 --};
    3.22 -+   ...
    3.23 -+ */
    3.24 - 
    3.25 - /**
    3.26 -  * Get the number of bits required to encode a gamma value
    3.27 -@@ -84,29 +87,7 @@
    3.28 -  * @return number of bits required for encoding
    3.29 -  */
    3.30 - static int salvador_get_elias_size(const int nValue) {
    3.31 --   if (nValue >= 0 && nValue < 8192) {
    3.32 --      return salvador_cost_for_len[nValue] - TOKEN_SIZE;
    3.33 --   }
    3.34 --   else {
    3.35 --      int i = nValue;
    3.36 --      int nBits = 0;
    3.37 --
    3.38 --      i |= (i >> 1);
    3.39 --      i |= (i >> 2);
    3.40 --      i |= (i >> 4);
    3.41 --      i |= (i >> 8);
    3.42 --      i |= (i >> 16);
    3.43 --      i = (i - (i >> 1));
    3.44 --
    3.45 --      while ((i >>= 1) > 0) {
    3.46 --         nBits++;
    3.47 --         nBits++;
    3.48 --      }
    3.49 --
    3.50 --      nBits++;
    3.51 --
    3.52 --      return nBits;
    3.53 --   }
    3.54 -+   return salvador_cost_for_len[nValue] - TOKEN_SIZE;
    3.55 - }
    3.56 - 
    3.57 - /**
    3.58 -@@ -317,10 +298,7 @@
    3.59 -  * @return number of extra bits required
    3.60 -  */
    3.61 - static inline int salvador_get_literals_varlen_size(const int nLength) {
    3.62 --   if (nLength >= 0 && nLength < 8192)
    3.63 --      return salvador_cost_for_len[nLength];
    3.64 --   else
    3.65 --      return TOKEN_SIZE + salvador_get_elias_size(nLength);
    3.66 -+   return salvador_cost_for_len[nLength];
    3.67 - }
    3.68 - 
    3.69 - /**
    3.70 -@@ -642,7 +620,7 @@
    3.71 - 
    3.72 -                for (k = nStartingMatchLen; k <= nMatchLen; k++) {
    3.73 -                   salvador_arrival* pDestSlots = &cur_arrival[k * nMaxArrivalsPerPosition];
    3.74 --                  const int nMatchLenCost = (k < 8192) ? salvador_cost_for_len[k - 1] : (salvador_get_match_varlen_size_norep(k) + TOKEN_SIZE /* token */);
    3.75 -+                  const int nMatchLenCost = salvador_cost_for_len[k - 1];
    3.76 -                   const int nCodingChoiceCost = nMatchLenCost + nNoRepmatchOffsetCost;
    3.77 - 
    3.78 -                   if (nCodingChoiceCost < pDestSlots[nArrivalsPerPosition - 2].cost ||
    3.79 -@@ -716,7 +694,7 @@
    3.80 -             }
    3.81 - 
    3.82 -             for (k = nStartingMatchLen; k <= (nOverallMaxRepLen < nMatchLen ? nOverallMaxRepLen : nMatchLen); k++) {
    3.83 --               const int nMatchLenCost = (k < 8192) ? salvador_cost_for_len[k] : (salvador_get_match_varlen_size_rep(k) + TOKEN_SIZE /* token */);
    3.84 -+               const int nMatchLenCost = salvador_cost_for_len[k];
    3.85 -                salvador_arrival* pDestSlots = &cur_arrival[k * nMaxArrivalsPerPosition];
    3.86 -                int nCurRepMatchArrival;
    3.87 - 
    3.88 -@@ -1789,6 +1767,17 @@
    3.89 - static int salvador_compressor_init(salvador_compressor *pCompressor, const int nBlockSize, const int nMaxWindowSize, const size_t nMaxOffset, const int nMaxArrivals, const int nFlags) {
    3.90 -    int nResult;
    3.91 - 
    3.92 -+   if (salvador_cost_for_len[1] == 0) {
    3.93 -+      int i, j, k;
    3.94 -+
    3.95 -+      for (i = 0, j = 0, k = 1; i < MAX_OFFSET; i++) {
    3.96 -+         if (k <= i) {
    3.97 -+            j = j + 2;
    3.98 -+            k = k + k;
    3.99 -+         }
   3.100 -+         salvador_cost_for_len[i] = j;
   3.101 -+      }
   3.102 -+   }
   3.103 -    nResult = divsufsort_init(&pCompressor->divsufsort_context);
   3.104 -    pCompressor->intervals = NULL;
   3.105 -    pCompressor->pos_data = NULL;