soot.jimple.toolkits.scalar
Class CommonSubexpressionEliminator

java.lang.Object
  extended by soot.Transformer
      extended by soot.BodyTransformer
          extended by soot.jimple.toolkits.scalar.CommonSubexpressionEliminator

public class CommonSubexpressionEliminator
extends BodyTransformer

Runs an available expressions analysis on a body, then eliminates common subexpressions. This implementation is especially slow, as it does not run on basic blocks. A better implementation (which wouldn't catch every single cse, but would get most) would use basic blocks instead. It is also slow because the flow universe is explicitly created; it need not be. A better implementation would implicitly compute the kill sets at every node.


Constructor Summary
CommonSubexpressionEliminator(Singletons.Global g)
           
 
Method Summary
protected  void internalTransform(Body b, String phaseName, Map options)
          Common subexpression eliminator.
static CommonSubexpressionEliminator v()
           
 
Methods inherited from class soot.BodyTransformer
transform, transform, transform
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CommonSubexpressionEliminator

public CommonSubexpressionEliminator(Singletons.Global g)
Method Detail

v

public static CommonSubexpressionEliminator v()

internalTransform

protected void internalTransform(Body b,
                                 String phaseName,
                                 Map options)
Common subexpression eliminator.

Specified by:
internalTransform in class BodyTransformer
Parameters:
b - the body on which to apply the transformation
phaseName - the phasename for this transform; not typically used by implementations.
options - the actual computed options; a combination of default options and Scene specified options.