PDG 1 b 5 2 a b b
PDGによるスライス計算(例) 1: b = 5; 2: a = b + b; 3: if(a > 0) { 4: c = a; a: 5: d = b; } b=5 b a=b+b a b if (a > 0) a d=b c=a 1: b = 5; 2: a = b + b; 3: if(a > 0) { 4: c = a; 5: d = b; } 13 Software Engineering Research Group, Graduate School of Engineering Science, Osaka University
集約の制御 節点集約アルゴリズムは、集約の程度を制御するた めのパラメータ limit (limit 0) を持つ limit を拡大: コストは減少、精度は低下 limit を縮小: コストは増加、精度は向上 bb = = 55 b a== =5; bb + + bb a a a b b=5 a=b+b a = b+b; a if (a (a > > 0) 0) if if (a > 0) { ba; a a, b b if (a > 0) a c= 集約 c = ad = b; } = bb c = a dd = d=b c=a 集約あり (limit = 0) )15 1) 集約なし Software Engineering Research Group, Graduate School of Engineering Science, Osaka University
Pascalスライスシステム - Osaka Slicing System (OSS) - 対象言語: Pascal 開発 言語: C ツールキット: Tcl/Tk コード: 12, 000行 19 Software Engineering Research Group, Graduate School of Engineering Science, Osaka University
モジュール化によるエイリアス解析の効率化 [論文の 3章] エイリアス AFGによるエイリアス解析 Javaエイリアス解析ツール - Java Alias Analysis Tool (JAAT) 評価 まとめ 23 Software Engineering Research Group, Graduate School of Engineering Science, Osaka University
AFGによるエイリアス解析 (例: 単純式) [Phase 1 ~ Phase 2] 1: Integer a, b, c; 2: a = new Integer(1); 3: b = new Integer(2); 4: System. out. println(b); 5: c = a; 6: System. out. println(c); a b c new Integer(1) new Integer(2) b a c 1: Integer a, b, c; 2: a = new Integer(1); b 3: b = new Integer(2); 4: System. out. println(b); a 5: c = a; 29 c 6: System. out. println(c); Software Engineering Research Group, Graduate School of Engineering Science, Osaka University
AFGによるエイリアス解析 (例: 限定式) [Phase 2: “b. result()”] Step 1: bに関するエイリアス計算 エイリアス: A(b) Step 2: A(b)に関する情報の抽出 型: Calcクラス メソッド: Calc: : Calc(), Calc: : add(), Calc: : result() Test {3: result()に関するエイリアス計算 Step class public class Calc { Calc a = new Integer i; Calc(); Calc b = new } public Calc() {i = new Integer(0); Calc(); public void inc() { Integer c; 1); i = new Integer(i. int. Value() + Test() { } a. inc(); public void add(int c) { b. add(1); c = c); i = new Integer(i. int. Value() + b. result(); } } 30 public Integer result() } {return(i); } Software Engineering Research Group, Graduate School of Engineering Science, Osaka University
Javaエイリアス解析ツール - Java Alias Analysis Tool (JAAT) - 対象言語: Java 開発 言語: C++ ツールキット: GTK-コード: 32, 000行 32 Software Engineering Research Group, Graduate School of Engineering Science, Osaka University
評価 JAATに対しJavaプログラムを適用し、提案手法の 有効性を検証 プログラム [概要] Text. Editor [テキストエディタ] Weird. X [Xサーバ] ANTLR [構文解析生成] Dynamic. Java [Javaインタプリタ] サンプルプログラム 関連するクラスライブラリ ファイル 行 1 915 802 114, 887 (0. 1%) (0. 8%) (99. 9%) (99. 2%) 47 16, 703 815 115, 977 (5. 5%) (12. 6%) (94. 5%) (87. 4%) 129 18, 775 267 33, 847 (32. 6%) (35. 7%) (67. 4%) (64. 3%) 242 32, 037 825 119, 564 (22. 7%) (21. 1%) (77. 3%) (78. 9%) 33 Software Engineering Research Group, Graduate School of Engineering Science, Osaka University
考察 (2/3) Phase 2: AFGによるエイリアス計算: オンデマンド解析を 採用しているため、メソッド間のエイリアス解析はその都 度行う必要があるが、そのコストは十分に小さい [ms] プログラム Text. Editor 0. 65 Weird. X 0. 29 ANTLR 0. 17 Dynamic. Java 0. 07 35 Software Engineering Research Group, Graduate School of Engineering Science, Osaka University
- Slides: 38