…frames" This reverts commit 4e7a877. Breaks some of the tests.
…_allocator to use it, and fix issues with Bitset creating large fixnums. - Fix lots of left-shift related bugs in Bitset (as we were creating a large number of BigNum's with potentially thousands of binary digits to hold our "words" due to left-shift converting FixNums to BigNums. It's still going to happen from 61-64 bits, but way better than 2048-bit fixnums being used). - Added benchmark for IntAllocator. It used to take up to a minute to allocate 10,000 integers on a 2.7 GHz Intel Core i5, now takes 4 seconds for 65,536 (which we killed after waiting for 6 minutes using the old allocator).
Preparing for reusing some Ruby code between pure and native versions
Ruby does not distinguish between 32 and 64 bit numeric values because of automatic promotion of numeric types. However, AMQP 0.9.1 does and some RabbitMQ clients or plugins may declare entities using 32 bit numeric types. Deserialization of such types is not a problem. Indicating that a float should be serialzied as 32 bit, however, is trickier. This commit introduces a box class (think JVM boxed types) that is serialized as a 32 bit float and does nothing else (deserialization uses regular Ruby floats). It is also simply a container, not a Float implementation so performing arithmetic on such boxes won't work.