| Index: third_party/zlib/inffast.c
|
| diff --git a/third_party/zlib/inffast.c b/third_party/zlib/inffast.c
|
| index bda59ceb6a12b2d7de80ef3c1e7318e54fc979ac..0dbd1dbc09f2f69425405863bfe1080e3ca2b3f5 100644
|
| --- a/third_party/zlib/inffast.c
|
| +++ b/third_party/zlib/inffast.c
|
| @@ -1,5 +1,5 @@
|
| /* inffast.c -- fast decoding
|
| - * Copyright (C) 1995-2008, 2010, 2013 Mark Adler
|
| + * Copyright (C) 1995-2017 Mark Adler
|
| * For conditions of distribution and use, see copyright notice in zlib.h
|
| */
|
|
|
| @@ -8,26 +8,9 @@
|
| #include "inflate.h"
|
| #include "inffast.h"
|
|
|
| -#ifndef ASMINF
|
| -
|
| -/* Allow machine dependent optimization for post-increment or pre-increment.
|
| - Based on testing to date,
|
| - Pre-increment preferred for:
|
| - - PowerPC G3 (Adler)
|
| - - MIPS R5000 (Randers-Pehrson)
|
| - Post-increment preferred for:
|
| - - none
|
| - No measurable difference:
|
| - - Pentium III (Anderson)
|
| - - M68060 (Nikl)
|
| - */
|
| -#ifdef POSTINC
|
| -# define OFF 0
|
| -# define PUP(a) *(a)++
|
| +#ifdef ASMINF
|
| +# pragma message("Assembler code may have bugs -- use at your own risk")
|
| #else
|
| -# define OFF 1
|
| -# define PUP(a) *++(a)
|
| -#endif
|
|
|
| /*
|
| Decode literal, length, and distance codes and write out the resulting
|
| @@ -96,9 +79,9 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
|
|
|
| /* copy state to local variables */
|
| state = (struct inflate_state FAR *)strm->state;
|
| - in = strm->next_in - OFF;
|
| + in = strm->next_in;
|
| last = in + (strm->avail_in - 5);
|
| - out = strm->next_out - OFF;
|
| + out = strm->next_out;
|
| beg = out - (start - strm->avail_out);
|
| end = out + (strm->avail_out - 257);
|
| #ifdef INFLATE_STRICT
|
| @@ -119,9 +102,9 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
|
| input data or output space */
|
| do {
|
| if (bits < 15) {
|
| - hold += (unsigned long)(PUP(in)) << bits;
|
| + hold += (unsigned long)(*in++) << bits;
|
| bits += 8;
|
| - hold += (unsigned long)(PUP(in)) << bits;
|
| + hold += (unsigned long)(*in++) << bits;
|
| bits += 8;
|
| }
|
| here = lcode[hold & lmask];
|
| @@ -134,14 +117,14 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
|
| Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
|
| "inflate: literal '%c'\n" :
|
| "inflate: literal 0x%02x\n", here.val));
|
| - PUP(out) = (unsigned char)(here.val);
|
| + *out++ = (unsigned char)(here.val);
|
| }
|
| else if (op & 16) { /* length base */
|
| len = (unsigned)(here.val);
|
| op &= 15; /* number of extra bits */
|
| if (op) {
|
| if (bits < op) {
|
| - hold += (unsigned long)(PUP(in)) << bits;
|
| + hold += (unsigned long)(*in++) << bits;
|
| bits += 8;
|
| }
|
| len += (unsigned)hold & ((1U << op) - 1);
|
| @@ -150,9 +133,9 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
|
| }
|
| Tracevv((stderr, "inflate: length %u\n", len));
|
| if (bits < 15) {
|
| - hold += (unsigned long)(PUP(in)) << bits;
|
| + hold += (unsigned long)(*in++) << bits;
|
| bits += 8;
|
| - hold += (unsigned long)(PUP(in)) << bits;
|
| + hold += (unsigned long)(*in++) << bits;
|
| bits += 8;
|
| }
|
| here = dcode[hold & dmask];
|
| @@ -165,10 +148,10 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
|
| dist = (unsigned)(here.val);
|
| op &= 15; /* number of extra bits */
|
| if (bits < op) {
|
| - hold += (unsigned long)(PUP(in)) << bits;
|
| + hold += (unsigned long)(*in++) << bits;
|
| bits += 8;
|
| if (bits < op) {
|
| - hold += (unsigned long)(PUP(in)) << bits;
|
| + hold += (unsigned long)(*in++) << bits;
|
| bits += 8;
|
| }
|
| }
|
| @@ -196,30 +179,30 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
|
| #ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
|
| if (len <= op - whave) {
|
| do {
|
| - PUP(out) = 0;
|
| + *out++ = 0;
|
| } while (--len);
|
| continue;
|
| }
|
| len -= op - whave;
|
| do {
|
| - PUP(out) = 0;
|
| + *out++ = 0;
|
| } while (--op > whave);
|
| if (op == 0) {
|
| from = out - dist;
|
| do {
|
| - PUP(out) = PUP(from);
|
| + *out++ = *from++;
|
| } while (--len);
|
| continue;
|
| }
|
| #endif
|
| }
|
| - from = window - OFF;
|
| + from = window;
|
| if (wnext == 0) { /* very common case */
|
| from += wsize - op;
|
| if (op < len) { /* some from window */
|
| len -= op;
|
| do {
|
| - PUP(out) = PUP(from);
|
| + *out++ = *from++;
|
| } while (--op);
|
| from = out - dist; /* rest from output */
|
| }
|
| @@ -230,14 +213,14 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
|
| if (op < len) { /* some from end of window */
|
| len -= op;
|
| do {
|
| - PUP(out) = PUP(from);
|
| + *out++ = *from++;
|
| } while (--op);
|
| - from = window - OFF;
|
| + from = window;
|
| if (wnext < len) { /* some from start of window */
|
| op = wnext;
|
| len -= op;
|
| do {
|
| - PUP(out) = PUP(from);
|
| + *out++ = *from++;
|
| } while (--op);
|
| from = out - dist; /* rest from output */
|
| }
|
| @@ -248,35 +231,35 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
|
| if (op < len) { /* some from window */
|
| len -= op;
|
| do {
|
| - PUP(out) = PUP(from);
|
| + *out++ = *from++;
|
| } while (--op);
|
| from = out - dist; /* rest from output */
|
| }
|
| }
|
| while (len > 2) {
|
| - PUP(out) = PUP(from);
|
| - PUP(out) = PUP(from);
|
| - PUP(out) = PUP(from);
|
| + *out++ = *from++;
|
| + *out++ = *from++;
|
| + *out++ = *from++;
|
| len -= 3;
|
| }
|
| if (len) {
|
| - PUP(out) = PUP(from);
|
| + *out++ = *from++;
|
| if (len > 1)
|
| - PUP(out) = PUP(from);
|
| + *out++ = *from++;
|
| }
|
| }
|
| else {
|
| from = out - dist; /* copy direct from output */
|
| do { /* minimum length is three */
|
| - PUP(out) = PUP(from);
|
| - PUP(out) = PUP(from);
|
| - PUP(out) = PUP(from);
|
| + *out++ = *from++;
|
| + *out++ = *from++;
|
| + *out++ = *from++;
|
| len -= 3;
|
| } while (len > 2);
|
| if (len) {
|
| - PUP(out) = PUP(from);
|
| + *out++ = *from++;
|
| if (len > 1)
|
| - PUP(out) = PUP(from);
|
| + *out++ = *from++;
|
| }
|
| }
|
| }
|
| @@ -313,8 +296,8 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
|
| hold &= (1U << bits) - 1;
|
|
|
| /* update state and return */
|
| - strm->next_in = in + OFF;
|
| - strm->next_out = out + OFF;
|
| + strm->next_in = in;
|
| + strm->next_out = out;
|
| strm->avail_in = (unsigned)(in < last ? 5 + (last - in) : 5 - (in - last));
|
| strm->avail_out = (unsigned)(out < end ?
|
| 257 + (end - out) : 257 - (out - end));
|
|
|