SizeClasses() — netty Function Reference
Architecture documentation for the SizeClasses() function in SizeClasses.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 9682c31b_1e8c_cdd5_584a_e9f43b2c752a["SizeClasses()"] d1cbce7b_bd0a_5553_8e62_6deeb38137ff["SizeClasses"] 9682c31b_1e8c_cdd5_584a_e9f43b2c752a -->|defined in| d1cbce7b_bd0a_5553_8e62_6deeb38137ff 90408e2f_689e_0ba6_ef35_9b594fa267a8["newSizeClass()"] 9682c31b_1e8c_cdd5_584a_e9f43b2c752a -->|calls| 90408e2f_689e_0ba6_ef35_9b594fa267a8 df10baa0_1f3b_513f_0212_4cc30a52f8ee["newIdx2SizeTab()"] 9682c31b_1e8c_cdd5_584a_e9f43b2c752a -->|calls| df10baa0_1f3b_513f_0212_4cc30a52f8ee e2fe51ab_8c8a_4b5c_3a5f_336b659e0c62["newPageIdx2sizeTab()"] 9682c31b_1e8c_cdd5_584a_e9f43b2c752a -->|calls| e2fe51ab_8c8a_4b5c_3a5f_336b659e0c62 99df5c83_e8b2_f91b_cbd6_250b80d82602["newSize2idxTab()"] 9682c31b_1e8c_cdd5_584a_e9f43b2c752a -->|calls| 99df5c83_e8b2_f91b_cbd6_250b80d82602 style 9682c31b_1e8c_cdd5_584a_e9f43b2c752a fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
buffer/src/main/java/io/netty/buffer/SizeClasses.java lines 117–186
SizeClasses(int pageSize, int pageShifts, int chunkSize, int directMemoryCacheAlignment) {
int group = log2(chunkSize) - LOG2_QUANTUM - LOG2_SIZE_CLASS_GROUP + 1;
//generate size classes
//[index, log2Group, log2Delta, nDelta, isMultiPageSize, isSubPage, log2DeltaLookup]
short[][] sizeClasses = new short[group << LOG2_SIZE_CLASS_GROUP][7];
int normalMaxSize = -1;
int nSizes = 0;
int size = 0;
int log2Group = LOG2_QUANTUM;
int log2Delta = LOG2_QUANTUM;
int ndeltaLimit = 1 << LOG2_SIZE_CLASS_GROUP;
//First small group, nDelta start at 0.
//first size class is 1 << LOG2_QUANTUM
for (int nDelta = 0; nDelta < ndeltaLimit; nDelta++, nSizes++) {
short[] sizeClass = newSizeClass(nSizes, log2Group, log2Delta, nDelta, pageShifts);
sizeClasses[nSizes] = sizeClass;
size = sizeOf(sizeClass, directMemoryCacheAlignment);
}
log2Group += LOG2_SIZE_CLASS_GROUP;
//All remaining groups, nDelta start at 1.
for (; size < chunkSize; log2Group++, log2Delta++) {
for (int nDelta = 1; nDelta <= ndeltaLimit && size < chunkSize; nDelta++, nSizes++) {
short[] sizeClass = newSizeClass(nSizes, log2Group, log2Delta, nDelta, pageShifts);
sizeClasses[nSizes] = sizeClass;
size = normalMaxSize = sizeOf(sizeClass, directMemoryCacheAlignment);
}
}
//chunkSize must be normalMaxSize
assert chunkSize == normalMaxSize;
int smallMaxSizeIdx = 0;
int lookupMaxSize = 0;
int nPSizes = 0;
int nSubpages = 0;
for (int idx = 0; idx < nSizes; idx++) {
short[] sz = sizeClasses[idx];
if (sz[PAGESIZE_IDX] == yes) {
nPSizes++;
}
if (sz[SUBPAGE_IDX] == yes) {
nSubpages++;
smallMaxSizeIdx = idx;
}
if (sz[LOG2_DELTA_LOOKUP_IDX] != no) {
lookupMaxSize = sizeOf(sz, directMemoryCacheAlignment);
}
}
this.smallMaxSizeIdx = smallMaxSizeIdx;
this.lookupMaxSize = lookupMaxSize;
this.nPSizes = nPSizes;
this.nSubpages = nSubpages;
this.nSizes = nSizes;
this.pageSize = pageSize;
this.pageShifts = pageShifts;
this.chunkSize = chunkSize;
this.directMemoryCacheAlignment = directMemoryCacheAlignment;
//generate lookup tables
this.sizeIdx2sizeTab = newIdx2SizeTab(sizeClasses, nSizes, directMemoryCacheAlignment);
this.pageIdx2sizeTab = newPageIdx2sizeTab(sizeClasses, nSizes, nPSizes, directMemoryCacheAlignment);
this.size2idxTab = newSize2idxTab(lookupMaxSize, sizeClasses);
}
Domain
Subdomains
Source
Frequently Asked Questions
What does SizeClasses() do?
SizeClasses() is a function in the netty codebase, defined in buffer/src/main/java/io/netty/buffer/SizeClasses.java.
Where is SizeClasses() defined?
SizeClasses() is defined in buffer/src/main/java/io/netty/buffer/SizeClasses.java at line 117.
What does SizeClasses() call?
SizeClasses() calls 4 function(s): newIdx2SizeTab, newPageIdx2sizeTab, newSize2idxTab, newSizeClass.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free