[experimental-ims] f6536dac Use scalbn(3) rather than exp2(3), it should be faster and more portable.

Geoff Simmons geoff at varnish-cache.org
Mon Jan 9 21:52:28 CET 2012


commit f6536dac9a6c9fdda4236e0ad92cfc4cdd6dd34a
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Tue Nov 1 09:41:00 2011 +0000

    Use scalbn(3) rather than exp2(3), it should be faster and more portable.
    
    Fixes	#1046

diff --git a/bin/varnishd/cache_dir_random.c b/bin/varnishd/cache_dir_random.c
index f18c7d7..d6570ed 100644
--- a/bin/varnishd/cache_dir_random.c
+++ b/bin/varnishd/cache_dir_random.c
@@ -91,7 +91,7 @@ vdi_random_sha(const char *input, ssize_t len)
 	SHA256_Init(&ctx);
 	SHA256_Update(&ctx, input, len);
 	SHA256_Final(sign, &ctx);
-	return (vle32dec(sign) / exp2(32));
+	return (scalbn(vle32dec(sign), -32));
 }
 
 /*
@@ -113,11 +113,11 @@ vdi_random_init_seed(const struct vdi_random *vs, const struct sess *sp)
 		break;
 	case c_hash:
 		AN(sp->digest);
-		retval = vle32dec(sp->digest) / exp2(32);
+		retval = scalbn(vle32dec(sp->digest), -32);
 		break;
 	case c_random:
 	default:
-		retval = random() / exp2(31);
+		retval = scalbn(random(), -31);
 		break;
 	}
 	return (retval);



More information about the varnish-commit mailing list