MCPcopy Create free account
hub / github.com/apache/impala / PopFreeBuffer

Method PopFreeBuffer

be/src/runtime/bufferpool/buffer-allocator.cc:597–611  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

595}
596
597bool BufferPool::FreeBufferArena::PopFreeBuffer(
598 int64_t buffer_len, BufferHandle* buffer) {
599 PerSizeLists* lists = GetListsForSize(buffer_len);
600 // Check before acquiring lock.
601 if (lists->num_free_buffers.Load() == 0) return false;
602
603 lock_guard<SpinLock> al(lock_);
604 FreeList* list = &lists->free_buffers;
605 DCHECK_EQ(lists->num_free_buffers.Load(), list->Size());
606 if (!list->PopFreeBuffer(buffer)) return false;
607 buffer->Unpoison();
608 lists->num_free_buffers.Add(-1);
609 lists->low_water_mark = min<int>(lists->low_water_mark, list->Size());
610 return true;
611}
612
613bool BufferPool::FreeBufferArena::EvictCleanPage(
614 int64_t buffer_len, BufferHandle* buffer) {

Callers 3

AllocateInternalMethod · 0.45
TEST_FFunction · 0.45
DoAllocFunction · 0.45

Calls 4

UnpoisonMethod · 0.80
LoadMethod · 0.45
SizeMethod · 0.45
AddMethod · 0.45

Tested by 1

TEST_FFunction · 0.36