soot.toolkits.exceptions
Class TrapTightener
java.lang.Object
soot.Transformer
soot.BodyTransformer
soot.toolkits.exceptions.TrapTightener
public final class TrapTightener
- extends BodyTransformer
A BodyTransformer
that shrinks the protected area covered
by each Trap
in the Body
so that it begins at the first of
the Body
's Unit
s 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 Unit
s 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 ExceptionalUnitGraph
s from which unrealizable exceptional
control flow edges have been removed.
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
TrapTightener
public TrapTightener(Singletons.Global g)
v
public static TrapTightener v()
internalTransform
protected void internalTransform(Body body,
String phaseName,
Map options)
- Description copied from class:
BodyTransformer
- This method is called to perform the transformation itself. It is declared
abstract; subclasses must implement this method by making it the entry point
to their actual Body transformation.
- Specified by:
internalTransform
in class BodyTransformer
- Parameters:
body
- 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.
mightThrowTo
protected boolean mightThrowTo(ExceptionalUnitGraph g,
Unit u,
Trap t)
- A utility routine which determines if a particular
Unit
might throw an exception to a particular Trap
, according to
the information supplied by a particular control flow graph.
- Parameters:
g
- The control flow graph providing information about exceptions.u
- The unit being inquired about.t
- The trap being inquired about.
- Returns:
- true if u might throw an exception caught
by t, according to g