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 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.Modifier and Type | Field and Description |
---|---|
protected ThrowAnalysis |
throwAnalysis |
Constructor and Description |
---|
TrapTightener(Singletons.Global g) |
Modifier and Type | Method and Description |
---|---|
protected void |
internalTransform(Body body,
java.lang.String phaseName,
java.util.Map<java.lang.String,java.lang.String> options)
This method is called to perform the transformation itself.
|
protected boolean |
mightThrowTo(ExceptionalUnitGraph g,
Unit u,
Trap t)
|
static TrapTightener |
v() |
getUnitsWithMonitor
transform, transform, transform
protected ThrowAnalysis throwAnalysis
public static TrapTightener v()
protected void internalTransform(Body body, java.lang.String phaseName, java.util.Map<java.lang.String,java.lang.String> options)
BodyTransformer
internalTransform
in class BodyTransformer
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.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.