void addForwardJump(int from, int to) { if (from >= to) { return; } purgeForwardJumps(from); forwardJumps.add(new Jump(from, to)); }
/** * */ 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 addForwardJump(int from, int to) { if (from >= to) { return; } purgeForwardJumps(from); forwardJumps.add(new Jump(from, to)); }
/** * */ 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)); }