Lines Matching refs:uptr

22   RegionReleaseRecorder(MemMapT *RegionMemMap, uptr Base, uptr Offset = 0)
25 uptr getReleasedRangesCount() const { return ReleasedRangesCount; }
27 uptr getReleasedBytes() const { return ReleasedBytes; }
29 uptr getBase() const { return Base; }
33 void releasePageRangeToOS(uptr From, uptr To) {
34 const uptr Size = To - From;
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; }
57 uptr getReleasedBytes() const { return ReleasedBytes; }
59 uptr getBase() const { return Base; }
62 void releasePageRangeToOS(uptr From, uptr To) {
63 const uptr Size = To - From;
70 uptr ReleasedRangesCount = 0;
71 uptr ReleasedBytes = 0;
76 uptr Base = 0;
79 uptr Offset = 0;
87 uptr getReleasedPagesCount() const { return ReleasedPagesCount; }
89 void releasePageRangeToOS(uptr From, uptr To) {
95 uptr ReleasedPagesCount = 0;
98 // A buffer pool which holds a fixed number of static buffers of `uptr` elements
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) {
131 uptr index;
140 Mask ^= static_cast<uptr>(1) << index;
149 memset(Buf.Data, 0, StaticBufferNumElements * sizeof(uptr));
158 DCHECK_EQ((Mask & (static_cast<uptr>(1) << Buf.BufferIndex)), 0U);
159 Mask |= static_cast<uptr>(1) << Buf.BufferIndex;
172 Buffer getDynamicBuffer(const uptr NumElements) {
178 const uptr MmapFlags = MAP_ALLOWNOMEM | (SCUDO_FUCHSIA ? MAP_PRECOMMIT : 0);
179 const uptr MappedSize =
180 roundUp(NumElements * sizeof(uptr), getPageSizeCached());
183 Buf.Data = reinterpret_cast<uptr *>(Buf.MemMap.getBase());
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) {
224 void reset(uptr NumberOfRegion, uptr CountersPerRegion, uptr MaxValue) {
232 constexpr uptr MaxCounterBits = sizeof(*Buffer.Data) * 8UL;
235 const uptr CounterSizeBits =
239 CounterMask = ~(static_cast<uptr>(0)) >> (MaxCounterBits - CounterSizeBits);
241 const uptr PackingRatio = MaxCounterBits >> CounterSizeBitsLog;
247 roundUp(NumCounters, static_cast<uptr>(1U) << PackingRatioLog) >>
255 uptr getCount() const { return NumCounters; }
257 uptr get(uptr Region, uptr I) const {
260 const uptr Index = I >> PackingRatioLog;
261 const uptr BitOffset = (I & BitOffsetMask) << CounterSizeBitsLog;
266 void inc(uptr Region, uptr I) const {
268 const uptr Index = I >> PackingRatioLog;
269 const uptr BitOffset = (I & BitOffsetMask) << CounterSizeBitsLog;
272 Buffer.Data[Region * SizePerRegion + Index] += static_cast<uptr>(1U)
276 void incN(uptr Region, uptr I, uptr N) const {
280 const uptr Index = I >> PackingRatioLog;
281 const uptr BitOffset = (I & BitOffsetMask) << CounterSizeBitsLog;
287 void incRange(uptr Region, uptr From, uptr To) const {
289 const uptr Top = Min(To + 1, NumCounters);
290 for (uptr I = From; I < Top; I++)
298 void setAsAllCounted(uptr Region, uptr I) const {
300 const uptr Index = I >> PackingRatioLog;
301 const uptr BitOffset = (I & BitOffsetMask) << CounterSizeBitsLog;
305 void setAsAllCountedRange(uptr Region, uptr From, uptr To) const {
307 const uptr Top = Min(To + 1, NumCounters);
308 for (uptr I = From; I < Top; I++)
312 bool updateAsAllCountedIf(uptr Region, uptr I, uptr MaxCount) {
313 const uptr Count = get(Region, I);
322 bool isAllCounted(uptr Region, uptr I) const {
326 uptr getBufferNumElements() const { return BufferNumElements; }
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) {
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,
453 const uptr RegionIndex, const uptr RegionSize) {
462 uptr FromInRegion = From - Base;
463 uptr ToInRegion = To - Base;
464 uptr FirstBlockInRange = roundUpSlow(FromInRegion, BlockSize);
490 uptr NumBlocksInFirstPage =
498 uptr LastBlockInRange = roundDownSlow(ToInRegion - 1, BlockSize);
541 DecompactPtrT DecompactPtr, const uptr Base,
542 const uptr RegionIndex, const uptr RegionSize,
548 const uptr LastBlockInRegion =
561 const uptr RoundedRegionSize = roundUp(RegionSize, PageSize);
562 const uptr TrailingBlockBase = LastBlockInRegion + BlockSize;
572 uptr NumTrailingBlocks =
588 const uptr PInRegion = DecompactPtr(It.get(I)) - Base;
598 const uptr PInRegion = DecompactPtr(It.get(I)) - Base;
608 uptr getPageIndex(uptr P) { return (P >> PageSizeLog) - ReleasePageOffset; }
609 uptr getReleaseOffset() { return ReleasePageOffset << PageSizeLog; }
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;
632 const uptr BlockSize = Context.BlockSize;
633 const uptr PagesCount = Context.PagesCount;
634 const uptr NumberOfRegions = Context.NumberOfRegions;
635 const uptr ReleasePageOffset = Context.ReleasePageOffset;
636 const uptr FullPagesBlockCountMax = Context.FullPagesBlockCountMax;
645 for (uptr I = 0; I < NumberOfRegions; I++) {
650 for (uptr J = 0; J < PagesCount; J++) {
659 const uptr Pn = BlockSize < PageSize ? PageSize / BlockSize : 1;
660 const uptr Pnc = Pn * BlockSize;
666 for (uptr I = 0; I < NumberOfRegions; I++) {
671 uptr PrevPageBoundary = 0;
672 uptr CurrentBoundary = 0;
677 for (uptr J = 0; J < PagesCount; J++) {
678 const uptr PageBoundary = PrevPageBoundary + PageSize;
679 uptr BlocksPerPage = Pn;