jppa is a research prototype implementation of the pointer analysis for Java bytecode programs developed by Alex Salcianu as part of his PhD thesis at MIT. Descriptions of preliminary versions of the analysis can be found in Alex Salcianu's SM Thesis (MIT'01) and in a later VMCAI'05 publication focusing on the purity analysis.
NOTE: Please notice the following words in the above description:
.classformat files), not Java sources.
jppacannot help you (at least not now).
The currently implemented clients of the pointer analysis include
Iterators, etc.). Most importantly, it is a very radical test for the correctness of the pointer analysis: if an escaping object is mistakenly allocated on the stack, the executable segfaults very badly, with a very high probability.
A little bit of history:The pointer and purity analysis was implemented in the context of the Flex compiler infrastructure from MIT (retrospectively, not the best choice, but it is too late to change anything now). In February 2006, Alex Salcianu decided to separate from the MIT Flex CVS repository and move to SourceForge, in the hope of making collaboration with other people easier.
jppa is released under the terms of the GNU GPL Licence, except for those parts that
explicitly state a different licence.
Currently, Flex fully supports only applications compiled against the
0.08 implementation of the Java standard library. We implemented
a few additional classes to make sure that Flex can parse itself.
What this means is that if your application invokes some standard
library method that is not implemented in GNU Classpath 0.08 or in our
extensions, then we cannot analyze it ...
Currently, we were able to able to perform stack-allocation and purity
analysis on all Java SPECjvm98 and JOlden
benchmarks, as well as on Java Lex and Java CUP. We were also able to
perform the purity analysis on the analyzer itself, as well as on the
Eclipse compiler and on the Daikon tool. We are not
able to generate native executables for these larger tools, and hence,
we were unable to perform stack allocation on them.
To get the jppa sources, you have two choices:
Harpoondirectory and read the