|
[25 August]I could hardly make any tangible progress this week. I spent much of the time trying to run the analysis on some big programs to see how efficient it is and more importantly, how many must-aliases it is able to find.For that, I used my implementation of must analysis as the subject. Although this itself is not big, the analysis analyzes the library classes from both JDK and soot. So total no of methods it has to analyze is a little more than 6,000, which looks pretty big to me. The analysis takes less than 5 minutes to analyze them. Of that 5 mins, more than 3 mins is taken by soot to build the callgraph. So the efficiency does not seem to be a problem. But I have not been able to see the results of the analysis yet. This is due to the fact that my subject is a library ie. it does not have a main() and soot handles such classes in a way that is posing a problem for me to see the results. Apart from trying to overcome this I also tried to run my analysis on another subject with main(), which is javacc. The problem with this is, after 5 or so minutes the analysis crashes with an error. And I am still in the "looking-intently-at-the-screen" phase and trying to find out how to go about debugging it. NEW IDEA: While running soot in verbose mode, I noticed soot does a lot of work before the real work (analysis) begins, like converting java and class files to jimple and many other things. So I was wondering how much that work is being later used in the analysis. I could imagine that a tool like Jim J's Tarantula showing statments in colors in green to red band can be useful in visualizing the useless effort. A red statment would indicate that the value produced by it was never used. And a green statement produces a value that is always used. A little more formally, we are interested in finding, for each definition point, the number of times the value defined there is used later. It is quite similar to the tool that we are trying to build for memory leak detection – for memory leak problem we are looking for use points that do not have uses later. I can imagine a naive tool that instruments all def and use points can be readily built from INSECT. Last modified 25 August 2004 at 9:40 pm by Saswat Anand |