The pointer assignment graph.
This defines an abstract pointer analysis. You can define a concrete pointer analysis (as a subclass) by defining Qilin's three context-sensitivity-controlling parameters.
Qilin's incremental worklist-based constraint solver for supporting pointer analyses with fine-grained context-sensitivity. For more details, please refer to Section 3.3 and Algorithm 1 of our ECOOP'2022 paper.
This package includes a set of built-in instantiations of Qilin's three context-sensitivity-controlling parameters.
A context constructor describes how to construct a new context for a method.
Context selector selects some context elements from the context of a method to form a new context for a variable declared (or object allocated ) in the method.
This context selector is defined for context-insensitive pointer analysis. For all variables and objects, it returns an empty context.
This context selector is used in Data-driven pointer analysis (OOPSLA'2017). Every method can use contexts of different context lengths.
This context selector allows all variables and objects to have have their own context abstractions (with, e.g., different context lengths) in the most general case.
This context selector is designed for Mahjong and Context debloating technique introduced in ASE'21 paper.
If you want to create your own pointer analysis, please put your code under this sub-project.
PTA implementations are stored under the "tools/" directory while their corresponding pre-analyses (if any) are stored under the "toolkits" directory.
This performs the standard context-insensitive pointer analysis. The PTA pattern is "insens".
Context debloating for Object-sensitivity. The PTA pattern can be {ko, Z-ko, E-ko} + "-cd" respectively for debloating kOBJ, Zipper-guided kOBJ, and Eagle-guided kOBJ.
Mahjong-guided context-sensitive pointer analysis. The PTA pattern can be one of {M-kc, M-ko}, k = {1, 2, 3, ...}
About 100 unit test cases for testing Qilin. If you want to add more unit test cases, please put your code here.