最終更新:ID:D7J/gPk67w 2009年02月18日(水) 22:00:11履歴
bool object_slab_cache_t::init(object_heap_t* object_heap, int object_size, bool gc) { assert(object_heap); assert(object_size >= (int)sizeof(object_freelist_t));
オブジェクトの大きさが、フリーリストの要素を保持できるだけの大きさがなければ、エラーとする。
if (object_size & (object_size - 1)) { fatal("%s:%u object_size must be power of 2 but got %d", __FILE__, __LINE__, object_size); return false; } destroy();
m_heap = object_heap; m_object_size = object_size; m_object_size_shift = 0; m_bitmap_size = 0; m_cache_count = 0; m_cache_limit = 0; int bits = m_object_size; while (bits >>= 1) m_object_size_shift++; if (gc) m_bitmap_size = ((OBJECT_SLAB_SIZE >> m_object_size_shift) + 7) / 8;
return true; }
タグ
コメントをかく