public final class TrapTightener extends TrapTransformer
BodyTransformer that shrinks the protected area covered by each Trap in the Body so that it
begins at the first of the Body's Units which might throw an exception caught by the Trap and ends
just after the last Unit which might throw an exception caught by the Trap. In the case where none of the
Units protected by a Trap can throw the exception it catches, the Trap's protected area is left
completely empty, which will likely cause the UnreachableCodeEliminator to remove the Trap completely.
The TrapTightener is used to reduce the risk of unverifiable code which can result from the use of
ExceptionalUnitGraphs from which unrealizable exceptional control flow edges have been removed.| Modifier and Type | Field and Description |
|---|---|
protected ThrowAnalysis |
throwAnalysis |
| Constructor and Description |
|---|
TrapTightener(Singletons.Global g) |
TrapTightener(ThrowAnalysis ta) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
internalTransform(Body body,
String phaseName,
Map<String,String> options)
This method is called to perform the transformation itself.
|
protected boolean |
mightThrowTo(ExceptionalUnitGraph g,
Unit u,
Trap t)
|
static TrapTightener |
v() |
getUnitsWithMonitortransform, transform, transformprotected ThrowAnalysis throwAnalysis
public TrapTightener(Singletons.Global g)
public TrapTightener(ThrowAnalysis ta)
public static TrapTightener v()
protected void internalTransform(Body body, String phaseName, Map<String,String> options)
BodyTransformerinternalTransform in class BodyTransformerbody - the body on which to apply the transformationphaseName - the phasename for this transform; not typically used by implementations.options - the actual computed options; a combination of default options and Scene specified options.protected boolean mightThrowTo(ExceptionalUnitGraph g, Unit u, Trap t)
Unit might throw an exception to a particular Trap,
according to the information supplied by a particular control flow graph.g - The control flow graph providing information about exceptions.u - The unit being inquired about.t - The trap being inquired about.Copyright © 2020 Soot OSS. All rights reserved.