private void checkTable(LineNumberTable table) { if (DEBUG) { System.out.println("line number table has length " + table.getTableLength()); } LineNumber[] entries = table.getLineNumberTable(); int lastBytecode = -1; for (int i = 0; i < entries.length; ++i) { LineNumber ln = entries[i]; if (DEBUG) { System.out.println("Entry " + i + ": pc=" + ln.getStartPC() + ", line=" + ln.getLineNumber()); } int pc = ln.getStartPC(); if (pc <= lastBytecode) { throw new IllegalStateException("LineNumberTable is not sorted"); } } }
if ( prevStartPc < nextPcInFinallyBlock && nextPcInFinallyBlock < line.getStartPC()) { lineMentionedMultipleTimes.set(lineNum); if (line.getStartPC() >= firstHandler) { afterHandler.set(lineNum); afterHandler.set(newLine); foundOnce.set(lineNum); prevStartPc = line.getStartPC();
if (line.getStartPC() > tightEndPC) { break; if (line.getStartPC() >= tightStartPC) { count++;
private int getNextExecutableLineNumber(LineNumberTable linenumbers, int PC) { LineNumber[] entries = linenumbers.getLineNumberTable(); int beforePC = 0; int i = 0; for (; i < entries.length && entries[i].getStartPC() < PC; i++) { int line = entries[i].getLineNumber(); if (line > beforePC) { beforePC = line; } } if (i < entries.length) { int secondChoice = entries[i].getLineNumber(); for (; i < entries.length; i++) { int line = entries[i].getLineNumber(); if (line > beforePC) { return line; } } return secondChoice; } else { return entries[entries.length - 1].getLineNumber(); } }
private void foundSwitchNoDefault(SourceLineAnnotation s) { LineNumberTable table = getCode().getLineNumberTable(); if (table != null) { int startLine = s.getStartLine(); int prev = Integer.MIN_VALUE; for (LineNumber ln : table.getLineNumberTable()) { int thisLineNumber = ln.getLineNumber(); if (thisLineNumber < startLine && thisLineNumber > prev && ln.getStartPC() < s.getStartBytecode()) { prev = thisLineNumber; } } int diff = startLine - prev; if (diff > 5) { return; } bugAccumulator.accumulateBug(new BugInstance(this, "SF_SWITCH_NO_DEFAULT", NORMAL_PRIORITY).addClassAndMethod(this), s); } }
if (entry.getLineNumber() < firstLine) { firstLine = entry.getLineNumber(); bytecode = entry.getStartPC();
public int compare(LineNumber arg0, LineNumber arg1) { return arg0.getStartPC() - arg1.getStartPC(); }
/** * Initialize from another object. * * @param c the object to copy */ public LineNumber(final LineNumber c) { this(c.getStartPC(), c.getLineNumber()); }
/** * Initialize from another object. */ public LineNumber(LineNumber c) { this(c.getStartPC(), c.getLineNumber()); }
private void checkTable(LineNumberTable table) { if (DEBUG) { System.out.println("line number table has length " + table.getTableLength()); } LineNumber[] entries = table.getLineNumberTable(); int lastBytecode = -1; for (int i = 0; i < entries.length; ++i) { LineNumber ln = entries[i]; if (DEBUG) { System.out.println("Entry " + i + ": pc=" + ln.getStartPC() + ", line=" + ln.getLineNumber()); } int pc = ln.getStartPC(); if (pc <= lastBytecode) { throw new IllegalStateException("LineNumberTable is not sorted"); } } }
public LineNumberTableEntry(LineNumber []linums, int _nameIndex, int _length) { super(_nameIndex, _length); for (LineNumber i : linums) { getPool().add(new StartLineNumberPair(i.getStartPC(), i.getLineNumber())); } }
L: if (pc > lineNumbers[index].getStartPC()) index++; while (pc >= lineNumbers[index].getStartPC()); index--; else if (pc < lineNumbers[index].getStartPC()) index--; while (pc <= lineNumbers[index].getStartPC()); index++;
if (pc > lns[lns.length - 1].getStartPC()) { return lns[lns.length - 1].getLineNumber(); while (lo <= hi) { mid = (lo + hi) >>> 1; if (pc < lns[mid].getStartPC()) { hi = mid - 1; } else if (pc >= lns[mid + 1].getStartPC()) { lo = mid + 1; } else {
if (pc > lns[lns.length - 1].getStartPC()) { return lns[lns.length - 1].getLineNumber(); while (lo <= hi) { mid = (lo + hi) >>> 1; if (pc < lns[mid].getStartPC()) { hi = mid - 1; } else if (pc >= lns[mid + 1].getStartPC()) { lo = mid + 1; } else {
int j = line_number_table[i].getStartPC();
if (line.getStartPC() > tightEndPC) { break; if (line.getStartPC() >= tightStartPC) { count++;
private int getNextExecutableLineNumber(LineNumberTable linenumbers, int PC) { LineNumber[] entries = linenumbers.getLineNumberTable(); int beforePC = 0; int i = 0; for (; i < entries.length && entries[i].getStartPC() < PC; i++) { int line = entries[i].getLineNumber(); if (line > beforePC) { beforePC = line; } } if (i < entries.length) { int secondChoice = entries[i].getLineNumber(); for (; i < entries.length; i++) { int line = entries[i].getLineNumber(); if (line > beforePC) { return line; } } return secondChoice; } else { return entries[entries.length - 1].getLineNumber(); } }
while (lo <= hi) { mid = (lo + hi) >>> 1; linePC = lineNumbers[mid].getStartPC(); if (linePC == pc) break;
private void foundSwitchNoDefault(SourceLineAnnotation s) { LineNumberTable table = getCode().getLineNumberTable(); if (table != null) { int startLine = s.getStartLine(); int prev = Integer.MIN_VALUE; for (LineNumber ln : table.getLineNumberTable()) { int thisLineNumber = ln.getLineNumber(); if (thisLineNumber < startLine && thisLineNumber > prev && ln.getStartPC() < s.getStartBytecode()) { prev = thisLineNumber; } } int diff = startLine - prev; if (diff > 5) { return; } bugAccumulator.accumulateBug(new BugInstance(this, "SF_SWITCH_NO_DEFAULT", NORMAL_PRIORITY).addClassAndMethod(this), s); } }
if (entry.getLineNumber() < firstLine) { firstLine = entry.getLineNumber(); bytecode = entry.getStartPC();