The implementation of our PLDI'14 paper is available under the following two folders of JChord:

We assume the reader has a Unix-like environment. To run the framework, please follow the instructions below:

1. Set up JChord and benchmarks.

The source code of JChord is available at https://bitbucket.org/psl-lab/jchord. Its documents are available at https://www.seas.upenn.edu/~mhnaik/chord/user_guide/index.html. Please follow the instructions to set JChord up. The benchmarks (pjbench) are available at https://bitbucket.org/psl-lab/pjbench. Please complile the benchmark which you want to run the analysis on. To do that, run ant under the benchmark folder. To compile the benchmarks, you need ant and at least JDK 1.5.

2. Set up environment variables.

We will use a Perl script to run the analysis. To do that, we need to set up the following environment variables:

  • CHORD_MAIN: main folder of the local JChord copy.
  • PJBENCH: root foler of the local pjbench folder.
  • PAG_BENCH: root foler of the local pjbench folder.

3. Run the analysis.

We will use the runner.pl under the main folder of JChord to execute the analyses.

To run the pointer analysis:

./runner.pl -mode=serial -program=<benchmark name> -analysis=provenance-kobj -D chord.provenance.client=<polysite/downcast>

Polysite is the monomorphic callsite client we included in the PLDI’14 paper while downcast is a downcast safety checker which we didn't included in the paper.

To run the typestate analysis:

./runner.pl -mode=serial -program=<benchmark name> -analysis=provenance-typestate

The output log file is <benchmark path>/chord_output_<analysis name>/log.txt


If you still have questions about how to run the analysis after reading the document, feel free to contact me. I will get back to you ASAP and update this page if needed.