LREF*_PUSH
又使用例が微妙なのか??と言いつつ試験
ざくっと以下のカンジなソレを確認
gosh> (disasm (lambda (a) (lambda (f) (f a)))) main_code (name=#f, code=0x80d68a0, size=3, const=1, stack=0): args: #f 0 CLOSURE #<lambda 0> ; (lambda (f) (f a)) 2 RET internal_closure_0 (name=#f, code=0x80d68b0, size=4, const=0 stack=4): args: #f 0 LREF10-PUSH ; a 1 LREF0 ; f 2 TAIL-CALL(1) ; (f a) 3 RET #<undef> gosh> (disasm (lambda (a b) (a b))) main_code (name=#f, code=0x81f1d00, size=4, const=0, stack=4): args: #f 0 LREF0-PUSH ; b 1 LREF1 ; a 2 TAIL-CALL(1) ; (a b) 3 RET #<undef> gosh>
うーん。LREF_PUSH はどんなケイスで出てくるのか。