«前の日(05-16) 最新 次の日(05-18)» 追記

netail.net

自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.

最近のお知らせ (古いものはこちら)


2003-05-17 古い日記からの変換データ

_ ツール

デジカメで撮影した画像 (jpeg) ファイルを一括縮小するのに,ResizeJPG (author: 関口 洋平) というものをwww.vector.co.jp で拾ってきた.操作性としてはそこそこ.欠点があるとすれば,ウィンドウを大きくしても入力プレース(グリッド)が大きくならないことらしい.

_ Java

今日のはまり.

Java で GUI アプリケーションを書いていたら,setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);を呼び出し忘れていたせいで,ウィンドウを閉じてもプロセスが終了してなかった.

ページスラッシングを起こし始めたので気付いた.


2004-05-17 古い日記からの変換データ

_ 論文

校正ゲラを提出.誤植は本文で1ヵ所と,文献番号の誤り.なぜか引用してない文献が1個残っていたのと,登場順序での番号振りに間違いがあったところを修正.


2006-05-17

_ タイムゾーン的には

日本時間とずれているのを忘れて昨日書いてしまったので直しました.とりあえずカナダ時間で書くことにします.

_ [論文][ツール] ポインタ解析アルゴリズムのためのデータベースbddbddb

John Whaley, Monica S. Lam: Cloning-Based Context-Sensitive Pointer Alias Analysis Using Binary Decision Diagrams.

Proceedings of PLDI 2004, pp. , Washington, DC, USA, June 2004.

いわゆるポインタ解析アルゴリズム(Points-To Set Analysis)の提案論文.

最初に,recursive call がある部分はループになっている部分(Strongly Connected Components)を1ノードに置換することでaccyclic graphへ変換する.

次に,呼び出し場所が違う場合,メソッドのグラフを呼び出し箇所ごとに丸ごとコピーする("Cloning-Based"と言っているのはそのため).

これらの作業の結果,Call Path ごとに完全に独立したグラフが出来上がる.この上で context-insensitive 解析を実行すれば,context-sensitive な結果が得られることになる.

ただし,普通にコピー操作を実行してしまうと必要な記憶容量が膨大になってしまうので,BDD-Based Deductive DataBase(略して bddbddb)を使ってデータを保存し,その上で論理型言語のDatalogを使ってデータ操作することを提案している.Datalogのプログラムのうち,特定のサブセットだけを扱うことでパフォーマンス向上している様子.

論文は,上記のアイディアと,Datalog言語で定義された解析アルゴリズムを解説している.,基本の代入関係から Points-To 解析をすることで型の到達可能性をちゃんと考慮したコールグラフを作成し,そこから必要なコピー操作を行ってグラフを call path 単位に分解し,その上で context-insensitive な points-to 解析を行う.

アプローチとしては,context-sensitive にしようとしたときのデータ量の爆発を BDD によって抑えようというものだと考えられる.Datalog はリレーショナル代数の処理を書きやすく,リレーションをBDD上で表現して,DatalogをBDD上の操作にマップするというところが工夫で,しかもDatalogを使ってアルゴリズムが比較的簡潔に示されている点はけっこうえらい(AからBに代入があって,BからCに代入があるときAからCに代入があると考える,といったようなルールをDatalogは簡潔に記述できる).

bddbddb 自体は,β版という位置づけだが,sourceforge で公開されている.使い方については,ドキュメントがあまりちゃんと用意されてないので,ちょっと調査中.正直,パフォーマンス上の工夫が凝らされた解析ツールは貴重な存在なので,今回は少しまじめに調べている.