compaction support 進行中

んー、なんか色々効率悪 *そうな* 箇所があるなあ。Compiler の最適化がどれぐらい効くかで評価が思い切り変わるけど。

その1 (確実)

#define SCM_CONS_CAR_VAL(a) ((ScmObj)(SCM_CELL_CAR(a)))

Cons の tag 00 にしてる意味ないしそれ。orz

2

#define SCM_SAL_RECLAIM_CELL(cell, next)                                     \
    do {                                                                     \
        SCM_ENTYPE_FREECELL(cell);                                           \
        SCM_UNMARK(cell);                                                 \
        SCM_FREECELL_SET_NEXT((cell), (next));                               \
    } while (/* CONSTCOND */ 0)

(cell)->car = 0; (cell)->cdr = 0; かそういう操作にしないと 2 operation で済まないかも知れない。