|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH RFC 2/2] x86/p2m: aid the compiler in folding p2m_is_...()
By using | instead of || or (in the negated form) && chances increase
for the compiler to recognize that both predicates can actually be
folded into an expression requiring just a single branch (via OR-ing
together the respective P2M_*_TYPES constants).
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
---
RFC: The 3-way checks look to be a general problem for gcc, but even in
some 2-way cases it doesn't manage to fold the expressions. Hence
it's worth considering to go farther with this transformation, as
long as the idea isn't disliked in general.
--- a/xen/arch/x86/mm/p2m.c
+++ b/xen/arch/x86/mm/p2m.c
@@ -606,7 +606,7 @@ struct page_info *p2m_get_page_from_gfn(
return page;
/* Error path: not a suitable GFN at all */
- if ( !p2m_is_ram(*t) && !p2m_is_paging(*t) && !p2m_is_pod(*t) &&
+ if ( !(p2m_is_ram(*t) | p2m_is_paging(*t) | p2m_is_pod(*t)) &&
(!p2m_is_shared(*t) || !(q & P2M_UNSHARE)) &&
!mem_sharing_is_fork(p2m->domain) )
return NULL;
@@ -840,7 +840,7 @@ p2m_remove_page(struct p2m_domain *p2m,
for ( i = 0; i < (1UL << page_order); ++i )
{
p2m->get_entry(p2m, gfn_add(gfn, i), &t, &a, 0, NULL, NULL);
- if ( !p2m_is_hole(t) && !p2m_is_special(t) && !p2m_is_shared(t) )
+ if ( !(p2m_is_hole(t) | p2m_is_special(t) | p2m_is_shared(t)) )
{
set_gpfn_from_mfn(mfn_x(mfn) + i, gfn_x(gfn) + i);
paging_mark_pfn_dirty(p2m->domain, _pfn(gfn_x(gfn) + i));
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |