Class IRTryCatchFinallyStatementCompiler
- java.lang.Object
-
- gw.internal.gosu.ir.compiler.bytecode.AbstractBytecodeCompiler
-
- gw.internal.gosu.ir.compiler.bytecode.statement.IRTryCatchFinallyStatementCompiler
-
public class IRTryCatchFinallyStatementCompiler extends AbstractBytecodeCompiler
-
-
Field Summary
Fields Modifier and Type Field Description private IRBytecodeContext_contextprivate IRFinallyCodePartitioner_finallyPartitionerprivate IRTryCatchFinallyStatement_stmt-
Fields inherited from class gw.internal.gosu.ir.compiler.bytecode.AbstractBytecodeCompiler
OBJECT_TYPE
-
-
Constructor Summary
Constructors Modifier Constructor Description privateIRTryCatchFinallyStatementCompiler(IRTryCatchFinallyStatement stmt, IRBytecodeContext context)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private IRTryCatchFinallyStatement_stmt()private voidassignExceptionParam(org.objectweb.asm.MethodVisitor mv, IRSymbol exceptionSym)private voidcompile()static voidcompile(IRTryCatchFinallyStatement stmt, IRBytecodeContext context)private voidcompileCatchStatements(org.objectweb.asm.MethodVisitor mv, org.objectweb.asm.Label tryStart, org.objectweb.asm.Label tryEnd, org.objectweb.asm.Label tryCatchEnd, java.util.List<IRCatchClause> catchStmts)private voidcompileFinallyStatement(org.objectweb.asm.MethodVisitor mv, org.objectweb.asm.Label tryStart)private voidcompileTryStatement(org.objectweb.asm.MethodVisitor mv, org.objectweb.asm.Label tryStart, org.objectweb.asm.Label tryEnd, org.objectweb.asm.Label tryCatchEnd)private voiddeclareCatchExtents(org.objectweb.asm.MethodVisitor mv, org.objectweb.asm.Label tryStart, org.objectweb.asm.Label coverageEnd, org.objectweb.asm.Label handlerStart, IRType type)private booleanhasFinally()private voidinlineLocalFinallyStmt(IRStatement tryOrCatchStmt, org.objectweb.asm.Label labelEnd)private voidinsertTryCatchBlock(org.objectweb.asm.MethodVisitor mv, org.objectweb.asm.Label handlerStart, IRType type, org.objectweb.asm.Label start, org.objectweb.asm.Label end)private voidpopFinallyStmt(IRFinallyCodePartitioner partition)private IRFinallyCodePartitionerpushFinallyStmt()-
Methods inherited from class gw.internal.gosu.ir.compiler.bytecode.AbstractBytecodeCompiler
compileConditionAssignment, getIns, isNotPartOfBooleanExpr, isWide, negateOpcode
-
-
-
-
Field Detail
-
_finallyPartitioner
private IRFinallyCodePartitioner _finallyPartitioner
-
_stmt
private IRTryCatchFinallyStatement _stmt
-
_context
private IRBytecodeContext _context
-
-
Constructor Detail
-
IRTryCatchFinallyStatementCompiler
private IRTryCatchFinallyStatementCompiler(IRTryCatchFinallyStatement stmt, IRBytecodeContext context)
-
-
Method Detail
-
_stmt
private IRTryCatchFinallyStatement _stmt()
-
compile
public static void compile(IRTryCatchFinallyStatement stmt, IRBytecodeContext context)
-
compile
private void compile()
-
compileTryStatement
private void compileTryStatement(org.objectweb.asm.MethodVisitor mv, org.objectweb.asm.Label tryStart, org.objectweb.asm.Label tryEnd, org.objectweb.asm.Label tryCatchEnd)
-
compileCatchStatements
private void compileCatchStatements(org.objectweb.asm.MethodVisitor mv, org.objectweb.asm.Label tryStart, org.objectweb.asm.Label tryEnd, org.objectweb.asm.Label tryCatchEnd, java.util.List<IRCatchClause> catchStmts)
-
declareCatchExtents
private void declareCatchExtents(org.objectweb.asm.MethodVisitor mv, org.objectweb.asm.Label tryStart, org.objectweb.asm.Label coverageEnd, org.objectweb.asm.Label handlerStart, IRType type)
-
insertTryCatchBlock
private void insertTryCatchBlock(org.objectweb.asm.MethodVisitor mv, org.objectweb.asm.Label handlerStart, IRType type, org.objectweb.asm.Label start, org.objectweb.asm.Label end)
-
assignExceptionParam
private void assignExceptionParam(org.objectweb.asm.MethodVisitor mv, IRSymbol exceptionSym)
-
compileFinallyStatement
private void compileFinallyStatement(org.objectweb.asm.MethodVisitor mv, org.objectweb.asm.Label tryStart)
-
inlineLocalFinallyStmt
private void inlineLocalFinallyStmt(IRStatement tryOrCatchStmt, org.objectweb.asm.Label labelEnd)
-
popFinallyStmt
private void popFinallyStmt(IRFinallyCodePartitioner partition)
-
pushFinallyStmt
private IRFinallyCodePartitioner pushFinallyStmt()
-
hasFinally
private boolean hasFinally()
-
-