- Timestamp:
- Oct 19, 2007 5:28:17 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/PGMAllPool.cpp
r5392 r5393 707 707 * Check if it's worth dealing with. 708 708 */ 709 bool fReused = false; 709 710 if ( ( pPage->cModifications < 48 /** @todo #define */ /** @todo need to check that it's not mapping EIP. */ /** @todo adjust this! */ 710 711 || pPage->fCR3Mix) 711 && ! pgmPoolMonitorIsReused(pPage, &Cpu, pvFault)712 && !(fReused = pgmPoolMonitorIsReused(pPage, &Cpu, pvFault)) 712 713 && !pgmPoolMonitorIsForking(pPool, &Cpu, GCPhysFault & PAGE_OFFSET_MASK)) 713 714 { … … 752 753 /* 753 754 * Not worth it, so flush it. 755 * 756 * If we considered it to be reused, don't to back to ring-3 757 * to emulate failed instructions since we usually cannot 758 * interpret then. This may be a bit risky, in which case 759 * the reuse detection must be fixed. 754 760 */ 755 761 rc = pgmPoolAccessHandlerFlush(pVM, pPool, pPage, &Cpu, pRegFrame, GCPhysFault, pvFault); 762 if (rc == VINF_EM_RAW_EMULATE_INSTR && fReused) 763 rc = VINF_SUCCESS; 756 764 STAM_PROFILE_STOP_EX(&pVM->pgm.s.CTXSUFF(pPool)->CTXSUFF(StatMonitor), &pPool->CTXMID(StatMonitor,FlushPage), a); 757 765 return rc;
Note:
See TracChangeset
for help on using the changeset viewer.