cstack 属性

うーん ... 薬で体調微妙。
とりあえず cstack の続きをくずくずと確認中。とりあえず throw_continuation() 手続きの

    ScmEscapePoint *ep = (ScmEscapePoint*)data;
    ScmObj args = argframe[0];
    ScmVM *vm = theVM;

    if (vm->cstack != ep->cstack) {

な分岐の意味がナニ。
ここ時点の ep->cstack って上記によれば call/cc した時点の vm->cstack になるはずなので、vm->cstack が更新される箇所を見れば上記の分岐に入る条件が分かる?

確認してみたんですが

  • Scm_VMUnwindProtect() 手続き
  • Scm_VMNextHandler() 手続き
  • Scm_VMRewindProtect() 手続き

あたりらしい。全然本調子ではないので勘弁して下さひ。

とりあえず

上記ビンゴとしてもそれぞれがどういった状態で呼び出されるか、が理解できてないので、そちら方面の確認が必要。