VirtualBox

Changeset 32521 in vbox


Ignore:
Timestamp:
Sep 15, 2010 1:46:22 PM (14 years ago)
Author:
vboxsync
Message:

Optimization

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/PGMAllBth.h

    r32486 r32521  
    19321932                        else
    19331933                            iPTDst -= PGM_SYNC_NR_PAGES / 2;
     1934
     1935                        /* Paranoia: the faulting page can't be present. We assume that below. */
     1936                        Assert(!SHW_PTE_IS_P(pPTDst->a[iPTDstPage]));
     1937
    19341938                        for (; iPTDst < iPTDstEnd; iPTDst++)
    19351939                        {
    1936                             if (   !SHW_PTE_IS_P(pPTDst->a[iPTDst])
    1937                                 || iPTDst == iPTDstPage)    /* always sync GCPtrPage */
     1940                            const PGSTPTE pPteSrc = &pPTSrc->a[offPTSrc + iPTDst];
     1941
     1942                            if (    pPteSrc->n.u1Present
     1943                                &&  !SHW_PTE_IS_P(pPTDst->a[iPTDst]))
    19381944                            {
    1939                                 GSTPTE PteSrc = pPTSrc->a[offPTSrc + iPTDst];
    19401945                                RTGCPTR GCPtrCurPage = (GCPtrPage & ~(RTGCPTR)(GST_PT_MASK << GST_PT_SHIFT)) | ((offPTSrc + iPTDst) << PAGE_SHIFT);
    19411946                                NOREF(GCPtrCurPage);
     
    19471952                                 */
    19481953                                PPGMPAGE pPage;
    1949                                 if (    ((PdeSrc.u & PteSrc.u) & (X86_PTE_RW | X86_PTE_US))
     1954                                if (    ((PdeSrc.u & pPteSrc->u) & (X86_PTE_RW | X86_PTE_US))
    19501955                                    ||  iPTDst == ((GCPtrPage >> SHW_PT_SHIFT) & SHW_PT_MASK)   /* always sync GCPtrPage */
    19511956                                    ||  !CSAMDoesPageNeedScanning(pVM, GCPtrCurPage)
    1952                                     ||  (   (pPage = pgmPhysGetPage(&pVM->pgm.s, PteSrc.u & GST_PTE_PG_MASK))
     1957                                    ||  (   (pPage = pgmPhysGetPage(&pVM->pgm.s, pPteSrc->u & GST_PTE_PG_MASK))
    19531958                                         && PGM_PAGE_HAS_ACTIVE_HANDLERS(pPage))
    19541959                                   )
    19551960#endif /* else: CSAM not active */
    1956                                    PGM_BTH_NAME(SyncPageWorker)(pVCpu, &pPTDst->a[iPTDst], PdeSrc, PteSrc, pShwPage, iPTDst);
     1961                                   PGM_BTH_NAME(SyncPageWorker)(pVCpu, &pPTDst->a[iPTDst], PdeSrc, *pPteSrc, pShwPage, iPTDst);
    19571962                                Log2(("SyncPage: 4K+ %RGv PteSrc:{P=%d RW=%d U=%d raw=%08llx} PteDst=%08llx%s\n",
    1958                                       GCPtrCurPage, PteSrc.n.u1Present,
    1959                                       PteSrc.n.u1Write & PdeSrc.n.u1Write,
    1960                                       PteSrc.n.u1User  & PdeSrc.n.u1User,
    1961                                       (uint64_t)PteSrc.u,
     1963                                      GCPtrCurPage, pPteSrc->n.u1Present,
     1964                                      pPteSrc->n.u1Write & PdeSrc.n.u1Write,
     1965                                      pPteSrc->n.u1User  & PdeSrc.n.u1User,
     1966                                      (uint64_t)pPteSrc->u,
    19621967                                      SHW_PTE_LOG64(pPTDst->a[iPTDst]),
    19631968                                      SHW_PTE_IS_TRACK_DIRTY(pPTDst->a[iPTDst]) ? " Track-Dirty" : ""));
Note: See TracChangeset for help on using the changeset viewer.

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