Package gnu.bytecode
Class ExitableBlock
java.lang.Object
gnu.bytecode.ExitableBlock
Support for code block that one may be exited.
You may optionally exit with a value, and/or run intervening finally blocks.
Typical usage::
CodeAttr code = ...; Type retType = ...; // a Type or null ExitableBlock block = code.startExitableBlock(retType, true); ... ... block.exit() ...; // conditionally ... code.endExitableBlock();
The block.exit()
compiles to a transfer to the end
of the block
, executing any finally
-blocks
within the block that surround the call to exit
.
If the ExitableBlock
should leave a result on
the stack, then specify the type of the result as the retType
.
The block itself must push a result before calling
endExitableBlock
(unless code.reachableHere()
is false), and must also push a result before block.exit().
.
-
Method Summary
Modifier and TypeMethodDescriptionvoid
exit()
Exit this surrounding block, executing finally blocks as needed.If an exit is simple, return the label for block end.
-
Method Details
-
exit
public void exit()Exit this surrounding block, executing finally blocks as needed. Return a value as the result of this ExitableBlock. -
exitIsGoto
If an exit is simple, return the label for block end. The exit is simple if there is no intervening finally blocks.
-