Virtual machines (VM) for dynamic programming languages store a combination of 64-bit data types in each 64-bit register. A motivation to store multiple variables in a single register is speed, since access to variables within a register is much faster than access to variables stored within RAM. Current approaches of storing multiple 64-bit values in a single 64-bit register result in undesirable effects such as higher register pressure, increased garbage collection burden, excessive boxing/unboxing steps, etc. Most current approaches cannot distinguish a sufficient number of values in 64 bits, as much is hidden behind 64-bit pointers to RAM. This in turn affects performance of the VM. This disclosure makes use of the floating-point specification to store variables of type double, integer, boolean, etc. in non-canonical pointer space, alongside the pointers themselves. In this manner, more variables are packed in a single register, thereby improving performance of virtual machines.
Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 License.
Fairhurst, Michael, "Inverse pointer unboxing", Technical Disclosure Commons, (May 22, 2017)