VirtualBox

Changeset 23543 in vbox


Ignore:
Timestamp:
Oct 4, 2009 9:24:12 PM (15 years ago)
Author:
vboxsync
Message:

PGMSavedState: Zero page counting (ram+mmio2).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/PGMSavedState.cpp

    r23539 r23543  
    719719     * Special handling of zero pages.
    720720     */
    721     if (pLSPage->fZero)
     721    bool const fZero = pLSPage->fZero;
     722    if (fZero)
    722723    {
    723724        if (ASMMemIsZeroPage(pbPage))
     
    771772        pVM->pgm.s.LiveSave.Mmio2.cReadyPages--;
    772773        pVM->pgm.s.LiveSave.Mmio2.cDirtyPages++;
     774        if (fZero)
     775            pVM->pgm.s.LiveSave.Mmio2.cZeroPages--;
    773776    }
    774777    return true;
     
    937940                pVM->pgm.s.LiveSave.Mmio2.cDirtyPages--;
    938941                pVM->pgm.s.LiveSave.Mmio2.cReadyPages++;
     942                if (u8Type == PGM_STATE_REC_MMIO2_ZERO)
     943                    pVM->pgm.s.LiveSave.Mmio2.cZeroPages++;
    939944                iPageLast = iPage;
    940945            }
     
    12461251                                    Assert(!paLSPages[iPage].fWriteMonitored);
    12471252                                    pVM->pgm.s.LiveSave.Ram.cMonitoredPages++;
    1248                                     if (paLSPages[iPage].fZero)
    1249                                         pVM->pgm.s.LiveSave.Ram.cZeroPages--;
    12501253                                }
    12511254
     
    12531256                                {
    12541257                                    pVM->pgm.s.LiveSave.Ram.cReadyPages--;
     1258                                    if (paLSPages[iPage].fZero)
     1259                                        pVM->pgm.s.LiveSave.Ram.cZeroPages--;
    12551260                                    pVM->pgm.s.LiveSave.Ram.cDirtyPages++;
    12561261                                    if (++paLSPages[iPage].cDirtied > PGMLIVSAVEPAGE_MAX_DIRTIED)
     
    13011306                                if (!paLSPages[iPage].fZero)
    13021307                                {
    1303                                     paLSPages[iPage].fZero = 1;
    1304                                     paLSPages[iPage].fShared = 0;
    1305 #ifdef PGMLIVESAVERAMPAGE_WITH_CRC32
    1306                                     paLSPages[iPage].u32Crc = PGM_STATE_CRC32_ZERO_PAGE;
    1307 #endif
    13081308                                    if (!paLSPages[iPage].fDirty)
    13091309                                    {
     
    13121312                                        pVM->pgm.s.LiveSave.Ram.cDirtyPages++;
    13131313                                    }
    1314                                     pVM->pgm.s.LiveSave.Ram.cZeroPages++;
     1314                                    paLSPages[iPage].fZero = 1;
     1315                                    paLSPages[iPage].fShared = 0;
     1316#ifdef PGMLIVESAVERAMPAGE_WITH_CRC32
     1317                                    paLSPages[iPage].u32Crc = PGM_STATE_CRC32_ZERO_PAGE;
     1318#endif
    13151319                                }
    13161320                                break;
     
    13191323                                if (!paLSPages[iPage].fShared)
    13201324                                {
     1325                                    if (!paLSPages[iPage].fDirty)
     1326                                    {
     1327                                        paLSPages[iPage].fDirty = 1;
     1328                                        pVM->pgm.s.LiveSave.Ram.cReadyPages--;
     1329                                        if (paLSPages[iPage].fZero)
     1330                                            pVM->pgm.s.LiveSave.Ram.cZeroPages--;
     1331                                        pVM->pgm.s.LiveSave.Ram.cDirtyPages++;
     1332                                    }
    13211333                                    paLSPages[iPage].fZero = 0;
    13221334                                    paLSPages[iPage].fShared = 1;
     
    13241336                                    pgmR3StateCalcCrc32ForRamPage(pVM, pCur, paLSPages, iPage);
    13251337#endif
    1326                                     if (!paLSPages[iPage].fDirty)
    1327                                     {
    1328                                         paLSPages[iPage].fDirty = 1;
    1329                                         pVM->pgm.s.LiveSave.Ram.cReadyPages--;
    1330                                         pVM->pgm.s.LiveSave.Ram.cDirtyPages++;
    1331                                     }
    13321338                                }
    13331339                                break;
     
    13651371                            pVM->pgm.s.LiveSave.Ram.cDirtyPages--;
    13661372                        else
     1373                        {
    13671374                            pVM->pgm.s.LiveSave.Ram.cReadyPages--;
     1375                            if (paLSPages[iPage].fZero)
     1376                                pVM->pgm.s.LiveSave.Ram.cZeroPages--;
     1377                        }
    13681378                        pVM->pgm.s.LiveSave.cIgnoredPages++;
    13691379                    }
     
    15261536                        paLSPages[iPage].fDirty = 0;
    15271537                        pVM->pgm.s.LiveSave.Ram.cReadyPages++;
    1528                         pVM->pgm.s.LiveSave.Ram.cDirtyPages--;
    15291538                        if (fZero)
    15301539                            pVM->pgm.s.LiveSave.Ram.cZeroPages++;
     1540                        pVM->pgm.s.LiveSave.Ram.cDirtyPages--;
    15311541                    }
    15321542                    if (idRamRangesGen != pVM->pgm.s.idRamRangesGen)
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