final Instruction afterTry = _instructions.tryGetAtOffset(entry.getEndOffset()); if (entry.getCatchType() == null) { handler = ExceptionHandler.createFinally( new InstructionBlock( _instructions.atOffset(entry.getStartOffset()), afterTry != null ? afterTry.getPrevious() : last(_instructions) ), new InstructionBlock( _instructions.atOffset(entry.getHandlerOffset()), _instructions.atOffset(entry.getHandlerOffset()) handler = ExceptionHandler.createCatch( new InstructionBlock( _instructions.atOffset(entry.getStartOffset()), afterTry != null ? afterTry.getPrevious() : last(_instructions) ), new InstructionBlock( _instructions.atOffset(entry.getHandlerOffset()), _instructions.atOffset(entry.getHandlerOffset()) ), entry.getCatchType() );
exceptionTable[k] = new ExceptionTableEntry( startOffset, endOffset,
private boolean isHandlerStart(final Instruction instruction) { for (final ExceptionTableEntry entry : _tableEntries) { if (entry.getHandlerOffset() == instruction.getOffset()) { return true; } } return false; }
exceptionTable[k] = new ExceptionTableEntry( startOffset, endOffset,
private boolean isHandlerStart(final Instruction instruction) { for (final ExceptionTableEntry entry : _tableEntries) { if (entry.getHandlerOffset() == instruction.getOffset()) { return true; } } return false; }
final Instruction afterTry = _instructions.tryGetAtOffset(entry.getEndOffset()); if (entry.getCatchType() == null) { handler = ExceptionHandler.createFinally( new InstructionBlock( _instructions.atOffset(entry.getStartOffset()), afterTry != null ? afterTry.getPrevious() : last(_instructions) ), new InstructionBlock( _instructions.atOffset(entry.getHandlerOffset()), _instructions.atOffset(entry.getHandlerOffset()) handler = ExceptionHandler.createCatch( new InstructionBlock( _instructions.atOffset(entry.getStartOffset()), afterTry != null ? afterTry.getPrevious() : last(_instructions) ), new InstructionBlock( _instructions.atOffset(entry.getHandlerOffset()), _instructions.atOffset(entry.getHandlerOffset()) ), entry.getCatchType() );
exceptionTable[k] = new ExceptionTableEntry( startOffset, endOffset,
private boolean isHandlerStart(final Instruction instruction) { for (final ExceptionTableEntry entry : _tableEntries) { if (entry.getHandlerOffset() == instruction.getOffset()) { return true; } } return false; }
final Instruction afterTry = _instructions.tryGetAtOffset(entry.getEndOffset()); if (entry.getCatchType() == null) { handler = ExceptionHandler.createFinally( new InstructionBlock( _instructions.atOffset(entry.getStartOffset()), afterTry != null ? afterTry.getPrevious() : last(_instructions) ), new InstructionBlock( _instructions.atOffset(entry.getHandlerOffset()), _instructions.atOffset(entry.getHandlerOffset()) handler = ExceptionHandler.createCatch( new InstructionBlock( _instructions.atOffset(entry.getStartOffset()), afterTry != null ? afterTry.getPrevious() : last(_instructions) ), new InstructionBlock( _instructions.atOffset(entry.getHandlerOffset()), _instructions.atOffset(entry.getHandlerOffset()) ), entry.getCatchType()
exceptionTable[k] = new ExceptionTableEntry( startOffset, endOffset,
private void calculateIncomingJumps() { // // Step 1: Determine which instructions are jump targets. // for (final Instruction instruction : _instructions) { final OpCode opCode = instruction.getOpCode(); if (opCode.getOperandType() == OperandType.BranchTarget || opCode.getOperandType() == OperandType.BranchTargetWide) { _hasIncomingJumps[getInstructionIndex(instruction.<Instruction>getOperand(0))] = true; } else if (opCode.getOperandType() == OperandType.Switch) { final SwitchInfo switchInfo = instruction.getOperand(0); _hasIncomingJumps[getInstructionIndex(switchInfo.getDefaultTarget())] = true; for (final Instruction target : switchInfo.getTargets()) { _hasIncomingJumps[getInstructionIndex(target)] = true; } } } for (final ExceptionTableEntry entry : _tableEntries) { _hasIncomingJumps[getInstructionIndex(_instructions.atOffset(entry.getHandlerOffset()))] = true; } }
final Instruction handlerStart = instructions.atOffset(entry.getHandlerOffset()); final ControlFlowNode handlerStartNode = builder.findNode(handlerStart); if (entry.getEndOffset() == lastInstruction.getEndOffset()) { tryBlock = new InstructionBlock( instructions.atOffset(entry.getStartOffset()), lastInstruction ); instructions.atOffset(entry.getStartOffset()), instructions.atOffset(entry.getEndOffset()).getPrevious() ); if (entry.getCatchType() == null) { handlers.add( ExceptionHandler.createFinally( tryBlock, new InstructionBlock(handlerStart.getStart(), lastOrDefault(dominatedNodes).getEnd()), entry.getCatchType()
exceptionTable[k] = new ExceptionTableEntry( startOffset, endOffset,
private void calculateIncomingJumps() { // // Step 1: Determine which instructions are jump targets. // for (final Instruction instruction : _instructions) { final OpCode opCode = instruction.getOpCode(); if (opCode.getOperandType() == OperandType.BranchTarget || opCode.getOperandType() == OperandType.BranchTargetWide) { _hasIncomingJumps[getInstructionIndex(instruction.<Instruction>getOperand(0))] = true; } else if (opCode.getOperandType() == OperandType.Switch) { final SwitchInfo switchInfo = instruction.getOperand(0); _hasIncomingJumps[getInstructionIndex(switchInfo.getDefaultTarget())] = true; for (final Instruction target : switchInfo.getTargets()) { _hasIncomingJumps[getInstructionIndex(target)] = true; } } } for (final ExceptionTableEntry entry : _tableEntries) { _hasIncomingJumps[getInstructionIndex(_instructions.atOffset(entry.getHandlerOffset()))] = true; } }
final Instruction handlerStart = instructions.atOffset(entry.getHandlerOffset()); final ControlFlowNode handlerStartNode = builder.findNode(handlerStart); if (entry.getEndOffset() == lastInstruction.getEndOffset()) { tryBlock = new InstructionBlock( instructions.atOffset(entry.getStartOffset()), lastInstruction ); instructions.atOffset(entry.getStartOffset()), instructions.atOffset(entry.getEndOffset()).getPrevious() ); if (entry.getCatchType() == null) { handlers.add( ExceptionHandler.createFinally( tryBlock, new InstructionBlock(handlerStart.getStart(), lastOrDefault(dominatedNodes).getEnd()), entry.getCatchType()
exceptionTable[k] = new ExceptionTableEntry( startOffset, endOffset,
private void calculateIncomingJumps() { // // Step 1: Determine which instructions are jump targets. // for (final Instruction instruction : _instructions) { final OpCode opCode = instruction.getOpCode(); if (opCode.getOperandType() == OperandType.BranchTarget || opCode.getOperandType() == OperandType.BranchTargetWide) { _hasIncomingJumps[getInstructionIndex(instruction.<Instruction>getOperand(0))] = true; } else if (opCode.getOperandType() == OperandType.Switch) { final SwitchInfo switchInfo = instruction.getOperand(0); _hasIncomingJumps[getInstructionIndex(switchInfo.getDefaultTarget())] = true; for (final Instruction target : switchInfo.getTargets()) { _hasIncomingJumps[getInstructionIndex(target)] = true; } } } for (final ExceptionTableEntry entry : _tableEntries) { _hasIncomingJumps[getInstructionIndex(_instructions.atOffset(entry.getHandlerOffset()))] = true; } }
final Instruction handlerStart = instructions.atOffset(entry.getHandlerOffset()); final ControlFlowNode handlerStartNode = builder.findNode(handlerStart); if (entry.getEndOffset() == lastInstruction.getEndOffset()) { tryBlock = new InstructionBlock( instructions.atOffset(entry.getStartOffset()), lastInstruction ); instructions.atOffset(entry.getStartOffset()), instructions.atOffset(entry.getEndOffset()).getPrevious() ); if (entry.getCatchType() == null) { handlers.add( ExceptionHandler.createFinally( tryBlock, new InstructionBlock(handlerStart.getStart(), lastOrDefault(dominatedNodes).getEnd()), entry.getCatchType()
exceptionTable[k] = new ExceptionTableEntry( startOffset, endOffset,
exceptionTable[k] = new ExceptionTableEntry( startOffset, endOffset,