NaNボクシング
浮動小数点数が「非数(NaN)」を表すときに使わないビットへ、ポインタや整数や型タグを詰め込む手法。高速な動的型付けランタイムのほとんどが採用している。
倍精度浮動小数点数には、「非数」を意味するビットパターンが膨大にある。指数部がすべて1で、仮数部が0以外であればよい。その結果、1値あたり約52ビットが空いており、実際のポインタは48ビットしか使わないため、ポインタと型タグの両方が余裕をもって収まる。利点は、言語内のあらゆる値がちょうど8バイトになること、浮動小数点数をヒープ確保なしに直接保持できること、型判定が数命令で済むことだ。欠点は、コードがマスクとシフトだらけになること、デバッグが厄介になること、そして48ビット前提が永遠ではないことである。ページテーブルが深い構成のシステムでは収まらないアドレスが返されうるため、通常は確保を低位メモリに強制して対処する。