inline #2 compiler::optimize-form
lisp/compile.l を眺めてたら (get <関数名> 'compiler::optimize-form) に関数を突っ込んでおくと compile 時に inline 展開してくれるっぽいことを発見。
compiler::optimize-form に突っ込む関数は
- 対象の <関数名> を呼び出す form を受け取る
- その呼び出す form があったところに埋め込む form を返す
とすればいいみたい。
;; autolad 指定されてるっぽかったので明示的に読み込む (require "compile") => t (setf (get 'ev-oddp 'compiler::optimize-form) (lambda (form) `(oddp (example-value ,(cadr form))))) => #<lexical-closure: (anonymous)> (defun test-optimize () (bench (ev-oddp X))) => test-optimize (compile 'test-optimize) => test-optimize (test-optimize) => 5.451142
うむ。