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 で済まないかも知れない。