next_inactive up previous


Spark Options

Ondrej Lhoták

This document 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.

Contents

General Options

Option verbose

When this option is set to true, Spark prints detailed information.

Option ignoreTypesEntirely

When this option is set to true, all parts of Spark completely ignore declared types of variables and casts.

Option forceGCs

When this option is set to true, calls to System.gc() will be made at various points to allow memory usage to be measured.

Option preJimplify

When this option is set to true, convert 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.

Pointer Assignment Graph Building Options

Option VTA

Setting VTA to true has the effect of setting ignoreBaseObjects, typesForSites, and simplifySCCs to true to simulate Variable Type Analysis, described in [#!sund.hend.ea00!#]. 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.

Option RTA

Setting RTA to true sets typesForSites to true, and causes Spark to use a single points-to set for all variables, giving Rapid Type Analysis [#!baco.swee96!#]. To use the results of the analysis to trim the invoke graph, set the trimInvokeGraph option to true as well.

Option ignoreBaseObjects

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). Otherwise, fields are represented by field reference (Red) nodes, and the objects that they belong to are distinguished.

Option typesForSites

When this option is set to true, types rather than allocation sites are used as the elements of the points-to sets.

Option mergeStringBuffer

When this option is set to true, all allocation sites creating java.lang.StringBuffer objects are grouped together as a single allocation site.

Option simulateNatives

When this option is set to true, effects of native methods are simulated.

Option simpleEdgesBidirectional

When this option is set to true, all edges connecting variable (Green) nodes are made bidirectional, as in Steensgaard's analysis [#!stee96_1!#].

Option onFlyCallGraph

When this option is 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.

Option parmsAsFields

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.

Option returnsAsFields

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.

Pointer Assignment Graph Simplification Options

Option simplifyOffline

When this option is set to true, variable (Green) nodes which are connected by simple paths (so they must have the same points-to set) are merged together.

Option simplifySCCs

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 together.

Option ignoreTypesForSCCs

When this option is 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.

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 simplifySCCs is true.

Points-To Set Flowing Options

Option propagator

This option tells Spark which propagation algorithm to use.

Iter is a simple, iterative algorithm, which 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.

Option setImpl

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.

Option doubleSetOld

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.

Option doubleSetNew

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.

Output Options

Option dumpHTML

When this option is 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.

Option dumpPAG

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.

Option dumpSolution

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 dumpPAG option, and is therefore suitable for comparison with the results of other solvers.

Option topoSort

When this option is 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.

Option dumpTypes

When this option is 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.

Option classMethodVar

When this option is 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.

Option dumpAnswer

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).

Option trimInvokeGraph

When this option is set to true, the results of the analysis are used to make the invoke graph more precise after the analysis completes.

Option addTags

When this option is set to true, the results of the analysis are encoded inside tags, and printed with the resulting Jimple code.

About this document ...

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 2003-02-06


next_inactive up previous
Ondrej LHOTAK 2003-02-06