Package soot.options

Class PaddleOptions


  • @Generated(value="Saxonica v3.0",
               comments="from soot_options.xml")
    public class PaddleOptions
    extends Object
    Option parser for Paddle.
    • Constructor Detail

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