mrubyはオブジェクトの型としてmrb_valueというものを使う。これは以下のような宣言になっている。 typedef struct mrb_value { union { mrb_float f; void *p; mrb_int i; mrb_sym sym; } value; enum mrb_vtype tt:8; } mrb_value;共用体valueに4つの型があり、intだったりポインタだったりする。前にも書いたような気はするが、この中でmrb_floatがdouble型で定義されており(MRB_USE_FLOAT未定義の場合)、その8byteとttの1byte、さらに8byteアラインされてこの構造体のサイズは合計16byteになる。 ttとvalueを別々に操作する場合(OP_MOVEなど)ならいいが、関数の引数や戻り値にmrb_valueを値渡しで使うとスタック経