Class CommonSubexpressionEliminator

  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


public CommonSubexpressionEliminator(Singletons.Global g)
Method Detail


public static CommonSubexpressionEliminator v()


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

Specified by:
internalTransform in class BodyTransformer
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.