public final class ExceptionHandlerBasicBlock extends BasicBlock
BasicBlock.BBEnum, BasicBlock.ComputedBBEnum, BasicBlock.ExceptionOutEdgeEnum, BasicBlock.InEdgeEnum, BasicBlock.NormalOutEdgeEnum, BasicBlock.OutEdgeEnum
SpaceEffGraphNode.GraphEdgeEnumeration<T extends GraphEdge>, SpaceEffGraphNode.OutEdgeEnumeration
Modifier and Type | Field and Description |
---|---|
private TypeOperand[] |
exceptionTypes
The RVMType(s) of the exception(s) caught by this block.
|
private LiveSet |
liveSet
The liveness information at the beginning of this block.
|
CAN_THROW_EXCEPTIONS, end, EXCEPTION_HANDLER, EXCEPTION_HANDLER_WITH_NORMAL_IN, exceptionHandlers, flags, freq, IMPLICIT_EXIT_EDGE, INFREQUENT, LANDING_PAD, REACHABLE_FROM_EXCEPTION_HANDLER, SCRATCH, start
backwardSortNumber, forwardSortNumber, sortedNext, sortedPrev
_inEdgeEnd, _inEdgeStart, _outEdgeEnd, _outEdgeStart, info, next, nextSorted, prev
Constructor and Description |
---|
ExceptionHandlerBasicBlock(int loc,
InlineSequence position,
TypeOperand type,
ControlFlowGraph cfg)
Creates a new exception handler basic block at the specified location,
which catches the specified type of exception.
|
Modifier and Type | Method and Description |
---|---|
void |
addCaughtException(TypeOperand et)
Add a new exception type to an extant exception handler block.
|
Enumeration<TypeOperand> |
getExceptionTypes()
This method is mainly intended for creation of exception tables during
final assembly.
|
LiveSet |
getLiveSet()
Returns the set of registers live before the first instruction of
this basic block
|
int |
getNumberOfExceptionTableEntries()
Gets the number of table entries required for this EHBB.
|
byte |
mayCatchException(TypeReference cand)
Return YES/NO/MAYBE values that answer the question is it possible for
this handler block to catch an exception of the type et.
|
byte |
mustCatchException(TypeReference cand)
Return YES/NO/MAYBE values that answer the question is it guarenteed that
this handler block will catch an exception of type
cand |
void |
setLiveSet(LiveSet liveSet)
Set the set of registers live before the first instruction of
this basic block
|
String |
toString()
Return a string representation of the basic block
(augment
BasicBlock.toString() with
the exceptions caught by this handler block). |
appendInstruction, appendInstructionRespectingTerminalBranch, appendInstructionRespectingTerminalBranchOrPEI, augmentExecutionFrequency, canThrowExceptions, clearCanThrowExceptions, clearExceptionHandlerBasicBlock, clearInfrequent, clearLandingPad, clearMayThrowUncaughtException, clearReachableFromExceptionHandler, clearScratchFlag, copyWithoutLinks, createSubBlock, createSubBlock, deleteNormalOut, discardInstructions, enumerateBranchInstructions, firstBranchInstruction, firstInstruction, firstRealInstruction, forwardInstrEnumerator, forwardRealInstrEnumerator, getApplicableExceptionalOut, getExceptionalOut, getExceptionHandlers, getExecutionFrequency, getFallThroughBlock, getIn, getInfrequent, getInNodes, getLandingPad, getNormalOut, getNotTakenNextBlock, getNumberOfExceptionalOut, getNumberOfNormalOut, getNumberOfRealInstructions, getOut, getOutNodes, getReachableExceptionHandlers, getScratchFlag, hasApplicableExceptionalOut, hasAthrowInst, hasExceptionHandlers, hasGoto, hasNonReturningCall, hasNonReturningOsr, hasReachableExceptionHandlers, hasReturn, hasSwitch, hasTrap, initInOutSets, isEmpty, isExceptionalOut, isExceptionHandlerBasicBlock, isExceptionHandlerEquivalent, isExceptionHandlerWithNormalIn, isExit, isIn, isNormalOut, isOut, isReachableFromExceptionHandler, killFallThrough, lastInstruction, lastRealInstruction, makeExit, makeGOTO, makeJumpTarget, mayThrowUncaughtException, mergeFallThrough, moveBehind, nextBasicBlockInCodeOrder, prependInstruction, prependInstructionRespectingPrologue, prevBasicBlockInCodeOrder, printExtended, pruneExceptionalOut, recomputeNormalOut, redirectOuts, replicateNormalOut, replicateThisOut, replicateThisOut, reverseInstrEnumerator, reverseRealInstrEnumerator, scaleExecutionFrequency, segregateInstruction, setCanThrowExceptions, setExceptionHandlerBasicBlock, setExceptionHandlerWithNormalIn, setExecutionFrequency, setInfrequent, setInfrequent, setLandingPad, setMayThrowUncaughtException, setReachableFromExceptionHandler, setScratchFlag, splitNodeAt, splitNodeWithLinksAt, unfactor
getBackwardSortedNext, getBackwardSortNumber, getForwardSortedNext, getForwardSortNumber, getNewSortMarker, getSortedNext, getSortMarker, getSortNumber, isSortMarkedWith, setBackwardSortNumber, setForwardSortNumber, setSortedNext, setSortMarker, setSortNumber, setSortNumber
_sortDFS, _sortRevTop, _sortTop, append, appendInEdge, appendOutEdge, clearDfsVisited, clearFlags, clearInFlags, clearLoopHeader, clearOnStack, clearOutFlags, clearTopVisited, deleteIn, deleteOut, deleteOut, deleteOut, dfsVisited, findOutEdgeTo, firstInEdge, firstInNode, firstOutEdge, firstOutNode, flagsOn, getIndex, getNext, getNumber, getNumberOfIn, getNumberOfOut, getPrev, hasIn, hasOneIn, hasOneIn, hasOneOut, hasOneOut, hasOut, hasZeroIn, hasZeroOut, inEdges, inNodes, insertOut, insertOut, isLoopHeader, onStack, outEdges, outNodes, pointsIn, pointsOut, printInEdges, printInNodes, printOutEdges, printOutNodes, remove, removeIn, removeIn, removeOut, removeOut, replaceInEdge, replaceOut, setDfsVisited, setDfsVisitedOnStack, setIndex, setLoopHeader, setNumber, setOnStack, setTopVisited, sortDFS, sortRevTop, sortTop, topVisited
private TypeOperand[] exceptionTypes
public ExceptionHandlerBasicBlock(int loc, InlineSequence position, TypeOperand type, ControlFlowGraph cfg)
loc
- Bytecode index to create basic block atposition
- The inline context for this basic blocktype
- The exception typecfg
- The ControlFlowGraph that will contain the basic blockpublic void addCaughtException(TypeOperand et)
BC2IR
.et
- the exception type to be addedpublic byte mayCatchException(TypeReference cand)
cand
- the TypeReference of the exception in question.public byte mustCatchException(TypeReference cand)
cand
cand
- the TypeReference of the exception in question.public Enumeration<TypeOperand> getExceptionTypes()
public int getNumberOfExceptionTableEntries()
Really only of interest during final assembly.
exception table and
its opt-compiler specific subclasses
public LiveSet getLiveSet()
public void setLiveSet(LiveSet liveSet)
liveSet
- The set of registers live before the first instruction of
this basic blockpublic String toString()
BasicBlock.toString()
with
the exceptions caught by this handler block).toString
in class BasicBlock