From 1ec80039288073294e3e61b0c680e9c95688e786 Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Mon, 14 Mar 2016 20:51:37 +0100 Subject: Optimise zswap MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- zahl.h | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'zahl.h') diff --git a/zahl.h b/zahl.h index 37711b2..9a03b26 100644 --- a/zahl.h +++ b/zahl.h @@ -189,7 +189,6 @@ void zperror(const char *); /* Identical to perror(3p) except it sup ZAHL_INLINE void zinit(z_t a) { a->alloced = 0; a->chars = 0; } -ZAHL_INLINE void zswap(z_t a, z_t b) { z_t t; *t = *a; *a = *b; *b = *t; } ZAHL_INLINE int zeven(z_t a) { return !a->sign || !(a->chars[0] & 1); } ZAHL_INLINE int zodd(z_t a) { return a->sign && (a->chars[0] & 1); } ZAHL_INLINE int zeven_nonzero(z_t a) { return !(a->chars[0] & 1); } @@ -200,6 +199,25 @@ ZAHL_INLINE void zabs(z_t a, z_t b) { if (a != b) zset(a, b); a->sign = !!a->s ZAHL_INLINE void zneg(z_t a, z_t b) { if (a != b) zset(a, b); a->sign = -a->sign; } +ZAHL_INLINE void +zswap(z_t a, z_t b) +{ + z_t t; + t->sign = a->sign; + a->sign = b->sign; + b->sign = t->sign; + t->used = b->used; + b->used = a->used; + a->used = t->used; + t->alloced = a->alloced; + a->alloced = b->alloced; + b->alloced = t->alloced; + t->chars = b->chars; + b->chars = a->chars; + a->chars = t->chars; +} + + ZAHL_INLINE void zseti(z_t a, int64_t b) { -- cgit v1.2.3-70-g09d2