[前][次][番号順一覧][スレッド一覧][生データ]

yarv-dev:378

From: shudo computer.org
Date: Mon, 13 Dec 2004 19:47:57 +0900
Subject: [yarv-dev:378] Re: Exception Problem with Register Allocated Variable

ささださん、皆様、首藤です。

> > 例外発生時でも拡張ライブラリからは普通に return してもらって、
> > その際の返り値なり何なりで例外の発生を伝えてもらった方がなんぼか...
>
>  それ(2辺戻値法)だと,拡張ライブラリが若干書きづらくなるん
> ですよね.それが出来ればどれだけ楽か.

Java の C/C++ 言語インタフェースである JNI みたいに
ハンドル (JNIEnv *) があれば、
ハンドル中に例外についての情報を入れることもできるんですけどねー

よきにつけ悪しきにつけ、レガシーですね。


> > って、C で書かれた拡張ライブラリを呼ぶ直前に setjmp しておく、
> > ってことはできないんでしょうか。
> > そうすることで、戻った後で PC を得られませんか?
>
>  それは可能ですが,「longjmp する可能性のある関数呼び出し」の
> 前すべてで setjmp するとえらいコストになりそうです.基本的に
> Ruby C API ではたいてい例外発生する可能性がありますから.

longjmp で戻るのではなくて、
何らかの方法で C のスタックを巻き戻すことで大域脱出するとか :)


Kazuyuki Shudo/首藤一幸   私をたばねないで あらせいとうの花のように
  shudo computer.org   http://www.shudo.net/

--
ML: yarv-dev quickml.atdot.net
使い方: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧][生データ]

       366 2004-12-11 02:51 [ko1 atdot.net       ] Exception Problem with Register Allocated Variable
       368 2004-12-11 10:08 ┗[nobu.nokada softhome]                                       
       369 2004-12-11 11:34  ┗[ko1 atdot.net       ]                                     
       373 2004-12-12 22:25   ┗[shudo computer.org  ]                                   
       374 2004-12-13 01:05    ┗[maeda-yarv atusi.org]                                 
       375 2004-12-13 14:46     ┗[ko1 atdot.net       ]                               
       376 2004-12-13 18:13      ┗[shudo computer.org  ]                             
       377 2004-12-13 18:18       ┗[ko1 atdot.net       ]                           
->     378 2004-12-13 19:47        ┗[shudo computer.org  ]