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

yarv-dev:923

From: SASADA Koichi <ko1 atdot.net>
Date: Sat, 18 Feb 2006 02:50:33 +0900
Subject: [yarv-dev:923] fixed> Re: open> super in define_method when called twice

 ささだです。

SASADA Koichi wrote:
>> memoize がまだうまく動きません。
>> define_method を2回呼んだ時の動作が変です。
>
>  色々考えてみたんですが、今の構造だと不可能だということがわかりました。
> 別なアプローチを考えますので、すぐには直らないかも知れません。どれくらい
> 優先度が高い感じですかね。
> 
 と言いながら、直しました。意地ですね、これは。

 問題は、メソッド呼出し毎に積むスタックフレームに、呼び出すときのIDと、
そのときのclassが積まれていないからです。ただし、define_methodで定義され
たメソッド(つまり、NODE_BMETHOD)から super を呼び出すとき *だけ*、つま
り今回のケースのためだけ必要になります。このためだけに、毎回スタックフ
レームに余分なものを積むコストをかけるのは馬鹿らしいので、なんとかなんな
いかなぁ、と考えて、考えて、とても汚いhackで済ますことにしました。

-- 
// SASADA Koichi at atdot dot net


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

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

       859 2006-02-13 21:53 [sheepman sheepman.sa] open> super in define_method            
       861 2006-02-13 23:08 ┗[ko1 atdot.net       ] fixed> Re: open> super in define_method
       914 2006-02-17 19:24  ┗[sheepman sheepman.sa] open> super in define_method when called twice
       922 2006-02-18 01:29   ┗[ko1 atdot.net       ]                                   
->     923 2006-02-18 02:50    ┗[ko1 atdot.net       ] fixed> Re: open> super in define_method when called twice