Potential for future improvement:

st_table and st_table_entry are both 48 bytes on 64-bit.  That means
those allocations may use 64-byte object slots and avoid going through
normal malloc.  AFAIK, glibc malloc (and probably other allocators) can
have around 2 words internal overhead, even, so we can avoid that
overhead by using Ruby object slots for those.