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()
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()
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()
final Instruction handlerStart = instructions.atOffset(entry.getHandlerOffset()); final ControlFlowNode handlerStartNode = builder.findNode(handlerStart); instructions.atOffset(entry.getStartOffset()), lastInstruction ); instructions.atOffset(entry.getStartOffset()), instructions.atOffset(entry.getEndOffset()).getPrevious() );
final Instruction handlerStart = instructions.atOffset(entry.getHandlerOffset()); final ControlFlowNode handlerStartNode = builder.findNode(handlerStart); instructions.atOffset(entry.getStartOffset()), lastInstruction ); instructions.atOffset(entry.getStartOffset()), instructions.atOffset(entry.getEndOffset()).getPrevious() );
final Instruction handlerStart = instructions.atOffset(entry.getHandlerOffset()); final ControlFlowNode handlerStartNode = builder.findNode(handlerStart); instructions.atOffset(entry.getStartOffset()), lastInstruction ); instructions.atOffset(entry.getStartOffset()), instructions.atOffset(entry.getEndOffset()).getPrevious() );
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; } }
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; } }
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; } }