summaryrefslogtreecommitdiff
path: root/src/lzo1b_d.ch
diff options
context:
space:
mode:
authorKévin THIERRY <kevin.thierry@open.eurogiciel.org>2014-12-23 14:06:25 +0100
committerKévin THIERRY <kevin.thierry@open.eurogiciel.org>2014-12-23 14:06:25 +0100
commit79a9578a33ecd3093970bd18df677edc9214fafb (patch)
tree8ae5c6780a1fcd2124e71f27ad9b4256acd24268 /src/lzo1b_d.ch
parent1bb1ce141783168d44a38cd1bb6b822eb13114fc (diff)
downloadlzo-79a9578a33ecd3093970bd18df677edc9214fafb.tar.gz
lzo-79a9578a33ecd3093970bd18df677edc9214fafb.tar.bz2
lzo-79a9578a33ecd3093970bd18df677edc9214fafb.zip
Imported Upstream version 2.08upstream/2.08sandbox/kevinthierry/upstream
Diffstat (limited to 'src/lzo1b_d.ch')
-rw-r--r--src/lzo1b_d.ch43
1 files changed, 16 insertions, 27 deletions
diff --git a/src/lzo1b_d.ch b/src/lzo1b_d.ch
index e38fad5..cf25357 100644
--- a/src/lzo1b_d.ch
+++ b/src/lzo1b_d.ch
@@ -2,19 +2,7 @@
This file is part of the LZO real-time data compression library.
- Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer
- Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer
- Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer
- Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer
- Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer
- Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer
- Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer
- Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer
- Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer
- Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer
- Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer
- Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer
- Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer
+ Copyright (C) 1996-2014 Markus Franz Xaver Johannes Oberhumer
All Rights Reserved.
The LZO library is free software; you can redistribute it and/or
@@ -50,10 +38,10 @@ DO_DECOMPRESS ( const lzo_bytep in , lzo_uint in_len,
lzo_bytep out, lzo_uintp out_len,
lzo_voidp wrkmem )
{
- register lzo_bytep op;
- register const lzo_bytep ip;
- register lzo_uint t;
- register const lzo_bytep m_pos;
+ lzo_bytep op;
+ const lzo_bytep ip;
+ lzo_uint t;
+ const lzo_bytep m_pos;
const lzo_bytep const ip_end = in + in_len;
#if defined(HAVE_ANY_OP)
@@ -65,7 +53,7 @@ DO_DECOMPRESS ( const lzo_bytep in , lzo_uint in_len,
op = out;
ip = in;
- while (TEST_IP && TEST_OP)
+ while (TEST_IP_AND_TEST_OP)
{
t = *ip++; /* get marker */
@@ -93,10 +81,10 @@ DO_DECOMPRESS ( const lzo_bytep in , lzo_uint in_len,
}
NEED_IP(t); NEED_OP(t);
-#if 1 && defined(LZO_UNALIGNED_OK_4)
+#if 1 && (LZO_OPT_UNALIGNED32)
do {
- * (lzo_uint32p) (op+0) = * (const lzo_uint32p) (ip+0);
- * (lzo_uint32p) (op+4) = * (const lzo_uint32p) (ip+4);
+ UA_COPY4(op+0, ip+0);
+ UA_COPY4(op+4, ip+4);
op += 8; ip += 8;
t -= 8;
} while (t > 0);
@@ -110,11 +98,11 @@ DO_DECOMPRESS ( const lzo_bytep in , lzo_uint in_len,
NEED_IP(t); NEED_OP(t);
/* copy literal run */
-#if 1 && defined(LZO_UNALIGNED_OK_4)
+#if 1 && (LZO_OPT_UNALIGNED32)
if (t >= 4)
{
do {
- * (lzo_uint32p) op = * (const lzo_uint32p) ip;
+ UA_COPY4(op, ip);
op += 4; ip += 4; t -= 4;
} while (t >= 4);
if (t > 0) do *op++ = *ip++; while (--t > 0);
@@ -133,7 +121,7 @@ literal2:
#endif
/* after a literal a match must follow */
- while (TEST_IP && TEST_OP)
+ while (TEST_IP_AND_TEST_OP)
{
t = *ip++; /* get R1 marker */
if (t >= R0MIN)
@@ -184,6 +172,7 @@ match:
{
t += 255;
ip++;
+ TEST_OV(t);
NEED_IP(1);
}
t += (M4_MIN_LEN - M3_MIN_LEN) + *ip++;
@@ -202,13 +191,13 @@ match:
/* copy match */
assert(m_pos >= out); assert(m_pos < op);
TEST_LB(m_pos); NEED_OP(t + M3_MIN_LEN - 1);
-#if defined(LZO_UNALIGNED_OK_4)
+#if (LZO_OPT_UNALIGNED32)
if (t >= 2 * 4 - (M3_MIN_LEN - 1) && (op - m_pos) >= 4)
{
- * (lzo_uint32p) op = * (const lzo_uint32p) m_pos;
+ UA_COPY4(op, m_pos);
op += 4; m_pos += 4; t -= 4 - (M3_MIN_LEN - 1);
do {
- * (lzo_uint32p) op = * (const lzo_uint32p) m_pos;
+ UA_COPY4(op, m_pos);
op += 4; m_pos += 4; t -= 4;
} while (t >= 4);
if (t > 0) do *op++ = *m_pos++; while (--t > 0);