OSDN Git Service

Modified performance code.
[soba/JavaAnalysisToolsDemo.git] / JavaAnalysisToolsDemo / src / demo / soot / ControlAndDataDependencePerformance.java
1 package demo.soot;\r
2 \r
3 import java.util.Map;\r
4 \r
5 import soot.Body;\r
6 import soot.BodyTransformer;\r
7 import soot.PackManager;\r
8 import soot.PhaseOptions;\r
9 import soot.Transform;\r
10 import soot.toolkits.graph.ExceptionalUnitGraph;\r
11 import soot.toolkits.graph.UnitGraph;\r
12 import soot.toolkits.graph.pdg.HashMutablePDG;\r
13 import soot.toolkits.graph.pdg.PDGNode;\r
14 import soot.toolkits.graph.pdg.ProgramDependenceGraph;\r
15 import demo.util.MemoryInfo;\r
16 \r
17 public class ControlAndDataDependencePerformance {\r
18 \r
19         public static void main(String[] args) {\r
20                 PackManager.v().getPack("jap").add(new Transform("jap.myTransform", new BodyTransformer() {\r
21                         @Override\r
22                         protected void internalTransform(Body body, String phase, Map options) {\r
23                                 try {\r
24                                         UnitGraph graph = new ExceptionalUnitGraph(body);\r
25                                         ProgramDependenceGraph pdg = new HashMutablePDG(graph);\r
26                                         for (PDGNode node1: pdg.getNodes()) {\r
27                                                 for (PDGNode node2: pdg.getDependents(node1)) {\r
28 //                                                      System.out.println(node1.toShortString() + " -> " + node2.toShortString());\r
29                                                 }\r
30                                         }\r
31                                 } catch (RuntimeException e) {\r
32                                         System.err.println(body.getMethod());\r
33                                 }\r
34                         }\r
35                 }));\r
36                 PhaseOptions.v().setPhaseOption("jap.npc", "on");\r
37                 \r
38                 long start = System.currentTimeMillis();\r
39                 soot.Main.main(args);\r
40                 long end = System.currentTimeMillis();\r
41 \r
42                 System.err.println((end - start) + " [ms]");\r
43                 System.err.println(MemoryInfo.getMemoryInfo());\r
44         }\r
45 \r
46 }\r