This function is responsible for 8.5% of all heap allocation (calls) in CL. This change avoids almost all of them by using a SmallVec::<[Value; 32]> instead. Dynamic instruction count falls by 0.25%. The fixed size of 32 was arrived at after profiling with fixed sizes of 1, 2, 4, 8, 16, 32, 64 and 128. 32 is as high as I can push it without the instruction count starting to creep up again, and gets almost all the block-reduction win of 64 and 128.
This crate contains the core Cranelift code generator. It translates code from an intermediate representation into executable machine code.