harpoon.Analysis.PointerAnalysis
Class MAInfo.MAInfoOptions

java.lang.Object
  |
  +--harpoon.Analysis.PointerAnalysis.MAInfo.MAInfoOptions
All Implemented Interfaces:
Cloneable, Serializable
Enclosing class:
MAInfo

public static class MAInfo.MAInfoOptions
extends Object
implements Cloneable, Serializable

Options for the MAInfo processing.

See Also:
Serialized Form

Field Summary
 boolean DO_INLINING_FOR_SA
          Enables the application of some method inlining to increase the effectiveness of the stack allocation.
 boolean DO_INLINING_FOR_TA
          Enables the application of some method inlining to increase the effectiveness of the thread local heap allocation.
 boolean DO_PREALLOCATION
          Enables the use of preallocation: if an object will be accessed only by a thread (ie it is created just to pass some parameters to a thread), it can be preallocated into the heap of that thread.
 boolean DO_STACK_ALLOCATION
          Controls the generation of stack allocation hints.
 boolean DO_THREAD_ALLOCATION
          Controls the generation of thread local heap allocation hints.
 boolean GEN_SYNC_FLAG
          Controls the detection of the objects for whom there are no concurrent synchronizations.
 int MAX_INLINABLE_METHOD_SIZE
          The maximal size of a method that can be inlined.
 int MAX_INLINING_LEVEL
          The current implementation is able to inline call strings of length bigger than one.
 int MAX_METHOD_SIZE
          The maximal size to which we can inflate the size of a method through inlining.
static int STACK_ALLOCATE_ALWAYS
          Stack allocate everything that's captured.
static int STACK_ALLOCATE_NOT_IN_LOOPS
          Don't stack allocate in loops.
 int STACK_ALLOCATION_POLICY
          Forbids stack allocation in a loop.
 boolean USE_INTER_THREAD
          Use the interthread analysis inside MAInfo.
 boolean USE_OLD_INLINING
          Use the old, 1-level inlining.
 
Constructor Summary
MAInfo.MAInfoOptions()
           
 
Method Summary
 Object clone()
           
 boolean do_inlining()
          Checks whether any inlining is requested.
 void print(String prefix)
          Pretty printer.
 boolean stack_allocate_always()
          Returns true if the stack allocation policy is STACK_ALLOCATE_ALWAYS.
 boolean stack_allocate_not_in_loops()
          Returns true if the stack allocation policy is STACK_ALLOCATE_NOT_IN_LOOPS.
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DO_STACK_ALLOCATION

public boolean DO_STACK_ALLOCATION
Controls the generation of stack allocation hints. Default false.


STACK_ALLOCATION_POLICY

public int STACK_ALLOCATION_POLICY
Forbids stack allocation in a loop. Should be one of the STACK_ALLOCATE_* constants. Default is STACK_ALLOCATE_NOT_IN_LOOPS.


STACK_ALLOCATE_ALWAYS

public static int STACK_ALLOCATE_ALWAYS
Stack allocate everything that's captured.


STACK_ALLOCATE_NOT_IN_LOOPS

public static int STACK_ALLOCATE_NOT_IN_LOOPS
Don't stack allocate in loops.


DO_THREAD_ALLOCATION

public boolean DO_THREAD_ALLOCATION
Controls the generation of thread local heap allocation hints. Default false.


DO_INLINING_FOR_SA

public boolean DO_INLINING_FOR_SA
Enables the application of some method inlining to increase the effectiveness of the stack allocation. Only inlinings that increase the effectiveness of the stack allocation are done. Default false.


DO_INLINING_FOR_TA

public boolean DO_INLINING_FOR_TA
Enables the application of some method inlining to increase the effectiveness of the thread local heap allocation. Default false.


DO_PREALLOCATION

public boolean DO_PREALLOCATION
Enables the use of preallocation: if an object will be accessed only by a thread (ie it is created just to pass some parameters to a thread), it can be preallocated into the heap of that thread. For the moment, it is potentially dangerous so it is deactivated by default. Default false.


GEN_SYNC_FLAG

public boolean GEN_SYNC_FLAG
Controls the detection of the objects for whom there are no concurrent synchronizations. This objects are marked with a special flag to reduce the cost of synchronization operations. Default false.


USE_INTER_THREAD

public boolean USE_INTER_THREAD
Use the interthread analysis inside MAInfo. If this analysis is too buggy or time/memory expensive, you can disable it through this flag. NOTE: this will also disable some of the optimizations (eg the preallocation). Default false.


USE_OLD_INLINING

public boolean USE_OLD_INLINING
Use the old, 1-level inlining. Default is false (ie the new, multilevel strategy is used). Might be useful for people not willing to go into the bugs of the new strategy.


MAX_INLINING_LEVEL

public int MAX_INLINING_LEVEL
The current implementation is able to inline call strings of length bigger than one. Default value is 2.


MAX_METHOD_SIZE

public int MAX_METHOD_SIZE
The maximal size to which we can inflate the size of a method through inlining. Default is 1000 quads.


MAX_INLINABLE_METHOD_SIZE

public int MAX_INLINABLE_METHOD_SIZE
The maximal size of a method that can be inlined. Default is 100 quads.

Constructor Detail

MAInfo.MAInfoOptions

public MAInfo.MAInfoOptions()
Method Detail

stack_allocate_always

public final boolean stack_allocate_always()
Returns true if the stack allocation policy is STACK_ALLOCATE_ALWAYS.


stack_allocate_not_in_loops

public final boolean stack_allocate_not_in_loops()
Returns true if the stack allocation policy is STACK_ALLOCATE_NOT_IN_LOOPS.


do_inlining

public boolean do_inlining()
Checks whether any inlining is requested.


print

public void print(String prefix)
Pretty printer.


clone

public Object clone()
Overrides:
clone in class Object