Home / Function/ allocateRun() — netty Function Reference

allocateRun() — netty Function Reference

Architecture documentation for the allocateRun() function in PoolChunk.java from the netty codebase.

Function java Buffer Search calls 5 called by 2

Entity Profile

Dependency Diagram

graph TD
  ff51bcad_2a8e_9ef1_b286_8e676953d24e["allocateRun()"]
  271be16e_fb25_9fe6_0749_cf5dd80dd903["PoolChunk"]
  ff51bcad_2a8e_9ef1_b286_8e676953d24e -->|defined in| 271be16e_fb25_9fe6_0749_cf5dd80dd903
  dc4b66ae_8f51_844d_74c5_b56fbafe898a["allocate()"]
  dc4b66ae_8f51_844d_74c5_b56fbafe898a -->|calls| ff51bcad_2a8e_9ef1_b286_8e676953d24e
  de510c10_913b_9792_3aa7_159e623d5dd8["allocateSubpage()"]
  de510c10_913b_9792_3aa7_159e623d5dd8 -->|calls| ff51bcad_2a8e_9ef1_b286_8e676953d24e
  96d34a61_1614_0158_28ca_09dcdd88e7ba["runFirstBestFit()"]
  ff51bcad_2a8e_9ef1_b286_8e676953d24e -->|calls| 96d34a61_1614_0158_28ca_09dcdd88e7ba
  0c316f41_e99f_1ec2_114e_8ddf13319b33["isUsed()"]
  ff51bcad_2a8e_9ef1_b286_8e676953d24e -->|calls| 0c316f41_e99f_1ec2_114e_8ddf13319b33
  8ccbb357_1d7a_1dbd_9f91_87a4fb202fea["removeAvailRun0()"]
  ff51bcad_2a8e_9ef1_b286_8e676953d24e -->|calls| 8ccbb357_1d7a_1dbd_9f91_87a4fb202fea
  e0491618_1a24_463c_753f_6914e389ffd3["splitLargeRun()"]
  ff51bcad_2a8e_9ef1_b286_8e676953d24e -->|calls| e0491618_1a24_463c_753f_6914e389ffd3
  1bdfe3f7_3884_814f_0eb6_924b6a843c79["runSize()"]
  ff51bcad_2a8e_9ef1_b286_8e676953d24e -->|calls| 1bdfe3f7_3884_814f_0eb6_924b6a843c79
  style ff51bcad_2a8e_9ef1_b286_8e676953d24e fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

buffer/src/main/java/io/netty/buffer/PoolChunk.java lines 370–399

    private long allocateRun(int runSize) {
        int pages = runSize >> pageShifts;
        int pageIdx = arena.sizeClass.pages2pageIdx(pages);

        runsAvailLock.lock();
        try {
            //find first queue which has at least one big enough run
            int queueIdx = runFirstBestFit(pageIdx);
            if (queueIdx == -1) {
                return -1;
            }

            //get run with min offset in this queue
            IntPriorityQueue queue = runsAvail[queueIdx];
            long handle = queue.poll();
            assert handle != IntPriorityQueue.NO_VALUE;
            handle <<= BITMAP_IDX_BIT_LENGTH;
            assert !isUsed(handle) : "invalid handle: " + handle;

            removeAvailRun0(handle);

            handle = splitLargeRun(handle, pages);

            int pinnedSize = runSize(pageShifts, handle);
            freeBytes -= pinnedSize;
            return handle;
        } finally {
            runsAvailLock.unlock();
        }
    }

Domain

Subdomains

Frequently Asked Questions

What does allocateRun() do?
allocateRun() is a function in the netty codebase, defined in buffer/src/main/java/io/netty/buffer/PoolChunk.java.
Where is allocateRun() defined?
allocateRun() is defined in buffer/src/main/java/io/netty/buffer/PoolChunk.java at line 370.
What does allocateRun() call?
allocateRun() calls 5 function(s): isUsed, removeAvailRun0, runFirstBestFit, runSize, splitLargeRun.
What calls allocateRun()?
allocateRun() is called by 2 function(s): allocate, allocateSubpage.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free