From dd2ea59d61dad130a6811fffbd1817105b2f84f5 Mon Sep 17 00:00:00 2001 From: Yuichi Nishiwaki Date: Sun, 4 Aug 2013 01:08:11 -0700 Subject: add commentary to value representation --- include/mruby/value.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/include/mruby/value.h b/include/mruby/value.h index 48fca796d..c98028109 100644 --- a/include/mruby/value.h +++ b/include/mruby/value.h @@ -144,6 +144,14 @@ typedef struct mrb_value { }; } mrb_value; +/* value representation by nan-boxing: + * float : FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF + * object: 111111111111TTTT TTPPPPPPPPPPPPPP PPPPPPPPPPPPPPPP PPPPPPPPPPPPPPPP + * int : 1111111111110000 1000000000000000 IIIIIIIIIIIIIIII IIIIIIIIIIIIIIII + * sym : 1111111111110000 1010000000000000 SSSSSSSSSSSSSSSS SSSSSSSSSSSSSSSS + * In order to get enough bit size to save TT, all pointers are shifted 2 bits + * in the right direction. + */ #define mrb_tt(o) (((o).value.ttt & 0xfc000)>>14) #define mrb_mktt(tt) (0xfff00000|((tt)<<14)) #define mrb_type(o) ((uint32_t)0xfff00000 < (o).value.ttt ? mrb_tt(o) : MRB_TT_FLOAT) -- cgit v1.2.3