From 29dff116a202a0a7f7dc2a1e34db43c4263ebf8e Mon Sep 17 00:00:00 2001 From: root Date: Tue, 13 Nov 2007 07:54:18 +0000 Subject: *** empty log message *** --- lzf_c.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'lzf_c.c') diff --git a/lzf_c.c b/lzf_c.c index 4248ec9..5b42a36 100644 --- a/lzf_c.c +++ b/lzf_c.c @@ -77,6 +77,17 @@ : "0" (dst), "1" (src), "2" (len)); #endif +#if __GNUC__ >= 3 +# define expect(expr,value) __builtin_expect ((expr),(value)) +# define inline inline +#else +# define expect(expr,value) (expr) +# define inline static +#endif + +#define expect_false(expr) expect ((expr) != 0, 0) +#define expect_true(expr) expect ((expr) != 0, 1) + /* * compressed format * @@ -118,7 +129,7 @@ lzf_compress (const void *const in_data, unsigned int in_len, for (;;) { - if (ip < in_end - 2) + if (expect_true (ip < in_end - 2)) { hval = NEXT (hval, ip); hslot = htab + IDX (hval); @@ -146,7 +157,7 @@ lzf_compress (const void *const in_data, unsigned int in_len, unsigned int maxlen = in_end - ip - len; maxlen = maxlen > MAX_REF ? MAX_REF : maxlen; - if (op + lit + 1 + 3 >= out_end) + if (expect_false (op + lit + 1 + 3 >= out_end)) return 0; do @@ -205,14 +216,14 @@ lzf_compress (const void *const in_data, unsigned int in_len, continue; } } - else if (ip == in_end) + else if (expect_false (ip == in_end)) break; /* one more literal byte we must copy */ lit++; ip++; - if (lit == MAX_LIT) + if (expect_false (lit == MAX_LIT)) { if (op + 1 + MAX_LIT >= out_end) return 0; -- cgit v1.2.3