Scm_VMCallCC() 手続き
readingGauche 方面に output 可能なのかなぁ、という事でトライ。以下にメモというか控えを残しつつ。
起点
が Scm_VMCallCC() でそこからの未掘なナニが
- throw_continuation() 手続き
- Scm_VMApply1() 手続き
とりあえず Scm_VMApply1() は投入可能。ただ、throw_continuation() の_vm->cstack と ep->cstack が異なる場合の処理_が微妙な理解。例外とかの実装をきちんと理解する必要あり?
とりあえずココ以外はある程度はっきりしているはずなのでちょっとづつ書いてく予定。
む
チェックが足りてない。Scm_VMDefaultExceptionHandler() という手続きの中で SCM_UNWIND_PROTECT というマクロがあり、その中で cstack をセットして sigsetjmp() している箇所がある模様。ちなみに vm.c で定義されている Scm_VMUnwindProtect() ってどこで使われているのか不明ッス。
とりあえず、throw_continuation() は保留で情報投入してみます。