[MLton] s->alignment considered harmful
Vesa Karvonen
vesa.a.j.k at gmail.com
Thu Nov 1 08:28:14 PST 2007
On Nov 1, 2007 6:00 PM, Matthew Fluet <fluet at tti-c.org> wrote:
> As for tweaking the implementation of util/align.h, one difficulty is that
> align has "round up" semantics, not "round down". So, a simple mask won't
> work. On the other hand, we do assume that the alignment is a power of
> two, so maybe there are some bit operations that would be faster than an
> integer divide.
The current implementation is:
static inline size_t align (size_t a, size_t b) {
assert (b >= 1);
a += b - 1;
a -= a % b;
assert (isAligned (a, b));
return a;
}
If you can assume that b is a power of two, you can optimize it to:
static inline size_t align (size_t a, size_t b) {
assert (b >= 1 && b == (b & -b)); /* Also asserts that b is a power
of two. */
a += b - 1;
a &= -b;
assert (isAligned (a, b));
return a;
}
-Vesa Karvonen
More information about the MLton
mailing list