27 assert(!hasPointer(
P));
36void Block::removePointer(
Pointer *
P) {
44 assert(hasPointer(
P));
51 P->Prev->Next =
P->Next;
53 P->Next->Prev =
P->Prev;
56void Block::cleanup() {
57 if (Pointers ==
nullptr && IsDead)
58 (
reinterpret_cast<DeadBlock *
>(
this + 1) - 1)->free();
70 assert(hasPointer(Old));
79 assert(!hasPointer(Old));
80 assert(hasPointer(New));
85bool Block::hasPointer(
const Pointer *
P)
const {
106 B.Pointers = Blk->Pointers;
108 P->PointeeStorage.BS.Pointee = &B;
109 Blk->Pointers =
nullptr;
112void DeadBlock::free() {
A memory block, either on the stack or in the heap.
void invokeDtor()
Invokes the Destructor.
Descriptor for a dead block.
DeadBlock(DeadBlock *&Root, Block *Blk)
Copies the block.
A pointer to a memory block, live or dead.
The JSON file list parser is used to communicate input to InstallAPI.
Block * Pointee
The block the pointer is pointing to.