Spark Options
Ondrej Lhoták
This documents describes the command-line options to Spark.
Values for options are specified on the Soot command-line, following
the switch -p wjtp.Spark. For example:
java soot.Main -a -app -p wjtp.Spark disabled:false,verbose:true hello
Spark is still under active development, so these options are subject
to change. For the most current, automatically generated version of
this document, please see the file
src/soot/jimple/spark/opts.ps
in your Soot directory.
- Allowed values: true false
- Default value: false
If set to true, Spark prints detailed information.
- Allowed values: true false
- Default value: false
If set to true, all parts of Spark completely ignore declared types of
variables and casts.
- Allowed values: true false
- Default value: false
If set to true, calls to System.gc() will be done at various points to
allow memory usage to be measured.
- Allowed values: true false
- Default value: false
Setting VTA to true has the effect of setting ignoreBaseObjects,
typesForSites, and collapseSCCs to true to simulate Variable
Type Analysis, described in Sundaresan et al., OOPSLA 2000.
Note that the algorithm differs from the original VTA in that it
handles array elements more precisely. To use the results of
the analysis to trim the invoke graph, set
the trimInvokeGraph option to true as well.
- Allowed values: true false
- Default value: false
Setting RTA to true sets typesForSites, and causes Spark to use a single
points-to set for all variables, giving Rapid Type Analysis.
To use the results of
the analysis to trim the invoke graph, set
the trimInvokeGraph option to true as well.
- Allowed values: true false
- Default value: false
If set to true, fields are represented by variable (Green) nodes, and
the object that the field belongs to is ignored (all fields are lumped
together). Otherwise, fields are represented by field reference (Red)
nodes, and the objects that they belong to are distinguished.
- Allowed values: true false
- Default value: false
If set to true, types rather than allocation sites are used as the
elements of the points-to sets.
- Allowed values: true false
- Default value: true
If set to true, all allocation sites creating java.lang.StringBuffer
objects are grouped together as a single allocation site.
- Allowed values: true false
- Default value: false
If set to true, effects of native methods are simulated.
- Allowed values: true false
- Default value: false
If set to true, all edges connecting variable (Green) nodes are made
bidirectional, as in Steensgaard's analysis.
- Allowed values: true false
- Default value: false
If set to true, the call graph is computed on-the-fly as points-to
information is computed. Otherwise, an initial approximation
to the call graph is used.
- Allowed values: true false
- Default value: false
If set to true, parameters to methods are represented as fields (Red
nodes) of the 'this' object; otherwise, parameters are represented as
variable (Green) nodes.
- Allowed values: true false
- Default value: false
If 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.
- Allowed values: true false
- Default value: false
If set to true, variable (Green) nodes which are connected by simple paths
(so they must have the same points-to set) are merged together.
- Allowed values: true false
- Default value: false
If set to true, variable (Green) nodes which form strongly-connected
components (so they must have the same points-to set) are merged
together.
- Allowed values: true false
- Default value: false
If set to true, when collapsing strongly-connected components, nodes
forming SCCs are collapsed regardless of their type. The collapsed SCC
is given the most general type of all the nodes in the component. If no
node has the most general type, then the SCC is given no type, and may
point to objects of any type.
If set to false, only edges connecting nodes of the same type are
considered when detecting SCCs.
This option has no effect unless collapseSCCs is true.
- Allowed values: iter worklist merge alias none
- Default value: worklist
Tells Spark which propagation algorithm to use.
Iter is a dumb, iterative algorithm, that propagates everything until the
graph does not change.
Worklist is a worklist-based algorithm that tries
to do as little work as possible. This is currently the fastest algorithm.
Alias is an alias-edge based algorithm. This algorithm tends to take
the least memory for very large problems, because it does not represent
explicitly points-to sets of fields of heap objects.
Merge is an algorithm that merges all yellow nodes with their corresponding
red nodes. This algorithm is not yet finished.
None means that propagation is not done; the graph is only built and
simplified.
- Allowed values: hash bit hybrid array double
- Default value: double
Selects an implementation of a points-to set that Spark should use.
Hash is an implementation based on Java's built-in hash-set.
Bit is an implementation using a bit vector.
Hybrid is an implementation that keeps an explicit list of up to
16 elements, and switches to using a bit-vector when the set gets
larger than this.
Array is an implementation that keeps the elements of the points-to set
in an array that is always maintained in sorted order. Set membership is
tested using binary search, and set union and intersection are computed
using an algorithm based on the merge step from merge sort.
Double is an implementation that itself uses a pair of sets for
each points-to set. The first set in the pair stores new pointed-to
objects that have not yet been propagated, while the second set stores
old pointed-to objects that have been propagated and need not be
reconsidered. This allows the propagation algorithms to be incremental,
often speeding them up significantly.
- Allowed values: hash bit hybrid array
- Default value: hybrid
Selects an implementation for the sets of old objects in the double
points-to set implementation.
This option has no effect unless setImpl is set to double.
- Allowed values: hash bit hybrid array
- Default value: hybrid
Selects an implementation for the sets of new objects in the double
points-to set implementation.
This option has no effect unless setImpl is set to double.
- Allowed values: true false
- Default value: false
If set to true, a browseable HTML representation of the pointer assignment
graph is output after the analysis completes. Note that this representation
is typically very large.
- Allowed values: true false
- Default value: false
If 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.
- Allowed values: true false
- Default value: false
If set to true, a representation of the resulting points-to
sets is dumped. The format is similar to that of the dumpPAG
option, and is therefore suitable for comparison with the results of other
solvers.
- Allowed values: true false
- Default value: false
If set to true, the representation dumped by the dumpPAG option
is dumped with the green nodes in (pseudo-)topological order.
This option has no effect unless dumpPAG is true.
- Allowed values: true false
- Default value: true
If set to true, the representation dumped by the dumpPAG option
includes type information for all nodes.
This option has no effect unless dumpPAG is true.
- Allowed values: true false
- Default value: true
If set to true, the representation dumped by the dumpPAG 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 dumpPAG is true.
Setting classMethodVar to true has the effect of setting topoSort to false.
- Allowed values: true false
- Default value: false
If 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).
- Allowed values: true false
- Default value: false
If set to true, the results of the analysis are used to make the invoke graph
more precise after the analysis completes.
Spark Options
This document was generated using the
LaTeX2HTML translator Version 2K.1beta (1.48)
Copyright © 1993, 1994, 1995, 1996,
Nikos Drakos,
Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999,
Ross Moore,
Mathematics Department, Macquarie University, Sydney.
The command line arguments were:
latex2html -split 0 opts.tex
The translation was initiated by Ondrej Lhotak on 2002-11-19
Ondrej Lhotak
2002-11-19