public class CopyPropagator extends BodyTransformer
| Modifier and Type | Field and Description |
|---|---|
protected boolean |
forceOmitExceptingUnitEdges |
protected ThrowAnalysis |
throwAnalysis |
| Constructor and Description |
|---|
CopyPropagator(Singletons.Global g) |
CopyPropagator(ThrowAnalysis ta) |
CopyPropagator(ThrowAnalysis ta,
boolean forceOmitExceptingUnitEdges) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
internalTransform(Body b,
String phaseName,
Map<String,String> opts)
Cascaded copy propagator.
|
static CopyPropagator |
v() |
transform, transform, transformprotected ThrowAnalysis throwAnalysis
protected boolean forceOmitExceptingUnitEdges
public CopyPropagator(Singletons.Global g)
public CopyPropagator(ThrowAnalysis ta)
public CopyPropagator(ThrowAnalysis ta, boolean forceOmitExceptingUnitEdges)
public static CopyPropagator v()
protected void internalTransform(Body b, String phaseName, Map<String,String> opts)
If it encounters situations of the form: A: a = ...; B: ... x = a; C:... use (x); where a has only one definition, and x has only one definition (B), then it can propagate immediately without checking between B and C for redefinitions of a (namely) A because they cannot occur. In this case the propagator is global.
Otherwise, if a has multiple definitions then it only checks for redefinitions of Propagates constants and copies in extended basic blocks.
Does not propagate stack locals when the "only-regular-locals" option is true.
internalTransform in class BodyTransformerb - the body on which to apply the transformationphaseName - the phasename for this transform; not typically used by implementations.opts - the actual computed options; a combination of default options and Scene specified options.Copyright © 2020 Soot OSS. All rights reserved.