more slab fixes, also introduced a new strategy optimized for medium sized buffers (64 >= x < 512) with lengths other than power of 2 (has an overhead of 2 words per buffer).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20839 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -23,8 +23,8 @@ protected:
|
||||
|
||||
size_t SlabSize(size_t tailSpace) const
|
||||
{
|
||||
size_t pageCount = (kMinimumSlabItems * fParent->object_size
|
||||
+ tailSpace) / Backend::kPageSize;
|
||||
size_t pageCount = ((kMinimumSlabItems * fParent->object_size
|
||||
+ tailSpace) + Backend::kPageSize / 2) / Backend::kPageSize;
|
||||
if (pageCount < 1)
|
||||
pageCount = 1;
|
||||
return pageCount * Backend::kPageSize;
|
||||
@@ -35,10 +35,11 @@ protected:
|
||||
};
|
||||
|
||||
BaseSlab *_ConstructSlab(Slab *slab, void *pages, size_t byteCount,
|
||||
ObjectLink *(*getLink)(void *parent, void *object), void *parent)
|
||||
void *parent, ObjectLink *(*getLink)(void *parent, void *object),
|
||||
base_cache_owner_prepare prepare, base_cache_owner_unprepare unprepare)
|
||||
{
|
||||
return base_cache_construct_slab(fParent, slab, pages, byteCount,
|
||||
getLink, parent);
|
||||
parent, getLink, prepare, unprepare);
|
||||
}
|
||||
|
||||
void _DestructSlab(BaseSlab *slab)
|
||||
|
||||
Reference in New Issue
Block a user