This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Monday 03 June 2013 15:12:05 Roland McGrath wrote: > I think we should be using inlines rather than macros any time we don't > have a strong reason to use macros. generally we don't do caps inlines though ? and using inlines means we now have to deal with types. the current one works with any size and does the right thing. if i wrote an inline, i'd have to pick a type (size_t? int? long? uint64_t? uintmax_t?) and then there'd be ugliness with signed vs unsigned, implicit casts, implicit truncation, overhead with casting up to larger than natural types (like 64bit on a 32bit system), etc... > > +/* Align a value by rounding down to closest size. > > + e.g. Using size of 4096, we get this behavior: > > + {4095, 4096, 4097} = {0, 4096, 4096}. */ > > +#define ALIGN_DOWN(base, size) ((base) & ~((size) - 1)) > > We usually use & -size nowadays. Obviously it doesn't matter for > constants, but it's cheaper on some machines when it's not a constant > (and it's always less typing ;-). hadn't seen that form before. i do like less typing. -mike
Attachment:
signature.asc
Description: This is a digitally signed message part.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |