Package soot.options
Class PaddleOptions
- java.lang.Object
-
- soot.options.PaddleOptions
-
@Generated(value="Saxonica v3.0", comments="from soot_options.xml") public class PaddleOptions extends ObjectOption parser for Paddle.
-
-
Field Summary
-
Constructor Summary
Constructors Constructor Description PaddleOptions(Map<String,String> options)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description intbackend()Backend -- Select BDD backend.booleanbdd()Use BDDs -- Use BDD version of Paddle.intbdd_nodes()BDD Nodes -- Number of BDD nodes to allocate (0=unlimited).intconf()Configuration -- Select Paddle configuration.intcontext()Context abstraction -- Select context-sensitivity level.booleancontext_counts()Print Context Counts -- Print number of contexts for each method.booleancontext_heap()Context-sensitive Heap Locations -- Treat allocation sites context-sensitively.intdouble_set_new()Double Set New -- Select implementation of points-to set for new part of double set.intdouble_set_old()Double Set Old -- Select implementation of points-to set for old part of double set.booleandynamic_order()Dynamic reordering Allows the BDD package to perform dynamic variable ordering.booleanenabled()Enabledbooleanfield_based()Field Based -- Use a field-based rather than field-sensitive representation.booleanglobal_nodes_in_natives()Global Nodes in Simulated Natives -- Use global node to model variables in simulations of native methods.booleanignore_types()Ignore Types Entirely -- Make Paddle completely ignore declared types of variables.intk()Context length (k) The maximum length of call string or receiver object string used as context.booleanmerge_stringbuffer()Merge String Buffer -- Represent all StringBuffers as one object.booleanmethod_context_counts()Method Context Counts (Totals only) -- Print number of contexts for each method.booleannumber_nodes()Number nodes -- Print node numbers in dumps.intorder()Variable ordering Selects one of the BDD variable orderings hard-coded in Paddle.booleanpre_jimplify()Pre Jimplify -- Jimplify all methods before starting Paddle.booleanprecise_newinstance()Precise newInstance -- Make newInstance only allocate objects of dynamic classes.booleanprofile()Profile -- Profile BDDs using JeddProfiler.intpropagator()Propagator -- Select propagation algorithm.intq()Worklist Implementation -- Select queue implementation.booleanrta()RTA -- Emulate Rapid Type Analysis.intset_impl()Set Implementation -- Select points-to set implementation.booleanset_mass()Calculate Set Mass -- Calculate statistics about points-to set sizes.booleansimple_edges_bidirectional()Simple Edges Bidirectional -- Equality-based analysis between variable nodes.booleansimulate_natives()Simulate Natives -- Simulate effects of native methods in standard class library.booleanstring_constants()Propagate All String Constants -- Propagate all string constants, not just class names.booleanthis_edges()this Pointer Assignment Edge -- Use pointer assignment edges to model this parameters.booleantotal_context_counts()Print Context Counts (Totals only) -- Print total number of contexts.booleantypes_for_sites()Types For Sites -- Represent objects by their actual type rather than allocation site.booleanverbose()Verbose -- Print detailed information about the execution of Paddle.booleanverbosegc()Verbose GC -- Print memory usage at each BDD garbage collection.
-
-
-
Field Detail
-
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
-
-
Method Detail
-
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.
-
-