Re: [PATCH] mm: Make PageType more efficient

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Mar 10, 2020 at 02:50:50PM -0700, Alexander Duyck wrote:
> On Tue, Mar 10, 2020 at 1:37 PM Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote:
> > > > -#define PageType(page, flag)                                           \
> > > > -       ((page->page_type & (PAGE_TYPE_BASE | flag)) == PAGE_TYPE_BASE)
> > > > -
> 
> >From what I can tell this is the only consumer of PAGE_TYPE_BASE.
> Since it is removed you can probably remove that definition as well.

I _could_ ... I do want to indicate to people that they probably
shouldn't use those bits in order to leave space for overflow and
wraparound of _mapcount.

> > > > +#define PageType(page, flag)                                           \
> > > > +       (page_has_type(page) && (~page->page_type & flag))
> 
> You can probably spare a cycle or two here by testing for
> "!(page->page_type & flag)". That way you avoid the extra bit flipping
> since the compiler can just handle the result of the AND op as it sees
> fit.

GCC already knows to do that optimisation; mm/page_alloc.o is identical
(same md5sum) when changing from (~page->page_type & flag) to
!(page->page_type & flag).  So it's just a question of which one is
easier for humans to read and reason about.  Do you have an opinion
which one you'd like to see?





[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux