高速化チューニング その4 合成命令とか - Scheme VM を書く


合成命令をいくつか実装した。ほんの気持ち速くなった。
実装したのは以下の命令。

(define-insn BRANCH_NULLP 1)
(define-insn BRANCH_EQ 1)
(define-insn BRANCH_NUMBER_EQUAL 1)
(define-insn BRANCH_NUMBER_GT 1)
(define-insn BRANCH_NUMBER_GE 1)
(define-insn BRANCH_NUMBER_LT 1)
(define-insn BRANCH_NUMBER_LE 1)
(define-insn BRANCH_PAIRP 1)
(define-insn REFER_LOCAL_PUSH 1)
(define-insn REFER_FREE_PUSH 1)
(define-insn REFER_GLOBAL_PUSH 2)
(define-insn REFER_LOCAL0 0)
(define-insn REFER_LOCAL1 0)
(define-insn REFER_LOCAL2 0)
(define-insn REFER_LOCAL0_PUSH 0)
(define-insn REFER_LOCAL1_PUSH 0)
(define-insn REFER_LOCAL2_PUSH 0)
(define-insn CAR_PUSH 0)
(define-insn CDR_PUSH 0)
(define-insn CAAR_PUSH 0)
(define-insn CADR_PUSH 0)
(define-insn CDAR_PUSH 0)
(define-insn CDDR_PUSH 0)

ついでに Boehm GC を static リンクしソースもレポジトリに入れることにした。
環境によってバージョンが違ったりして気持ち悪かったので。
gc-7.1alpha3 と新しめにしたけど大丈夫かしら。