gencomp 確認 (11)

ばたばたし杉でちょっと頭が切り替わらないんですが、頑張ってみます。
ちょっと色々微妙なので今日もメモのみ、になりそげ。

あら?

色々確認。

gosh> (car (class-slot-ref <vm-insn-info> 'all-insns))
(POP-HANDLERS . #<<vm-insn-info> 0x82524b8>)
gosh> (cadr (class-slot-ref <vm-insn-info> 'all-insns))
(PUSH-HANDLERS . #<<vm-insn-info> 0x8252848>)
gosh> (caddr (class-slot-ref <vm-insn-info> 'all-insns))
(VALUES-N . #<<vm-insn-info> 0x8252bd8>)
gosh> (cadddr (class-slot-ref <vm-insn-info> 'all-insns))
(TAIL-RECEIVE-ALL . #<<vm-insn-info> 0x8252f68>)
gosh> (d (cdr (car (class-slot-ref <vm-insn-info> 'all-insns))))
#<<vm-insn-info> 0x82524b8> is an instance of class <vm-insn-info>
slots:
  name      : POP-HANDLERS
  code      : 170
  num-params: 0
  operand-type: none
  combined  : ()
  all-insns : ((POP-HANDLERS . #<<vm-insn-info> 0x82524b8>) (PUSH-HANDLERS
gosh> 

ちなみに vminsn.scm では以下な記述があって

;; PUSH-HANDLERS
;; POP-HANDLERS
;;   Used for dynamic-wind and alike.

(define-insn PUSH-HANDLERS 0 none)      ; push dynamic handlers
(define-insn POP-HANDLERS 0 none)       ; pop dynamic handlers

こんなカンジに変換されているはず。(vminsn.c)

DEFINSN(SCM_VM_PUSH_HANDLERS, "PUSH-HANDLERS", 0, NONE)
DEFINSN(SCM_VM_POP_HANDLERS, "POP-HANDLERS", 0, NONE)

あと、lib/gauche/vm/insn.scm には以下な記述があるんですが

;; #x0ae  POP-HANDLERS
(make <vm-insn-info> :name 'POP-HANDLERS :code 174
  :num-params 0 :operand-type 'none
  :combined '())

なんか違う。体調悪いし今日も早めに寝る。

と言いつつ

まだごそごそヤッてます。

gosh> (assq 'POP-HANDLERS (class-slot-ref <vm-insn-info> 'all-insns))
(POP-HANDLERS . #<<vm-insn-info> 0x82524b8>)
gosh> 

ちなみに vminsn.{c, scm} な定義は struct insn_info な配列の insn_table の要素の初期化に使われている模様。

駄目だ

限界。