Lines Matching defs:pPatchPage

3423     PPATMPATCHPAGE pPatchPage = (PPATMPATCHPAGE)RTAvloU32Get(&pVM->patm.s.PatchLookupTreeHC->PatchTreeByPage, (RTRCPTR)pPage);
3424 if (pPatchPage)
3428 for (i=0;i<pPatchPage->cCount;i++)
3430 if (pPatchPage->papPatch[i])
3432 pPatchToJmp = pPatchPage->papPatch[i];
3453 AssertReturn(pPatchPage && pPatchTargetGC && pPatchToJmp, VERR_PATCHING_REFUSED);
3581 PPATMPATCHPAGE pPatchPage = (PPATMPATCHPAGE)RTAvloU32Get(&pVM->patm.s.PatchLookupTreeHC->PatchTreeByPage, (RTRCPTR)pPage);
3582 if (pPatchPage)
3586 for (i=0;i<pPatchPage->cCount;i++)
3588 if (pPatchPage->papPatch[i])
3590 PPATCHINFO pPatch = pPatchPage->papPatch[i];
4640 PPATMPATCHPAGE pPatchPage;
4645 pPatchPage = (PPATMPATCHPAGE)RTAvloU32Get(&pVM->patm.s.PatchLookupTreeHC->PatchTreeByPage, pPage);
4646 if (pPatchPage)
4648 Assert(pPatchPage->cCount <= pPatchPage->cMaxPatches);
4649 if (pPatchPage->cCount == pPatchPage->cMaxPatches)
4651 uint32_t cMaxPatchesOld = pPatchPage->cMaxPatches;
4652 PPATCHINFO *papPatchOld = pPatchPage->papPatch;
4654 pPatchPage->cMaxPatches += PATMPATCHPAGE_PREALLOC_INCREMENT;
4655 rc = MMHyperAlloc(pVM, sizeof(pPatchPage->papPatch[0]) * pPatchPage->cMaxPatches, 0, MM_TAG_PATM_PATCH,
4656 (void **)&pPatchPage->papPatch);
4662 memcpy(pPatchPage->papPatch, papPatchOld, cMaxPatchesOld * sizeof(pPatchPage->papPatch[0]));
4665 pPatchPage->papPatch[pPatchPage->cCount] = pPatch;
4666 pPatchPage->cCount++;
4672 rc = MMHyperAlloc(pVM, sizeof(PATMPATCHPAGE), 0, MM_TAG_PATM_PATCH, (void **)&pPatchPage);
4678 pPatchPage->Core.Key = pPage;
4679 pPatchPage->cCount = 1;
4680 pPatchPage->cMaxPatches = PATMPATCHPAGE_PREALLOC_INCREMENT;
4682 rc = MMHyperAlloc(pVM, sizeof(pPatchPage->papPatch[0]) * PATMPATCHPAGE_PREALLOC_INCREMENT, 0, MM_TAG_PATM_PATCH,
4683 (void **)&pPatchPage->papPatch);
4687 MMHyperFree(pVM, pPatchPage);
4690 pPatchPage->papPatch[0] = pPatch;
4692 fInserted = RTAvloU32Insert(&pVM->patm.s.PatchLookupTreeHC->PatchTreeByPage, &pPatchPage->Core);
4705 LogFlow(("patmAddPatchToPage: lowest patch page address %RRv current lowest %RRv\n", pGuestToPatchRec->Core.Key, pPatchPage->pLowestAddrGC));
4706 if ( pPatchPage->pLowestAddrGC == 0
4707 || pPatchPage->pLowestAddrGC > (RTRCPTR)pGuestToPatchRec->Core.Key)
4711 pPatchPage->pLowestAddrGC = (RTRCPTR)pGuestToPatchRec->Core.Key;
4713 offset = pPatchPage->pLowestAddrGC & PAGE_OFFSET_MASK;
4727 pPatchPage->pLowestAddrGC = pPage;
4728 LogFlow(("patmAddPatchToPage: new lowest %RRv\n", pPatchPage->pLowestAddrGC));
4740 LogFlow(("patmAddPatchToPage: highest patch page address %RRv current highest %RRv\n", pGuestToPatchRec->Core.Key, pPatchPage->pHighestAddrGC));
4741 if ( pPatchPage->pHighestAddrGC == 0
4742 || pPatchPage->pHighestAddrGC <= (RTRCPTR)pGuestToPatchRec->Core.Key)
4744 pPatchPage->pHighestAddrGC = (RTRCPTR)pGuestToPatchRec->Core.Key;
4746 uint32_t size = patmGetInstrSize(pVM, pPatch, pPatchPage->pHighestAddrGC);
4748 pPatchPage->pHighestAddrGC += size;
4749 LogFlow(("patmAddPatchToPage: new highest %RRv\n", pPatchPage->pHighestAddrGC));
4766 PPATMPATCHPAGE pPatchPage;
4769 pPatchPage = (PPATMPATCHPAGE)RTAvloU32Get(&pVM->patm.s.PatchLookupTreeHC->PatchTreeByPage, pPage);
4770 Assert(pPatchPage);
4772 if (!pPatchPage)
4775 Assert(pPatchPage->cCount <= pPatchPage->cMaxPatches);
4778 if (pPatchPage->cCount > 1)
4783 for (i = 0; i < pPatchPage->cCount; i++)
4785 if (pPatchPage->papPatch[i] == pPatch)
4788 uint32_t cNew = --pPatchPage->cCount;
4790 pPatchPage->papPatch[i] = pPatchPage->papPatch[cNew];
4791 pPatchPage->papPatch[cNew] = NULL;
4805 Assert(pPatchNode && pPatchNode == pPatchPage);
4807 Assert(pPatchPage->papPatch);
4808 rc = MMHyperFree(pVM, pPatchPage->papPatch);
4810 rc = MMHyperFree(pVM, pPatchPage);
4916 PPATMPATCHPAGE pPatchPage = (PPATMPATCHPAGE)RTAvloU32Get(&pVM->patm.s.PatchLookupTreeHC->PatchTreeByPage, (RTRCPTR)pPage);
4917 if (pPatchPage)
4923 if ( pPatchPage->pLowestAddrGC > (RTRCPTR)((RTRCUINTPTR)GCPtr + cbWrite - 1)
4924 || pPatchPage->pHighestAddrGC < GCPtr)
4929 for (i=0;i<pPatchPage->cCount;i++)
4931 if (pPatchPage->papPatch[i])
4933 PPATCHINFO pPatch = pPatchPage->papPatch[i];
4937 Assert(pPatchPage->papPatch[i]->flags & PATMFL_CODE_MONITORED);
4951 /* Note: jump back to the start as the pPatchPage has been deleted or changed */
4993 /* Note: jump back to the start as the pPatchPage has been deleted or changed */
5022 pPatchPage = (PPATMPATCHPAGE)RTAvloU32Get(&pVM->patm.s.PatchLookupTreeHC->PatchTreeByPage, (RTRCPTR)pPage);
5024 if (pPatchPage)
5026 for (i=0;i<pPatchPage->cCount;i++)
5028 PPATCHINFO pPatch = pPatchPage->papPatch[i];
5046 /* Note: jump back to the start as the pPatchPage has been deleted or changed */
5074 PPATMPATCHPAGE pPatchPage = (PPATMPATCHPAGE)RTAvloU32Get(&pVM->patm.s.PatchLookupTreeHC->PatchTreeByPage, addr);
5075 if (pPatchPage)
5080 for (i=(int)pPatchPage->cCount-1;i>=0;i--)
5082 if (pPatchPage->papPatch[i])
5084 PPATCHINFO pPatch = pPatchPage->papPatch[i];