langsmith:148
From: Shiro Kawai <shiro lava.net>
Date: Sat, 9 Oct 2004 06:42:39 +0900
Subject: [langsmith:148] Re: 例外処理:Eiffel とRuby
ささださんは例外処理後に移るべき継続に関する情報をコンパイル
時にいろいろ解析して、その継続の作成コストを下げることができないか、
について考えてるんですよね。
あいにく、Schemeの場合、
(1) with-exception-handler等の例外プリミティブが構文ではなく
普通のprocedureであること
(2) 第一級の継続の存在により、スタックフレーム間のオフセットが
コンパイル時に決定できないこと
があるので、コンパイル時にごにょごにょするのは面倒です。
Gaucheでは、継続保存の必要がある例外プリミティブ
with-error-handlerの場合、呼ばれた時点の継続フレームの
ポインタと、動的環境へのポインタを保存しています。素直な実装です。
ここの継続はone-shot, upward onlyなので、call/ccの継続ほど
重くありません。(call/ccの継続は全ての継続フレームをスタックから
ヒープにコピーする)
Rubyの場合、継続の実装をどうするかで(2)の要素は変わってきそう
ですね。スタックまるごとコピーバックならオフセットは変わらない
ですが、スタックオーバフローとかの扱いはどうしてるんでしょう。
--shiro
--
ML: langsmith quickml.atdot.net
使い方: http://www.atdot.net/~ko1/quickml
135 2004-10-07 00:06 [ttn3w7u2fs mx6.ttcn.] 例外処理:Eiffel とRuby 136 2004-10-07 00:41 ┗[matz ruby-lang.org ] 138 2004-10-07 11:29 ┗[ttn3w7u2fs mx6.ttcn.] 139 2004-10-07 12:35 ┣[matz ruby-lang.org ] 144 2004-10-07 21:49 ┃┗[randy mvd.biglobe.ne] 145 2004-10-07 22:04 ┃ ┗[matz ruby-lang.org ] 146 2004-10-08 21:59 ┃ ┗[randy mvd.biglobe.ne] 150 2004-10-11 00:16 ┃ ┗[ttn3w7u2fs mx6.ttcn.] 151 2004-10-11 00:52 ┃ ┗[matz ruby-lang.org ] 154 2004-10-13 00:00 ┃ ┗[ttn3w7u2fs mx6.ttcn.] 155 2004-10-13 01:30 ┃ ┗[matz ruby-lang.org ] 140 2004-10-07 14:23 ┣[takehiko eel.rdc.tos] 141 2004-10-07 14:33 ┃┗[matz ruby-lang.org ] 143 2004-10-07 16:50 ┃ ┗[takehiko eel.rdc.tos] 142 2004-10-07 15:20 ┣[shiro lava.net ] 156 2004-10-14 12:32 ┃┗[maeda-langsmith atus] 147 2004-10-08 22:21 ┗[ko1 atdot.net ] -> 148 2004-10-09 06:42 ┗[shiro lava.net ]