xinyiZzz commented on PR #11040:
URL: https://github.com/apache/doris/pull/11040#issuecomment-1190122477
refer this
diff --git a/be/src/runtime/memory/chunk_allocator.cpp
b/be/src/runtime/memory/chunk_allocator.cpp
index 6db98ecc9..e69b4c2e8 100644
--- a/be/src/runtime/memory/chunk_allocator.cpp
+++ b/be/src/runtime/memory/chunk_allocator.cpp
@@ -136,6 +136,8 @@ ChunkAllocator::ChunkAllocator(size_t reserve_limit)
}
Status ChunkAllocator::allocate(size_t size, Chunk* chunk) {
+ DCHECK(BitUtil::RoundUpToPowerOfTwo(size) == size);
+
// fast path: allocate from current core arena
int core_id = CpuInfo::get_current_core();
chunk->size = size;
diff --git a/be/src/runtime/memory/chunk_allocator.h
b/be/src/runtime/memory/chunk_allocator.h
index 43bd88444..fef62e6db 100644
--- a/be/src/runtime/memory/chunk_allocator.h
+++ b/be/src/runtime/memory/chunk_allocator.h
@@ -62,11 +62,7 @@ public:
ChunkAllocator(size_t reserve_limit);
- // Allocate a Chunk with a power-of-two length "size".
- // Return true if success and allocated chunk is saved in "chunk".
- // Otherwise return false.
- Status allocate(size_t size, Chunk* Chunk);
-
+ // Up size to 2^n length, allocate a chunk.
Status allocate_align(size_t size, Chunk* chunk);
// Free chunk allocated from this allocator
@@ -78,6 +74,14 @@ public:
// otherwise the capacity of chunk allocator will be wrong.
void free(uint8_t* data, size_t size);
+private:
+ friend class MemPool;
+
+ // Allocate a Chunk with a power-of-two length "size".
+ // Return true if success and allocated chunk is saved in "chunk".
+ // Otherwise return false.
+ Status allocate(size_t size, Chunk* Chunk);
+
private:
static ChunkAllocator* _s_instance;
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]