Lines Matching defs:pFree

283     PRTHEAPSIMPLEFREE pFree;
319 pFree = pHeapInt->pFreeHead;
320 pFree->Core.pNext = NULL;
321 pFree->Core.pPrev = NULL;
322 pFree->Core.pHeap = pHeapInt;
323 pFree->Core.fFlags = RTHEAPSIMPLEBLOCK_FLAGS_MAGIC | RTHEAPSIMPLEBLOCK_FLAGS_FREE;
324 pFree->pNext = NULL;
325 pFree->pPrev = NULL;
326 pFree->cb = pHeapInt->cbFree;
479 PRTHEAPSIMPLEFREE pFree;
488 for (pFree = pHeapInt->pFreeHead;
489 pFree;
490 pFree = pFree->pNext)
493 ASSERT_BLOCK_FREE(pHeapInt, pFree);
498 if (pFree->cb < cb)
500 offAlign = (uintptr_t)(&pFree->Core + 1) & (uAlignment - 1);
507 if (pFree->cb - offAlign < cb)
513 Free = *pFree;
514 pFree = (PRTHEAPSIMPLEFREE)((uintptr_t)pFree + offAlign);
529 pPrev->pNext = &pFree->Core;
534 Assert(pPrev == &pFree->Core);
536 pPrev->pNext = &pFree->Core;
543 * Recreate pFree in the new position and adjust the neighbors.
545 *pFree = Free;
548 if (pFree->Core.pNext)
549 pFree->Core.pNext->pPrev = &pFree->Core;
550 pFree->Core.pPrev = pPrev;
553 pFree->cb -= offAlign;
554 if (pFree->pNext)
555 pFree->pNext->pPrev = pFree;
557 pHeapInt->pFreeTail = pFree;
558 if (pFree->pPrev)
559 pFree->pPrev->pNext = pFree;
561 pHeapInt->pFreeHead = pFree;
562 ASSERT_BLOCK_FREE(pHeapInt, pFree);
569 if (pFree->cb >= cb + RT_ALIGN_Z(sizeof(RTHEAPSIMPLEFREE), RTHEAPSIMPLE_ALIGNMENT))
574 PRTHEAPSIMPLEFREE pNew = (PRTHEAPSIMPLEFREE)((uintptr_t)&pFree->Core + cb + sizeof(RTHEAPSIMPLEBLOCK));
576 pNew->Core.pNext = pFree->Core.pNext;
577 if (pFree->Core.pNext)
578 pFree->Core.pNext->pPrev = &pNew->Core;
579 pNew->Core.pPrev = &pFree->Core;
583 pNew->pNext = pFree->pNext;
588 pNew->pPrev = pFree->pPrev;
600 pFree->Core.fFlags &= ~RTHEAPSIMPLEBLOCK_FLAGS_FREE;
601 pFree->Core.pNext = &pNew->Core;
602 pHeapInt->cbFree -= pFree->cb;
604 pRet = &pFree->Core;
612 if (pFree->pNext)
613 pFree->pNext->pPrev = pFree->pPrev;
615 pHeapInt->pFreeTail = pFree->pPrev;
616 if (pFree->pPrev)
617 pFree->pPrev->pNext = pFree->pNext;
619 pHeapInt->pFreeHead = pFree->pNext;
624 pHeapInt->cbFree -= pFree->cb;
625 pFree->Core.fFlags &= ~RTHEAPSIMPLEBLOCK_FLAGS_FREE;
626 pRet = &pFree->Core;
686 PRTHEAPSIMPLEFREE pFree = (PRTHEAPSIMPLEFREE)pBlock;
702 pRight = (PRTHEAPSIMPLEFREE)pFree->Core.pNext;
718 AssertMsgReturnVoid(pLeft != pFree, ("Freed twice! pv=%p (pBlock=%p)\n", pBlock + 1, pBlock));
719 ASSERT_L(pLeft, pFree);
720 Assert(!pRight || (uintptr_t)pRight > (uintptr_t)pFree);
729 pFree->Core.fFlags |= RTHEAPSIMPLEBLOCK_FLAGS_FREE;
730 pFree->pPrev = NULL;
731 pFree->pNext = pRight;
733 pRight->pPrev = pFree;
735 pHeapInt->pFreeTail = pFree;
736 pHeapInt->pFreeHead = pFree;
743 if (pLeft->Core.pNext == &pFree->Core)
745 pLeft->Core.pNext = pFree->Core.pNext;
746 if (pFree->Core.pNext)
747 pFree->Core.pNext->pPrev = &pLeft->Core;
749 pFree = pLeft;
756 pFree->Core.fFlags |= RTHEAPSIMPLEBLOCK_FLAGS_FREE;
757 pFree->pNext = pRight;
758 pFree->pPrev = pLeft;
759 pLeft->pNext = pFree;
761 pRight->pPrev = pFree;
763 pHeapInt->pFreeTail = pFree;
771 && pRight->Core.pPrev == &pFree->Core)
774 pFree->Core.pNext = pRight->Core.pNext;
776 pRight->Core.pNext->pPrev = &pFree->Core;
779 pFree->pNext = pRight->pNext;
781 pRight->pNext->pPrev = pFree;
783 pHeapInt->pFreeTail = pFree;
790 pFree->cb = (pFree->Core.pNext ? (uintptr_t)pFree->Core.pNext : (uintptr_t)pHeapInt->pvEnd)
791 - (uintptr_t)pFree - sizeof(RTHEAPSIMPLEBLOCK);
792 pHeapInt->cbFree += pFree->cb;
793 ASSERT_BLOCK_FREE(pHeapInt, pFree);