netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2004-10-27 古い日記からの変換データ [長年日記] ▲
_ [work]エイリアス解析の価値の謎 ▲
エイリアス識別付きのフィールド間データ依存関係の解析を実装しようとしてこける.エイリアス情報が変わるとデータフローが変わってデータフローが変わるとエイリアスの流れも変わるんでは….という疑問があるし,あまり効果的な解析方法がない.
Flow Sensitive にエイリアスを解析しようとするとメソッド呼び出し順序などが必要になってくるのだが,外部へのメソッド呼び出し時に何が起きるかは(多態性の都合で)決定できないので,外部からメソッド呼び出しを受ける可能性を考えると非現実的.
結局手抜きな実装としては,自分のメソッド内で作ったオブジェクトに対してだけ,外部から参照可能なフィールドに代入されるかメソッドの引数で外へ出て行くまでエイリアスを識別しておくということになるのだろうか.ここでも「外部から参照可能な」が曲者で,Java の private フィールドって自分自身の他のインスタンス(this.class.new したもの)からは参照できてしまう.
こうなると,ローカル変数に代入されているものだけが対象となるわけで,エイリアス解析で解決できる問題がすごく狭いような気がしてきた.
this と,それ以外(thisあるいは他のインスタンスを指す参照)はいちおう区別しておいたほうが良さそうに思えるが,それ以外の場面ではあまり真面目にエイリアス解析しないほうが幸せっぽい気がしてきた.