MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / _rpmalloc_adjust_size_class

Function _rpmalloc_adjust_size_class

source/extern/rpmalloc.c:2735–2755  ·  view source on GitHub ↗

Adjust and optimize the size class properties for the given class

Source from the content-addressed store, hash-verified

2733
2734//! Adjust and optimize the size class properties for the given class
2735static void
2736_rpmalloc_adjust_size_class(size_t iclass) {
2737 size_t block_size = _memory_size_class[iclass].block_size;
2738 size_t block_count = (_memory_span_size - SPAN_HEADER_SIZE) / block_size;
2739
2740 _memory_size_class[iclass].block_count = (uint16_t)block_count;
2741 _memory_size_class[iclass].class_idx = (uint16_t)iclass;
2742
2743 //Check if previous size classes can be merged
2744 if (iclass >= SMALL_CLASS_COUNT) {
2745 size_t prevclass = iclass;
2746 while (prevclass > 0) {
2747 --prevclass;
2748 //A class can be merged if number of pages and number of blocks are equal
2749 if (_memory_size_class[prevclass].block_count == _memory_size_class[iclass].block_count)
2750 _rpmalloc_memcpy_const(_memory_size_class + prevclass, _memory_size_class + iclass, sizeof(_memory_size_class[iclass]));
2751 else
2752 break;
2753 }
2754 }
2755}
2756
2757//! Initialize the allocator and setup global data
2758extern inline int

Callers 1

Calls

no outgoing calls

Tested by

no test coverage detected