Module Name: src
Committed By: christos
Date: Wed May 25 14:41:46 UTC 2011
Modified Files:
src/libexec/ld.elf_so: xmalloc.c
Log Message:
Don't use division since we are only dealing with powers of 2.
To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/libexec/ld.elf_so/xmalloc.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/libexec/ld.elf_so/xmalloc.c
diff -u src/libexec/ld.elf_so/xmalloc.c:1.10 src/libexec/ld.elf_so/xmalloc.c:1.11
--- src/libexec/ld.elf_so/xmalloc.c:1.10 Fri Dec 3 18:07:49 2010
+++ src/libexec/ld.elf_so/xmalloc.c Wed May 25 10:41:46 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: xmalloc.c,v 1.10 2010/12/03 23:07:49 joerg Exp $ */
+/* $NetBSD: xmalloc.c,v 1.11 2011/05/25 14:41:46 christos Exp $ */
/*
* Copyright 1996 John D. Polstra.
@@ -77,7 +77,7 @@
#include <sys/cdefs.h>
#ifndef lint
-__RCSID("$NetBSD: xmalloc.c,v 1.10 2010/12/03 23:07:49 joerg Exp $");
+__RCSID("$NetBSD: xmalloc.c,v 1.11 2011/05/25 14:41:46 christos Exp $");
#endif /* not lint */
#include <stdlib.h>
@@ -148,6 +148,7 @@
static size_t pagesz; /* page size */
static size_t pagebucket; /* page size bucket */
+static size_t pageshift; /* page size shift */
#ifdef MSTATS
/*
@@ -203,6 +204,7 @@
bucket++;
}
pagebucket = bucket;
+ pageshift = ffs(pagesz) - 1;
}
/*
* Convert amount of memory requested into closest block size
@@ -277,13 +279,13 @@
#endif
if (sz < pagesz) {
amt = pagesz;
- nblks = amt / sz;
+ nblks = amt >> (bucket + 3);
} else {
amt = sz + pagesz;
nblks = 1;
}
if (amt > PAGEPOOL_SIZE)
- if (morepages(amt/pagesz + NPOOLPAGES) == 0)
+ if (morepages((amt >> pageshift) + NPOOLPAGES) == 0)
return;
op = (union overhead *)pagepool_start;
pagepool_start += amt;