Towards a Theoretically-Backed and Practical Framework for Selective Object-Sensitive Pointer Analysis (Artifact Document)
[UPDATE1:] The document for artifact evaluation is available in supplementalMaterials/OOPSLA'25_Round2_Artifact_Evaluation_Document.pdf. It contains detailed instructions for running the artifact, including all commands and expected outputs.
[UPDATE2:] The supplemantal material is available in supplementalMaterials/Supplemental-Material.pdf. It includes the formal proofs and two detailed experimental tables.
This artifact supports reproducing the results of all research questions (RQ1-RQ4) in Section 6 of our paper, including all associated tables and figures.
To comprehensively evaluate the effectiveness of Moon and compare it against other state-of-the-art approaches for pointer analysis (Cut-Shortcut, Zipper, Conch, DebloaterX), we implemented Moon within the Qilin framework.
Details of all benchmarks can be found in artifact/util/benchmark.py, including their names and jar paths for analysis.
Since Moon was implemented in the Qilin framework, the directory structure remains largely consistent with Qilin. Here, we introduce the newly added approaches: Moon and Cut-Shortcut.
The source code for Moon is located in qilin/pta/toolkit/moon.
The source code for Cut-Shortcut builds upon the version in Tai-e, with modifications for Qilin. It is located in qilin/core/solver/csc.
In the root directory of this repository, execute:
./gradlew clean fatjarThis produces an executable jar in the artifact/ directory, requiring JDK 16 or higher.
cd artifact
python run.py {benchmark_name} {sensitivity} -print -cd -cda=MOON- Available sensitivities: 2o (2obj-sensitivity) and 3o (3obj-sensitivity).
- Benchmark names are listed in artifact/util/benchmark.py.
cd artifact
python run.py {benchmark_name} csc -print- Benchmark names are listed in artifact/util/benchmark.py.
cd artifact
python run.py {benchmark_name} {sensitivity} -print- Available sensitivities: Z-2o (2obj-sensitivity) and Z-3o (3obj-sensitivity).
- Benchmark names are listed in artifact/util/benchmark.py.
cd artifact
python run.py {benchmark_name} {sensitivity} -print -cd -cda=CONCH- Available sensitivities: 2o and 3o.
- Benchmark names are listed in artifact/util/benchmark.py.
cd artifact
python run.py {benchmark_name} {sensitivity} -print -cd -cda=DEBLOATERX- Available sensitivities: 2o and 3o.
- Benchmark names are listed in artifact/util/benchmark.py.
To execute all benchmarks with all approaches, including context-insensitive pointer analysis:
cd artifact
python qilinDriverForAll.pyThis command runs:
- Context-insensitive pointer analysis.
- Cut-Shortcut.
- Zipper (2obj-sensitive and 3obj-sensitive).
- Conch (2obj-sensitive and 3obj-sensitive).
- DebloaterX (2obj-sensitive and 3obj-sensitive).
- Moon (2obj-sensitive and 3obj-sensitive).
For all 30 benchmarks.
cd artifact
python run.py {benchmark_name} {sensitivity} -print -cd -cda=MOONb- Sensitivities: 2o and 3o.
- Benchmark names are listed in artifact/util/benchmark.py.
To execute all ablation experiments:
cd artifact
python qilinDriverForMoonAblation.py- Table 1: Experiment details for 2obj-sensitive pointer analysis
- Table 2: Experiment details for 3obj-sensitive pointer analysis
- Table 3: Pre-analysis time comparison
- Figure 1: Precision comparison of all approaches under 2obj-sensitive analysis

- Figure 2: Efficiency comparison of all approaches under 2obj-sensitive analysis

- Figure 3: Precision comparison of all approaches under 3obj-sensitive analysis

- Figure 4: Efficiency comparison of all approaches under 3obj-sensitive analysis

- Figure 5: Percentage of Precision-Relevant Heaps identified by Moon (2obj and 3obj).

- Figure 6: Comparison of Precision-Relevant Heaps identified by Moon and DebloaterX (2obj and 3obj).

- Figure 7: Distribution of Precision-Relevant Heaps identified by Moon (2obj-sensitive).

- Figure 8: Distribution of Precision-Relevant Heaps identified by Moon (3obj-sensitive).

- Figure 9: Precision comparison with different Precision-Relevant Heaps identified by Moon (3obj-sensitive).

- Figure 10: Speedup comparison with different Precision-Relevant Heaps identified by Moon (3obj-sensitive).
