soot.options
Class PaddleOptions

java.lang.Object
  extended by soot.options.PaddleOptions

public class PaddleOptions
extends Object

Option parser for Paddle.


Field Summary
static int backend_auto
           
static int backend_buddy
           
static int backend_cudd
           
static int backend_javabdd
           
static int backend_none
           
static int backend_sable
           
static int conf_cha
           
static int conf_cha_aot
           
static int conf_cha_context
           
static int conf_cha_context_aot
           
static int conf_ofcg
           
static int conf_ofcg_aot
           
static int conf_ofcg_context
           
static int conf_ofcg_context_aot
           
static int context_1cfa
           
static int context_insens
           
static int context_kcfa
           
static int context_kobjsens
           
static int context_objsens
           
static int context_threadkobjsens
           
static int context_uniqkobjsens
           
static int double_set_new_array
           
static int double_set_new_bit
           
static int double_set_new_hash
           
static int double_set_new_heintze
           
static int double_set_new_hybrid
           
static int double_set_old_array
           
static int double_set_old_bit
           
static int double_set_old_hash
           
static int double_set_old_heintze
           
static int double_set_old_hybrid
           
static int propagator_alias
           
static int propagator_auto
           
static int propagator_bdd
           
static int propagator_incbdd
           
static int propagator_iter
           
static int propagator_worklist
           
static int q_auto
           
static int q_bdd
           
static int q_debug
           
static int q_numtrace
           
static int q_trace
           
static int q_trad
           
static int set_impl_array
           
static int set_impl_bit
           
static int set_impl_double
           
static int set_impl_hash
           
static int set_impl_heintze
           
static int set_impl_hybrid
           
 
Constructor Summary
PaddleOptions(Map options)
           
 
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
 

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
Constructor Detail

PaddleOptions

public PaddleOptions(Map options)
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.