>crowbarでも、CRB_dev.hにあるオブジェクト確保系の関数群において、自動的に
>参照をスタックに積んでしまうことは可能です。ネイティブ関数実行後スタックを
>戻す処理も、処理系側で苦もなくできます。
>なぜ今そうなっていないかというと… うーん、何故なんでしょう? (^^;
>たとえば、オブジェクトを確保して、すぐに既存の配列の要素にセットする、
>という場合、特にスタックに積む必要はないのでその辺の無駄を嫌ったような
>気がしますが、現状の仕様は、「いつGCが起きる可能性があるか」という点について
>crowbarの内部実装をネイティブ関数の作者に晒していることになりますから、
>大変よろしくないですね。次バージョンでは修正します。
>
>ネイティブ関数側で、大量のオブジェクトの確保/破棄を繰り返すような処理が
>あるとすると、スタックが大量に無駄になりますが、そんなことわざわざ
>ネイティブ関数で書かないですよねえ… あるいはその場合でも、
>ネイティブ関数用を呼び出したときのCRB_LocalEnvironmentに
>local referenceの表を持ち、スタックではなくそちらに参照を入れるようにして
>おけば、ネイティブ関数のプログラマに手で解放させることも不可能ではないですし。
ご教授ありがとうございます。
GCに少し興味を持ったのですが、お勧めのサイトなどありますか?
以下の本を購入しようと思ったのですが、(ぱ)さんは読んだことありますか?
http://www.amazon.co.jp/exec/obidos/ASIN/0471941484/qid=1136566955/sr=1-1/ref=sr_1_10_1/250-0589622-2949018