public final class TrapTightener
- extends BodyTransformer
BodyTransformer that shrinks the protected area covered
Trap in the
Body so that it begins at the first of
Units which might throw an exception caught by
Trap and ends just after the last
Unit which might
throw an exception caught by the
Trap. In the case where none
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
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.
|Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
public TrapTightener(Singletons.Global g)
public static TrapTightener v()
protected void internalTransform(Body body,
- Description copied from class:
- 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
body - 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.
protected boolean mightThrowTo(ExceptionalUnitGraph g,
- A utility routine which determines if a particular
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.
- true if u might throw an exception caught
by t, according to g