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:
Hugo Santos
2007-04-26 11:38:24 +00:00
parent b821eb28c8
commit e6fb3d3947
8 changed files with 192 additions and 66 deletions
+5 -4
View File
@@ -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)