VirtualBox

Changeset 23485 in vbox for trunk/src


Ignore:
Timestamp:
Oct 1, 2009 2:14:29 PM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
53107
Message:

PGMPAGE: Optimized tests accessing both u2HandlerPhysStateY and u2HandlerVirtStateY. (saving ~2KB on linux/amd64)

Location:
trunk/src/VBox/VMM
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/PGMInternal.h

    r23484 r23485  
    854854
    855855
    856 /** @name Physical Access Handler State values (PGMPAGE::uHandlerPhysStateY).
     856/** Enabled optimized access handler tests.
     857 * These optimizations makes ASSUMPTIONS about the state values and the u16MiscY
     858 * layout.  When enabled, the compiler should normally generate more compact
     859 * code.
     860 */
     861#define PGM_PAGE_WITH_OPTIMIZED_HANDLER_ACCESS 1
     862
     863/** @name Physical Access Handler State values (PGMPAGE::u2HandlerPhysStateY).
    857864 *
    858865 * @remarks The values are assigned in order of priority, so we can calculate
     
    952959
    953960
    954 
    955961/**
    956962 * Checks if the page has any access handlers, including temporarily disabled ones.
     
    958964 * @param   pPage       Pointer to the physical guest page tracking structure.
    959965 */
    960 #define PGM_PAGE_HAS_ANY_HANDLERS(pPage) \
     966#ifdef PGM_PAGE_WITH_OPTIMIZED_HANDLER_ACCESS
     967# define PGM_PAGE_HAS_ANY_HANDLERS(pPage) \
     968    ( ((pPage)->u16MiscY.u & UINT16_C(0x0303)) != 0 )
     969#else
     970# define PGM_PAGE_HAS_ANY_HANDLERS(pPage) \
    961971    (   PGM_PAGE_GET_HNDL_PHYS_STATE(pPage) != PGM_PAGE_HNDL_PHYS_STATE_NONE \
    962972     || PGM_PAGE_GET_HNDL_VIRT_STATE(pPage) != PGM_PAGE_HNDL_VIRT_STATE_NONE )
     973#endif
    963974
    964975/**
     
    967978 * @param   pPage       Pointer to the physical guest page tracking structure.
    968979 */
    969 #define PGM_PAGE_HAS_ACTIVE_HANDLERS(pPage) \
     980#ifdef PGM_PAGE_WITH_OPTIMIZED_HANDLER_ACCESS
     981# define PGM_PAGE_HAS_ACTIVE_HANDLERS(pPage) \
     982    ( ((pPage)->u16MiscY.u & UINT16_C(0x0202)) != 0 )
     983#else
     984# define PGM_PAGE_HAS_ACTIVE_HANDLERS(pPage) \
    970985    (   PGM_PAGE_GET_HNDL_PHYS_STATE(pPage) >= PGM_PAGE_HNDL_PHYS_STATE_WRITE \
    971986     || PGM_PAGE_GET_HNDL_VIRT_STATE(pPage) >= PGM_PAGE_HNDL_VIRT_STATE_WRITE )
     987#endif
    972988
    973989/**
     
    976992 * @param   pPage       Pointer to the physical guest page tracking structure.
    977993 */
    978 #define PGM_PAGE_HAS_ACTIVE_ALL_HANDLERS(pPage) \
     994#ifdef PGM_PAGE_WITH_OPTIMIZED_HANDLER_ACCESS
     995# define PGM_PAGE_HAS_ACTIVE_ALL_HANDLERS(pPage) \
     996    (   ( ((pPage)->u16MiscY.au8[0] | (pPage)->u16MiscY.au8[1]) & UINT8_C(0x3) ) \
     997     == PGM_PAGE_HNDL_PHYS_STATE_ALL )
     998#else
     999# define PGM_PAGE_HAS_ACTIVE_ALL_HANDLERS(pPage) \
    9791000    (   PGM_PAGE_GET_HNDL_PHYS_STATE(pPage) == PGM_PAGE_HNDL_PHYS_STATE_ALL \
    9801001     || PGM_PAGE_GET_HNDL_VIRT_STATE(pPage) == PGM_PAGE_HNDL_VIRT_STATE_ALL )
     1002#endif
    9811003
    9821004
  • trunk/src/VBox/VMM/VMMAll/PGMAllBth.h

    r23284 r23485  
    393393            if (RT_SUCCESS(rc)) /** just handle the failure immediate (it returns) and make things easier to read. */
    394394            {
    395                 if (   PGM_PAGE_HAS_ACTIVE_PHYSICAL_HANDLERS(pPage)
    396                     || PGM_PAGE_HAS_ACTIVE_VIRTUAL_HANDLERS(pPage))
     395                if (PGM_PAGE_HAS_ACTIVE_HANDLERS(pPage))
    397396                {
    398397                    if (PGM_PAGE_HAS_ANY_PHYSICAL_HANDLERS(pPage))
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette