Lines Matching refs:uptr

22   RegionReleaseRecorder(MemMapT *RegionMemMap, uptr Base, uptr Offset = 0)
25 uptr getReleasedRangesCount() const { return ReleasedRangesCount; } in getReleasedRangesCount()
27 uptr getReleasedBytes() const { return ReleasedBytes; } in getReleasedBytes()
29 uptr getBase() const { return Base; } in getBase()
33 void releasePageRangeToOS(uptr From, uptr To) { in releasePageRangeToOS()
34 const uptr Size = To - From; in releasePageRangeToOS()
41 uptr ReleasedRangesCount = 0;
42 uptr ReleasedBytes = 0;
44 uptr Base = 0;
47 uptr Offset = 0;
52 ReleaseRecorder(uptr Base, uptr Offset = 0, MapPlatformData *Data = nullptr)
55 uptr getReleasedRangesCount() const { return ReleasedRangesCount; } in getReleasedRangesCount()
57 uptr getReleasedBytes() const { return ReleasedBytes; } in getReleasedBytes()
59 uptr getBase() const { return Base; } in getBase()
62 void releasePageRangeToOS(uptr From, uptr To) { in releasePageRangeToOS()
63 const uptr Size = To - From; in releasePageRangeToOS()
70 uptr ReleasedRangesCount = 0;
71 uptr ReleasedBytes = 0;
76 uptr Base = 0;
79 uptr Offset = 0;
87 uptr getReleasedPagesCount() const { return ReleasedPagesCount; } in getReleasedPagesCount()
89 void releasePageRangeToOS(uptr From, uptr To) { in releasePageRangeToOS()
95 uptr ReleasedPagesCount = 0;
102 template <uptr StaticBufferCount, uptr StaticBufferNumElements>
108 static_assert(isAligned(StaticBufferNumElements * sizeof(uptr),
114 uptr *Data = nullptr;
119 uptr BufferIndex = ~static_cast<uptr>(0);
127 Buffer getBuffer(const uptr NumElements) { in getBuffer()
131 uptr index; in getBuffer()
140 Mask ^= static_cast<uptr>(1) << index; in getBuffer()
149 memset(Buf.Data, 0, StaticBufferNumElements * sizeof(uptr)); in getBuffer()
158 DCHECK_EQ((Mask & (static_cast<uptr>(1) << Buf.BufferIndex)), 0U); in releaseBuffer()
159 Mask |= static_cast<uptr>(1) << Buf.BufferIndex; in releaseBuffer()
172 Buffer getDynamicBuffer(const uptr NumElements) { in getDynamicBuffer()
178 const uptr MmapFlags = MAP_ALLOWNOMEM | (SCUDO_FUCHSIA ? MAP_PRECOMMIT : 0); in getDynamicBuffer()
179 const uptr MappedSize = in getDynamicBuffer()
180 roundUp(NumElements * sizeof(uptr), getPageSizeCached()); in getDynamicBuffer()
183 Buf.Data = reinterpret_cast<uptr *>(Buf.MemMap.getBase()); in getDynamicBuffer()
191 uptr Mask GUARDED_BY(Mutex) = ~static_cast<uptr>(0);
192 uptr RawBuffer[StaticBufferCount * StaticBufferNumElements] GUARDED_BY(Mutex);
210 RegionPageMap(uptr NumberOfRegions, uptr CountersPerRegion, uptr MaxValue) { in RegionPageMap()
224 void reset(uptr NumberOfRegion, uptr CountersPerRegion, uptr MaxValue) { in reset()
232 constexpr uptr MaxCounterBits = sizeof(*Buffer.Data) * 8UL; in reset()
235 const uptr CounterSizeBits = in reset()
239 CounterMask = ~(static_cast<uptr>(0)) >> (MaxCounterBits - CounterSizeBits); in reset()
241 const uptr PackingRatio = MaxCounterBits >> CounterSizeBitsLog; in reset()
247 roundUp(NumCounters, static_cast<uptr>(1U) << PackingRatioLog) >> in reset()
255 uptr getCount() const { return NumCounters; } in getCount()
257 uptr get(uptr Region, uptr I) const { in get()
260 const uptr Index = I >> PackingRatioLog; in get()
261 const uptr BitOffset = (I & BitOffsetMask) << CounterSizeBitsLog; in get()
266 void inc(uptr Region, uptr I) const { in inc()
268 const uptr Index = I >> PackingRatioLog; in inc()
269 const uptr BitOffset = (I & BitOffsetMask) << CounterSizeBitsLog; in inc()
272 Buffer.Data[Region * SizePerRegion + Index] += static_cast<uptr>(1U) in inc()
276 void incN(uptr Region, uptr I, uptr N) const { in incN()
280 const uptr Index = I >> PackingRatioLog; in incN()
281 const uptr BitOffset = (I & BitOffsetMask) << CounterSizeBitsLog; in incN()
287 void incRange(uptr Region, uptr From, uptr To) const { in incRange()
289 const uptr Top = Min(To + 1, NumCounters); in incRange()
290 for (uptr I = From; I < Top; I++) in incRange()
298 void setAsAllCounted(uptr Region, uptr I) const { in setAsAllCounted()
300 const uptr Index = I >> PackingRatioLog; in setAsAllCounted()
301 const uptr BitOffset = (I & BitOffsetMask) << CounterSizeBitsLog; in setAsAllCounted()
305 void setAsAllCountedRange(uptr Region, uptr From, uptr To) const { in setAsAllCountedRange()
307 const uptr Top = Min(To + 1, NumCounters); in setAsAllCountedRange()
308 for (uptr I = From; I < Top; I++) in setAsAllCountedRange()
312 bool updateAsAllCountedIf(uptr Region, uptr I, uptr MaxCount) { in updateAsAllCountedIf()
313 const uptr Count = get(Region, I); in updateAsAllCountedIf()
322 bool isAllCounted(uptr Region, uptr I) const { in isAllCounted()
326 uptr getBufferNumElements() const { return BufferNumElements; } in getBufferNumElements()
331 static const uptr StaticBufferCount = 2U;
332 static const uptr StaticBufferNumElements = 512U;
336 uptr Regions;
337 uptr NumCounters;
338 uptr CounterSizeBitsLog;
339 uptr CounterMask;
340 uptr PackingRatioLog;
341 uptr BitOffsetMask;
343 uptr SizePerRegion;
344 uptr BufferNumElements;
365 void skipPages(uptr N) { in skipPages()
382 const uptr PageSizeLog;
384 uptr CurrentPage = 0;
385 uptr CurrentRangeStatePage = 0;
389 PageReleaseContext(uptr BlockSize, uptr NumberOfRegions, uptr ReleaseSize,
390 uptr ReleaseOffset = 0)
452 bool markRangeAsAllCounted(uptr From, uptr To, uptr Base, in markRangeAsAllCounted()
453 const uptr RegionIndex, const uptr RegionSize) { in markRangeAsAllCounted()
462 uptr FromInRegion = From - Base; in markRangeAsAllCounted()
463 uptr ToInRegion = To - Base; in markRangeAsAllCounted()
464 uptr FirstBlockInRange = roundUpSlow(FromInRegion, BlockSize); in markRangeAsAllCounted()
490 uptr NumBlocksInFirstPage = in markRangeAsAllCounted()
498 uptr LastBlockInRange = roundDownSlow(ToInRegion - 1, BlockSize); in markRangeAsAllCounted()
541 DecompactPtrT DecompactPtr, const uptr Base, in markFreeBlocksInRegion()
542 const uptr RegionIndex, const uptr RegionSize, in markFreeBlocksInRegion()
548 const uptr LastBlockInRegion = in markFreeBlocksInRegion()
561 const uptr RoundedRegionSize = roundUp(RegionSize, PageSize); in markFreeBlocksInRegion()
562 const uptr TrailingBlockBase = LastBlockInRegion + BlockSize; in markFreeBlocksInRegion()
572 uptr NumTrailingBlocks = in markFreeBlocksInRegion()
588 const uptr PInRegion = DecompactPtr(It.get(I)) - Base; in markFreeBlocksInRegion()
598 const uptr PInRegion = DecompactPtr(It.get(I)) - Base; in markFreeBlocksInRegion()
608 uptr getPageIndex(uptr P) { return (P >> PageSizeLog) - ReleasePageOffset; } in getPageIndex()
609 uptr getReleaseOffset() { return ReleasePageOffset << PageSizeLog; } in getReleaseOffset()
611 uptr BlockSize;
612 uptr NumberOfRegions;
615 uptr ReleasePageOffset;
616 uptr PageSize;
617 uptr PagesCount;
618 uptr PageSizeLog;
619 uptr FullPagesBlockCountMax;
631 const uptr PageSize = Context.PageSize; in releaseFreeMemoryToOS()
632 const uptr BlockSize = Context.BlockSize; in releaseFreeMemoryToOS()
633 const uptr PagesCount = Context.PagesCount; in releaseFreeMemoryToOS()
634 const uptr NumberOfRegions = Context.NumberOfRegions; in releaseFreeMemoryToOS()
635 const uptr ReleasePageOffset = Context.ReleasePageOffset; in releaseFreeMemoryToOS()
636 const uptr FullPagesBlockCountMax = Context.FullPagesBlockCountMax; in releaseFreeMemoryToOS()
645 for (uptr I = 0; I < NumberOfRegions; I++) { in releaseFreeMemoryToOS()
650 for (uptr J = 0; J < PagesCount; J++) { in releaseFreeMemoryToOS()
659 const uptr Pn = BlockSize < PageSize ? PageSize / BlockSize : 1; in releaseFreeMemoryToOS()
660 const uptr Pnc = Pn * BlockSize; in releaseFreeMemoryToOS()
666 for (uptr I = 0; I < NumberOfRegions; I++) { in releaseFreeMemoryToOS()
671 uptr PrevPageBoundary = 0; in releaseFreeMemoryToOS()
672 uptr CurrentBoundary = 0; in releaseFreeMemoryToOS()
677 for (uptr J = 0; J < PagesCount; J++) { in releaseFreeMemoryToOS()
678 const uptr PageBoundary = PrevPageBoundary + PageSize; in releaseFreeMemoryToOS()
679 uptr BlocksPerPage = Pn; in releaseFreeMemoryToOS()