@Override public void sawBranchTo(int target) { addForwardJump(getPC(), target); }
/** * */ private void addBackwardsReach() { if (getBranchOffset() >= 0) { return; } int target = getBranchTarget(); for (Jump j : backwardReach) { if (j.to < target && target <= j.from) { target = j.to; } } assert target <= getBranchTarget(); assert target < getPC(); for (Iterator<Jump> i = backwardReach.iterator(); i.hasNext();) { Jump j = i.next(); if (target <= j.to && getPC() >= j.from) { i.remove(); } } backwardReach.add(new Jump(getPC(), target)); }
void reportPossibleBug(BugInstance bug) { int catchSize = Util.getSizeOfSurroundingTryBlock(getConstantPool(), getCode(), "java/io/EOFException", getPC()); if (catchSize < Integer.MAX_VALUE) { bug.lowerPriorityALot(); } else { catchSize = Util.getSizeOfSurroundingTryBlock(getConstantPool(), getCode(), "java/lang/NoSuchElementException", getPC()); if (catchSize < Integer.MAX_VALUE) { bug.lowerPriorityALot(); } else { LocalVariableAnnotation lv = bug.getPrimaryLocalVariableAnnotation(); if (lv == null && "run".equals(getMethodName())) { bug.lowerPriority(); } } } bugReporter.reportBug(bug); } }
@Override public void sawOpcode(int seen) { if (DEBUG) { System.out.printf("%3d %-15s %s%n", getPC(), Const.getOpcodeName(seen), stack); regModifiedAt(getRegisterOperand(), getPC()); BackwardsBranch bb = new BackwardsBranch(stack, getPC(), getBranchTarget()); if (bb.invariantRegisters.size() > 0) { backwardBranches.add(bb); case Const.LRETURN: case Const.ATHROW: addForwardJump(getPC(), Integer.MAX_VALUE); break; OpcodeStack.Item item0 = stack.getStackItem(0); if (getDefaultSwitchOffset() > 0) { forwardConditionalBranches.add(new ForwardConditionalBranch(item0, item0, getPC(), getPC() + getDefaultSwitchOffset())); forwardConditionalBranches.add(new ForwardConditionalBranch(item0, item0, getPC(), getPC() + offset)); int target = getBranchTarget(); if (getBranchOffset() > 0) { forwardConditionalBranches.add(new ForwardConditionalBranch(item0, item0, getPC(), target)); break; if (getFurthestJump(target) > getPC()) { break;
@Override public void sawBranchTo(int target) { addForwardJump(getPC(), target); }
/** * */ private void addBackwardsReach() { if (getBranchOffset() >= 0) { return; } int target = getBranchTarget(); for (Jump j : backwardReach) { if (j.to < target && target <= j.from) { target = j.to; } } assert target <= getBranchTarget(); assert target < getPC(); for (Iterator<Jump> i = backwardReach.iterator(); i.hasNext();) { Jump j = i.next(); if (target <= j.to && getPC() >= j.from) { i.remove(); } } backwardReach.add(new Jump(getPC(), target)); }
void reportPossibleBug(BugInstance bug) { int catchSize = Util.getSizeOfSurroundingTryBlock(getConstantPool(), getCode(), "java/io/EOFException", getPC()); if (catchSize < Integer.MAX_VALUE) { bug.lowerPriorityALot(); } else { catchSize = Util.getSizeOfSurroundingTryBlock(getConstantPool(), getCode(), "java/lang/NoSuchElementException", getPC()); if (catchSize < Integer.MAX_VALUE) { bug.lowerPriorityALot(); } else { LocalVariableAnnotation lv = bug.getPrimaryLocalVariableAnnotation(); if (lv == null && "run".equals(getMethodName())) { bug.lowerPriority(); } } } bugReporter.reportBug(bug); } }
@Override public void sawOpcode(int seen) { if (DEBUG) { System.out.printf("%3d %-15s %s%n", getPC(), OPCODE_NAMES[seen], stack); regModifiedAt(getRegisterOperand(), getPC()); BackwardsBranch bb = new BackwardsBranch(stack, getPC(), getBranchTarget()); if (bb.invariantRegisters.size() > 0) { backwardBranches.add(bb); case LRETURN: case ATHROW: addForwardJump(getPC(), Integer.MAX_VALUE); break; OpcodeStack.Item item0 = stack.getStackItem(0); if (getDefaultSwitchOffset() > 0) { forwardConditionalBranches.add(new ForwardConditionalBranch(item0, item0, getPC(), getPC() + getDefaultSwitchOffset())); forwardConditionalBranches.add(new ForwardConditionalBranch(item0, item0, getPC(), getPC() + offset)); int target = getBranchTarget(); if (getBranchOffset() > 0) { forwardConditionalBranches.add(new ForwardConditionalBranch(item0, item0, getPC(), target)); break; if (getFurthestJump(target) > getPC()) { break;