tag GC bit check

お、何時の間にか対策が入ってる。いい感じだ。

しかしこの

+/* the upper bit of obj's tag and cdr's GC bit must be the same value */
+#define SCM_HAS_VALID_CDR_GCBITP(obj, cdr)                             \
+    ((SCM_TAG(obj) >> (SCM_TAG_OFFSET + (SCM_TAG_WIDTH - 1))) == SCM_GCBIT(cdr))

を見て思ったけど、最近の processor では 2 shift するのと 1 shift するのでは code size や速度に差はあるのだろうか。(前に一回スルーされたような記憶があるけど)
たしか x86 では 386 だか 486 だかまでは差があったはず。
M32R みたいな RISC では調べるまでもなく size 差は無いだろうけど、速度差は載ってないっぽいな。
もしあるのなら、tag の割り当てを変更して下の方の bit との比較でこなせるようにした方がいいかもしれない。