soot.options
Class PaddleOptions
java.lang.Object
soot.options.PaddleOptions
public class PaddleOptions
- extends Object
Option parser for Paddle.
Method Summary |
int |
backend()
Backend --
Select BDD backend. |
int |
bdd_nodes()
BDD Nodes --
Number of BDD nodes to allocate (0=unlimited). |
boolean |
bdd()
Use BDDs --
Use BDD version of Paddle. |
int |
conf()
Configuration --
Select Paddle configuration. |
boolean |
context_counts()
Print Context Counts --
Print number of contexts for each method. |
boolean |
context_heap()
Context-sensitive Heap Locations --
Treat allocation sites context-sensitively. |
int |
context()
Context abstraction --
Select context-sensitivity level. |
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 |
dynamic_order()
Dynamic reordering --
. |
boolean |
enabled()
Enabled --
. |
boolean |
field_based()
Field Based --
Use a field-based rather than field-sensitive representation. |
boolean |
global_nodes_in_natives()
Global Nodes in Simulated Natives --
Use global node to model variables in simulations of native
methods. |
boolean |
ignore_types()
Ignore Types Entirely --
Make Paddle completely ignore declared types of variables. |
int |
k()
Context length (k) --
. |
boolean |
merge_stringbuffer()
Merge String Buffer --
Represent all StringBuffers as one object. |
boolean |
method_context_counts()
Method Context Counts (Totals only) --
Print number of contexts for each method. |
boolean |
number_nodes()
Number nodes --
Print node numbers in dumps. |
int |
order()
Variable ordering --
. |
boolean |
pre_jimplify()
Pre Jimplify --
Jimplify all methods before starting Paddle. |
boolean |
precise_newinstance()
Precise newInstance --
Make newInstance only allocate objects of dynamic classes. |
boolean |
profile()
Profile --
Profile BDDs using JeddProfiler. |
int |
propagator()
Propagator --
Select propagation algorithm. |
int |
q()
Worklist Implementation --
Select queue implementation. |
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 |
simulate_natives()
Simulate Natives --
Simulate effects of native methods in standard class library. |
boolean |
string_constants()
Propagate All String Constants --
Propagate all string constants, not just class names. |
boolean |
this_edges()
this Pointer Assignment Edge --
Use pointer assignment edges to model this parameters. |
boolean |
total_context_counts()
Print Context Counts (Totals only) --
Print total number of contexts. |
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 Paddle. |
boolean |
verbosegc()
Verbose GC --
Print memory usage at each BDD garbage collection.. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
conf_ofcg
public static final int conf_ofcg
- See Also:
- Constant Field Values
conf_cha
public static final int conf_cha
- See Also:
- Constant Field Values
conf_cha_aot
public static final int conf_cha_aot
- See Also:
- Constant Field Values
conf_ofcg_aot
public static final int conf_ofcg_aot
- See Also:
- Constant Field Values
conf_cha_context_aot
public static final int conf_cha_context_aot
- See Also:
- Constant Field Values
conf_ofcg_context_aot
public static final int conf_ofcg_context_aot
- See Also:
- Constant Field Values
conf_cha_context
public static final int conf_cha_context
- See Also:
- Constant Field Values
conf_ofcg_context
public static final int conf_ofcg_context
- See Also:
- Constant Field Values
q_auto
public static final int q_auto
- See Also:
- Constant Field Values
q_trad
public static final int q_trad
- See Also:
- Constant Field Values
q_bdd
public static final int q_bdd
- See Also:
- Constant Field Values
q_debug
public static final int q_debug
- See Also:
- Constant Field Values
q_trace
public static final int q_trace
- See Also:
- Constant Field Values
q_numtrace
public static final int q_numtrace
- See Also:
- Constant Field Values
backend_auto
public static final int backend_auto
- See Also:
- Constant Field Values
backend_buddy
public static final int backend_buddy
- See Also:
- Constant Field Values
backend_cudd
public static final int backend_cudd
- See Also:
- Constant Field Values
backend_sable
public static final int backend_sable
- See Also:
- Constant Field Values
backend_javabdd
public static final int backend_javabdd
- See Also:
- Constant Field Values
backend_none
public static final int backend_none
- See Also:
- Constant Field Values
context_insens
public static final int context_insens
- See Also:
- Constant Field Values
context_1cfa
public static final int context_1cfa
- See Also:
- Constant Field Values
context_kcfa
public static final int context_kcfa
- See Also:
- Constant Field Values
context_objsens
public static final int context_objsens
- See Also:
- Constant Field Values
context_kobjsens
public static final int context_kobjsens
- See Also:
- Constant Field Values
context_uniqkobjsens
public static final int context_uniqkobjsens
- See Also:
- Constant Field Values
context_threadkobjsens
public static final int context_threadkobjsens
- See Also:
- Constant Field Values
propagator_auto
public static final int propagator_auto
- See Also:
- Constant Field Values
propagator_iter
public static final int propagator_iter
- See Also:
- Constant Field Values
propagator_worklist
public static final int propagator_worklist
- See Also:
- Constant Field Values
propagator_alias
public static final int propagator_alias
- See Also:
- Constant Field Values
propagator_bdd
public static final int propagator_bdd
- See Also:
- Constant Field Values
propagator_incbdd
public static final int propagator_incbdd
- See Also:
- Constant Field Values
set_impl_hash
public static final int set_impl_hash
- See Also:
- Constant Field Values
set_impl_bit
public static final int set_impl_bit
- See Also:
- Constant Field Values
set_impl_hybrid
public static final int set_impl_hybrid
- See Also:
- Constant Field Values
set_impl_array
public static final int set_impl_array
- See Also:
- Constant Field Values
set_impl_heintze
public static final int set_impl_heintze
- See Also:
- Constant Field Values
set_impl_double
public static final int set_impl_double
- See Also:
- Constant Field Values
double_set_old_hash
public static final int double_set_old_hash
- See Also:
- Constant Field Values
double_set_old_bit
public static final int double_set_old_bit
- See Also:
- Constant Field Values
double_set_old_hybrid
public static final int double_set_old_hybrid
- See Also:
- Constant Field Values
double_set_old_array
public static final int double_set_old_array
- See Also:
- Constant Field Values
double_set_old_heintze
public static final int double_set_old_heintze
- See Also:
- Constant Field Values
double_set_new_hash
public static final int double_set_new_hash
- See Also:
- Constant Field Values
double_set_new_bit
public static final int double_set_new_bit
- See Also:
- Constant Field Values
double_set_new_hybrid
public static final int double_set_new_hybrid
- See Also:
- Constant Field Values
double_set_new_array
public static final int double_set_new_array
- See Also:
- Constant Field Values
double_set_new_heintze
public static final int double_set_new_heintze
- See Also:
- Constant Field Values
PaddleOptions
public PaddleOptions(Map options)
enabled
public boolean enabled()
- Enabled --
.
verbose
public boolean verbose()
- Verbose --
Print detailed information about the execution of Paddle.
When this option is set to true, Paddle prints detailed
information about its execution.
bdd
public boolean bdd()
- Use BDDs --
Use BDD version of Paddle.
Causes
Paddle to use BDD versions of its components
dynamic_order
public boolean dynamic_order()
- Dynamic reordering --
.
Allows the BDD package
to perform dynamic variable ordering.
profile
public boolean profile()
- Profile --
Profile BDDs using JeddProfiler.
Turns on JeddProfiler for profiling BDD operations.
verbosegc
public boolean verbosegc()
- Verbose GC --
Print memory usage at each BDD garbage collection..
Print memory usage at each BDD garbage collection.
ignore_types
public boolean ignore_types()
- Ignore Types Entirely --
Make Paddle completely ignore declared types of variables.
When this option is set to true, all parts of Paddle completely
ignore declared types of variables and casts.
pre_jimplify
public boolean pre_jimplify()
- Pre Jimplify --
Jimplify all methods before starting Paddle.
When this option is set to true, Paddle 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.
context_heap
public boolean context_heap()
- Context-sensitive Heap Locations --
Treat allocation sites context-sensitively.
When this option is set to true, the context-sensitivity level
that is set for the context-sensitive call graph and for pointer
variables is also used to model heap locations
context-sensitively. When this option is false, heap locations
are modelled context-insensitively regardless of the
context-sensitivity level.
rta
public boolean rta()
- RTA --
Emulate Rapid Type Analysis.
Setting RTA to true sets types-for-sites to true, and causes
Paddle 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. Allocation sites creating a
java.lang.StringBuilder object are also grouped together as a
single allocation site.
string_constants
public boolean string_constants()
- Propagate All String Constants --
Propagate all string constants, not just class names.
When this option is set to false, Paddle only distinguishes
string constants that may be the name of a class loaded
dynamically using reflection, and all other string constants are
lumped together into a single string constant node. Setting this
option to true causes all string constants to be propagated
individually.
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.
global_nodes_in_natives
public boolean global_nodes_in_natives()
- Global Nodes in Simulated Natives --
Use global node to model variables in simulations of native
methods.
The simulations of native methods such as System.arraycopy()
use temporary local variable nodes. Setting this switch to true
causes them to use global variable nodes instead, reducing
precision. The switch exists only to make it possible to measure
this effect on precision; there is no other practical reason to
set it to true.
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.
this_edges
public boolean this_edges()
- this Pointer Assignment Edge --
Use pointer assignment edges to model this parameters.
When constructing a call graph on-the-fly during points-to
analysis, Paddle normally propagates only those receivers that
cause a method to be invoked to the this pointer of the method.
When this option is set to true, however, Paddle instead models
flow of receivers as an assignnment edge from the receiver at
the call site to the this pointer of the method, reducing
precision.
precise_newinstance
public boolean precise_newinstance()
- Precise newInstance --
Make newInstance only allocate objects of dynamic classes.
Normally, newInstance() calls are treated as if they may
return an object of any type. Setting this option to true
causes them to be treated as if they return only objects of
the type of some dynamic class.
context_counts
public boolean context_counts()
- Print Context Counts --
Print number of contexts for each method.
Causes Paddle to print the number of contexts for each method
and call edge, and the number of equivalence classes of contexts
for each variable node.
total_context_counts
public boolean total_context_counts()
- Print Context Counts (Totals only) --
Print total number of contexts.
Causes Paddle to print the number of contexts and number of
context equivalence classes.
method_context_counts
public boolean method_context_counts()
- Method Context Counts (Totals only) --
Print number of contexts for each method.
Causes Paddle to print the number of contexts and number of
context equivalence classes split out by method. Requires
total-context-counts to also be turned on.
set_mass
public boolean set_mass()
- Calculate Set Mass --
Calculate statistics about points-to set sizes.
When this option is set to true, Paddle computes and prints
various cryptic statistics about the size of the points-to sets
computed.
number_nodes
public boolean number_nodes()
- Number nodes --
Print node numbers in dumps.
When printing debug information about nodes, this option causes
the node number of each node to be printed.
order
public int order()
- Variable ordering --
.
Selects one of the BDD
variable orderings hard-coded in Paddle.
bdd_nodes
public int bdd_nodes()
- BDD Nodes --
Number of BDD nodes to allocate (0=unlimited).
This option specifies the number of BDD nodes to be used by the
BDD backend. A value of 0 causes the backend to start with one
million nodes, and allocate more as required. A value other than
zero causes the backend to start with the specified size, and
prevents it from ever allocating any more nodes.
k
public int k()
- Context length (k) --
.
The maximum length of
call string or receiver object string used as context.
conf
public int conf()
- Configuration --
Select Paddle configuration.
Selects the configuration of points-to analysis and call graph
construction to be used in Paddle.
q
public int q()
- Worklist Implementation --
Select queue implementation.
Select the implementation of worklists to be used in Paddle.
backend
public int backend()
- Backend --
Select BDD backend.
This option tells Paddle which implementation of BDDs to use.
context
public int context()
- Context abstraction --
Select context-sensitivity level.
This option tells Paddle which level of context-sensitivity to
use in constructing the call graph.
propagator
public int propagator()
- Propagator --
Select propagation algorithm.
This option tells Paddle 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 Paddle 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.