Qilin's code structure

Imagemap
Qilin's code structure qilin.core core PAG MethodPAG PAG Nodes Object Node StringConstantNode.java ClassConstantNode.java AllocNode.java ContextAllocNode.java Pointer Node GlobalVarNode.java LocalVarNode.java FieldValNode.java ContextField.java ContextVarNode.java CallgraphBuilder ExceptionHandler CorePTA.java PTA Solver incremental sets Feature Handlers native codes reflections parameters Context Constructors CallsiteCtxConstructor.java ObjCtxConstructor.java TypeCtxConstructor.java HybObjCtxConstructor.java HybTypeCtxConstructor.java InsensCtxConstructor.java Context Selector UniformSelector.java InsenSelector.java HeuristicSelector.java FullMethodLvSelector.java PartialMethodLvSelector.java VarLvSelector.java PartialVarSelector.java DebloatingSelector.java BeanSelector.java PipelineSelector.java Heap Abstractor AllocSiteAbstractor.java HeuristicAbstractor.java MahjongAbstractor.java PTA evaluator qilin.pta driver Main.java PTAOption.java PTAPattern.java concrete PTAs Spark.java ObjectSensPTA.java CallSiteSensPTA.java TypeSensPTA.java HybridObjectSensPTA.java DebloatedPTA.java TurnerPTA.java MahjongPTA.java EaglePTA.java ZipperPTA.java BeanPTA.java TunnelingPTA.java DataDrivenPTA.java qilin.microben context sensitivity k-CFA k-OBJ k-Hybrid collections flow sensitivity general test cases array assign call clinit exception field global natives reflog artifact qilin.py run.py Qilin-version-SNAPSHOT.jar benchmarks JREs jre1.6.0_45 jre1.8.0_312 dacapo2006 dacapo2018 qilin.util
hide
Qilin's code structure User Link
hide
hide
core
leaf

It provides an API for handling virtual call dispatch.

leaf

It provides an API for exception dispatch along the exception-catch-links.

leaf

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.

hide

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.

leaf

These classes are modified from their corresponding ones in "soot/jimple/spark/sets".

hide
Feature Handlers
leaf

We currently discover the reflective targets in a program by using TAMIFLEX before performing pointer analysis on the program. You can design your own reflection handlers here.

hide

This package includes a set of built-in instantiations of Qilin's three context-sensitivity-controlling parameters.

hide
Context Constructors

A context constructor describes how to construct a new context for a method.

leaf

Equation (2) in our ECOOP'22 paper.

leaf

Equation (3) in our ECOOP'22 paper.

leaf

Equation (4) in our ECOOP'22 paper.

leaf

Equation (5) in our ECOOP'22 paper.

leaf

Refer to Selective 2-type-sensitive with 1-context-sensitive heap hybrid (s-2type+H) in "Hybrid context-sensitivity for Points-to Analysis" (PLDI'13).

leaf

Equation (1) in our ECOOP'22 paper.

hide
Context Selector

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.

leaf

Equation (6) in our ECOOP'22 paper.

leaf

This context selector is defined for context-insensitive pointer analysis. For all variables and objects, it returns an empty context.

leaf

Equation (8) in our ECOOP'22 paper.

leaf

This context selector is used in Data-driven pointer analysis (OOPSLA'2017). Every method can use contexts of different context lengths.

leaf

Equation (9) in our ECOOP'22 paper.

leaf

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.

leaf

Equation (10) in our ECOOP'22 paper.

leaf

This context selector is designed for Mahjong and Context debloating technique introduced in ASE'21 paper.

leaf

This context selector is specially designed for BEAN.

leaf

This context selector is defined in terms of two other context selectors. See the formal definition in Section 4.4 of our ECOOP'22 paper.

hide
Heap Abstractor

A heap abstractor defines the heap abstraction for an object.

leaf

Equation (11) in our ECOOP'22 paper.

leaf

Equation (12) in our ECOOP'22 paper.

leaf

Equation (13) in our ECOOP'22 paper.

leaf

Records many statistics of the pointer analysis for a given benchmark.

hide

If you want to create your own pointer analysis, please put your code under this sub-project.

leaf

This subproject includes a set of utility classes.