soot.options
Class SparkOptions

java.lang.Object
  |
  +--soot.options.SparkOptions

public class SparkOptions
extends java.lang.Object

Option parser for Spark.


Field Summary
static int double_set_new_array
           
static int double_set_new_bit
           
static int double_set_new_hash
           
static int double_set_new_hybrid
           
static int double_set_new_shared
           
static int double_set_old_array
           
static int double_set_old_bit
           
static int double_set_old_hash
           
static int double_set_old_hybrid
           
static int double_set_old_shared
           
static int propagator_alias
           
static int propagator_cycle
           
static int propagator_iter
           
static int propagator_merge
           
static int propagator_none
           
static int propagator_worklist
           
static int set_impl_array
           
static int set_impl_bit
           
static int set_impl_double
           
static int set_impl_hash
           
static int set_impl_hybrid
           
static int set_impl_shared
           
 
Constructor Summary
SparkOptions(java.util.Map options)
           
 
Method Summary
 boolean add_tags()
          Add Tags -- Output points-to results in tags for viewing with the Jimple.
 boolean class_method_var()
          Class Method Var -- In dump, label variables by class and method.
 int double_set_new()
          Double Set New -- Select implementation of points-to set for new part of double set.
 int double_set_old()
          Double Set Old -- Select implementation of points-to set for old part of double set.
 boolean dump_answer()
          Dump Answer -- Dump computed reaching types for comparison with other solvers.
 boolean dump_html()
          Dump HTML -- Dump pointer assignment graph to HTML for debugging.
 boolean dump_pag()
          Dump PAG -- Dump pointer assignment graph for other solvers.
 boolean dump_solution()
          Dump Solution -- Dump final solution for comparison with other solvers.
 boolean dump_types()
          Dump Types -- Include declared types in dump.
 boolean enabled()
          Enabled -- .
 boolean field_based()
          Field Based -- Use a field-based rather than field-sensitive representation.
 boolean force_gc()
          Force Garbage Collections -- Force garbage collection for measuring memory usage.
 boolean ignore_types_for_sccs()
          Ignore Types For SCCs -- Ignore declared types when determining node equivalence for SCCs.
 boolean ignore_types()
          Ignore Types Entirely -- Make Spark completely ignore declared types of variables.
 boolean merge_stringbuffer()
          Merge String Buffer -- Represent all StringBuffers as one object.
 boolean on_fly_cg()
          On Fly Call Graph -- Build call graph as receiver types become known.
 boolean parms_as_fields()
          Parms As Fields -- Represent method parameters as fields of this.
 boolean pre_jimplify()
          Pre Jimplify -- Jimplify all methods before starting Spark.
 int propagator()
          Propagator -- Select propagation algorithm.
 boolean returns_as_fields()
          Returns As Fields -- Represent method return values as fields of this.
 boolean rta()
          RTA -- Emulate Rapid Type Analysis.
 int set_impl()
          Set Implementation -- Select points-to set implementation.
 boolean set_mass()
          Calculate Set Mass -- Calculate statistics about points-to set sizes.
 boolean simple_edges_bidirectional()
          Simple Edges Bidirectional -- Equality-based analysis between variable nodes.
 boolean simplify_offline()
          Simplify Offline -- Collapse single-entry subgraphs of the PAG.
 boolean simplify_sccs()
          Simplify SCCs -- Collapse strongly-connected components of the PAG.
 boolean simulate_natives()
          Simulate Natives -- Simulate effects of native methods in standard class library.
 boolean topo_sort()
          Topological Sort -- Sort variable nodes in dump.
 boolean types_for_sites()
          Types For Sites -- Represent objects by their actual type rather than allocation site.
 boolean verbose()
          Verbose -- Print detailed information about the execution of Spark.
 boolean vta()
          VTA -- Emulate Variable Type Analysis.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

propagator_iter

public static final int propagator_iter

propagator_worklist

public static final int propagator_worklist

propagator_cycle

public static final int propagator_cycle

propagator_merge

public static final int propagator_merge

propagator_alias

public static final int propagator_alias

propagator_none

public static final int propagator_none

set_impl_hash

public static final int set_impl_hash

set_impl_bit

public static final int set_impl_bit

set_impl_hybrid

public static final int set_impl_hybrid

set_impl_array

public static final int set_impl_array

set_impl_double

public static final int set_impl_double

set_impl_shared

public static final int set_impl_shared

double_set_old_hash

public static final int double_set_old_hash

double_set_old_bit

public static final int double_set_old_bit

double_set_old_hybrid

public static final int double_set_old_hybrid

double_set_old_array

public static final int double_set_old_array

double_set_old_shared

public static final int double_set_old_shared

double_set_new_hash

public static final int double_set_new_hash

double_set_new_bit

public static final int double_set_new_bit

double_set_new_hybrid

public static final int double_set_new_hybrid

double_set_new_array

public static final int double_set_new_array

double_set_new_shared

public static final int double_set_new_shared
Constructor Detail

SparkOptions

public SparkOptions(java.util.Map options)
Method Detail

enabled

public boolean enabled()
Enabled -- .

verbose

public boolean verbose()
Verbose -- Print detailed information about the execution of Spark. When this option is set to true, Spark prints detailed information about its execution.

ignore_types

public boolean ignore_types()
Ignore Types Entirely -- Make Spark completely ignore declared types of variables. When this option is set to true, all parts of Spark completely ignore declared types of variables and casts.

force_gc

public boolean force_gc()
Force Garbage Collections -- Force garbage collection for measuring memory usage. When this option is set to true, calls to System.gc() will be made at various points to allow memory usage to be measured.

pre_jimplify

public boolean pre_jimplify()
Pre Jimplify -- Jimplify all methods before starting Spark. When this option is set to true, Spark converts all available methods to Jimple before starting the points-to analysis. This allows the Jimplification time to be separated from the points-to time. However, it increases the total time and memory requirement, because all methods are Jimplified, rather than only those deemed reachable by the points-to analysis.

vta

public boolean vta()
VTA -- Emulate Variable Type Analysis. Setting VTA to true has the effect of setting field-based, types-for-sites, and simplify-sccs to true, and on-fly-cg to false, to simulate Variable Type Analysis, described in our OOPSLA 2000 paper. Note that the algorithm differs from the original VTA in that it handles array elements more precisely.

rta

public boolean rta()
RTA -- Emulate Rapid Type Analysis. Setting RTA to true sets types-for-sites to true, and causes Spark to use a single points-to set for all variables, giving Rapid Type Analysis.

field_based

public boolean field_based()
Field Based -- Use a field-based rather than field-sensitive representation. When this option is set to true, fields are represented by variable (Green) nodes, and the object that the field belongs to is ignored (all objects are lumped together), giving a field-based analysis. Otherwise, fields are represented by field reference (Red) nodes, and the objects that they belong to are distinguished, giving a field-sensitive analysis.

types_for_sites

public boolean types_for_sites()
Types For Sites -- Represent objects by their actual type rather than allocation site. When this option is set to true, types rather than allocation sites are used as the elements of the points-to sets.

merge_stringbuffer

public boolean merge_stringbuffer()
Merge String Buffer -- Represent all StringBuffers as one object. When this option is set to true, all allocation sites creating java.lang.StringBuffer objects are grouped together as a single allocation site.

simulate_natives

public boolean simulate_natives()
Simulate Natives -- Simulate effects of native methods in standard class library. When this option is set to true, the effects of native methods in the standard Java class library are simulated.

simple_edges_bidirectional

public boolean simple_edges_bidirectional()
Simple Edges Bidirectional -- Equality-based analysis between variable nodes. When this option is set to true, all edges connecting variable (Green) nodes are made bidirectional, as in Steensgaard's analysis.

on_fly_cg

public boolean on_fly_cg()
On Fly Call Graph -- Build call graph as receiver types become known. When this option is set to true, the call graph is computed on-the-fly as points-to information is computed. Otherwise, an initial CHA approximation to the call graph is used.

parms_as_fields

public boolean parms_as_fields()
Parms As Fields -- Represent method parameters as fields of this. When this option is set to true, parameters to methods are represented as fields (Red nodes) of the this object; otherwise, parameters are represented as variable (Green) nodes.

returns_as_fields

public boolean returns_as_fields()
Returns As Fields -- Represent method return values as fields of this. When this option is set to true, return values from methods are represented as fields (Red nodes) of the this object; otherwise, return values are represented as variable (Green) nodes.

simplify_offline

public boolean simplify_offline()
Simplify Offline -- Collapse single-entry subgraphs of the PAG. When this option is set to true, variable (Green) nodes which form single-entry subgraphs (so they must have the same points-to set) are merged before propagation begins.

simplify_sccs

public boolean simplify_sccs()
Simplify SCCs -- Collapse strongly-connected components of the PAG. When this option is set to true, variable (Green) nodes which form strongly-connected components (so they must have the same points-to set) are merged before propagation begins.

ignore_types_for_sccs

public boolean ignore_types_for_sccs()
Ignore Types For SCCs -- Ignore declared types when determining node equivalence for SCCs. When this option is set to true, when collapsing strongly-connected components, nodes forming SCCs are collapsed regardless of their declared type. The collapsed SCC is given the most general type of all the nodes in the component. When this option is set to false, only edges connecting nodes of the same type are considered when detecting SCCs. This option has no effect unless simplify-sccs is true.

dump_html

public boolean dump_html()
Dump HTML -- Dump pointer assignment graph to HTML for debugging. When this option is set to true, a browseable HTML representation of the pointer assignment graph is output to a file called pag.jar after the analysis completes. Note that this representation is typically very large.

dump_pag

public boolean dump_pag()
Dump PAG -- Dump pointer assignment graph for other solvers. When this option is set to true, a representation of the pointer assignment graph suitable for processing with other solvers (such as the BDD-based solver) is output before the analysis begins.

dump_solution

public boolean dump_solution()
Dump Solution -- Dump final solution for comparison with other solvers. When this option is set to true, a representation of the resulting points-to sets is dumped. The format is similar to that of the Dump PAG option, and is therefore suitable for comparison with the results of other solvers.

topo_sort

public boolean topo_sort()
Topological Sort -- Sort variable nodes in dump. When this option is set to true, the representation dumped by the Dump PAG option is dumped with the variable (green) nodes in (pseudo-)topological order. This option has no effect unless Dump PAG is true.

dump_types

public boolean dump_types()
Dump Types -- Include declared types in dump. When this option is set to true, the representation dumped by the Dump PAG option includes type information for all nodes. This option has no effect unless Dump PAG is true.

class_method_var

public boolean class_method_var()
Class Method Var -- In dump, label variables by class and method. When this option is set to true, the representation dumped by the Dump PAG option represents nodes by numbering each class, method, and variable within the method separately, rather than assigning a single integer to each node. This option has no effect unless Dump PAG is true. Setting Class Method Var to true has the effect of setting Topological Sort to false.

dump_answer

public boolean dump_answer()
Dump Answer -- Dump computed reaching types for comparison with other solvers. When this option is set to true, the computed reaching types for each variable are dumped to a file, so that they can be compared with the results of other analyses (such as the old VTA).

add_tags

public boolean add_tags()
Add Tags -- Output points-to results in tags for viewing with the Jimple. When this option is set to true, the results of the analysis are encoded within tags and printed with the resulting Jimple code.

set_mass

public boolean set_mass()
Calculate Set Mass -- Calculate statistics about points-to set sizes. When this option is set to true, Spark computes and prints various cryptic statistics about the size of the points-to sets computed.

propagator

public int propagator()
Propagator -- Select propagation algorithm. This option tells Spark which propagation algorithm to use.

set_impl

public int set_impl()
Set Implementation -- Select points-to set implementation. Select an implementation of points-to sets for Spark to use.

double_set_old

public int double_set_old()
Double Set Old -- Select implementation of points-to set for old part of double set. Select an implementation for sets of old objects in the double points-to set implementation. This option has no effect unless Set Implementation is set to double.

double_set_new

public int double_set_new()
Double Set New -- Select implementation of points-to set for new part of double set. Select an implementation for sets of new objects in the double points-to set implementation. This option has no effect unless Set Implementation is set to double.