Slab Allocator vs General Purpose

Why does the Linux kernel use a slab allocator for frequently allocated objects like task_struct instead of a general-purpose allocator?