Gauche-0.9 なタグの実装
確認したら 0.8.11 な実装とは異なる模様。gauche.h のコメント見つつ以下にまとめ。
- ポインタ
- 末端 2 bit が 00
- ペア又は heap-allocated なオブジェクトをナニ。指してる word の下 3 bits が '111' ならずっと下に出てくる heap-object でそうでないならペア
- 整数 (Fixnum)
- 末端 2 bit が 01
- 30 ないし 62 bit な signed int
- 実数 (Flonum)
- char (Character)
- 末端 8 bit が 00000011
- 20 bit で UCS をカバーできるとの事
- 拡張のためのいくつかのナニを予約している模様
- misc (Miscellaneous)
- 末端 8 bit が 00001011
- #f とか #t とか '() とか EOF とか UNDEF とか
- Pattern variable
- これ、知らんな
- _Used in macro expander_とある
- Heap object
- 末端 3 bit が 111
- ペアと flonums 以外の heap-allocated なオブジェクトの最初のワードにのみ、との記述あり
- 末端 3 bit をマスクして ScmClass なポインタに、との事?
実装確認した方が良いのか、上記な下書きでは微妙なのでもう少しナニ。