2
2
* ProGuard -- shrinking, optimization, obfuscation, and preverification
5
* Copyright (c) 2002-2014 Eric Lafortune (eric@graphics.cornell.edu)
5
* Copyright (c) 2002-2015 Eric Lafortune @ GuardSquare
7
7
* This program is free software; you can redistribute it and/or modify it
8
8
* under the terms of the GNU General Public License as published by the Free
63
63
public int getLineNumber(int pc)
65
for (int index = u2lineNumberTableLength-1 ; index >= 0 ; index--)
65
LineNumberInfo info = getLineNumberInfo(pc);
67
return info == null ? 0 : info.u2lineNumber;
72
* Returns the source corresponding to the given byte code program
75
public String getSource(int pc)
77
LineNumberInfo info = getLineNumberInfo(pc);
79
return info == null ? null : info.getSource();
84
* Returns the line number info corresponding to the given byte code
87
public LineNumberInfo getLineNumberInfo(int pc)
89
for (int index = u2lineNumberTableLength-1; index >= 0; index--)
67
91
LineNumberInfo info = lineNumberTable[index];
68
92
if (pc >= info.u2startPC)
70
return info.u2lineNumber;
74
98
return u2lineNumberTableLength > 0 ?
75
lineNumberTable[0].u2lineNumber :
81
* Returns the lowest line number, or 0 if there aren't any line numbers.
105
* Returns the lowest line number with the default null source,
106
* or 0 if there aren't any such line numbers.
83
108
public int getLowestLineNumber()
85
if (u2lineNumberTableLength == 0)
90
110
int lowestLineNumber = Integer.MAX_VALUE;
92
112
for (int index = 0; index < u2lineNumberTableLength; index++)
94
int lineNumber = lineNumberTable[index].u2lineNumber;
95
if (lineNumber < lowestLineNumber)
114
LineNumberInfo info = lineNumberTable[index];
115
if (info.getSource() == null)
97
lowestLineNumber = lineNumber;
117
int lineNumber = info.u2lineNumber;
118
if (lineNumber < lowestLineNumber)
120
lowestLineNumber = lineNumber;
101
return lowestLineNumber;
125
return lowestLineNumber == Integer.MAX_VALUE ? 0 : lowestLineNumber;
106
* Returns the highest line number, or 0 if there aren't any line numbers.
130
* Returns the highest line number with the default null source,
131
* or 0 if there aren't any such line numbers.
108
133
public int getHighestLineNumber()
110
if (u2lineNumberTableLength == 0)
115
int highestLineNumber = Integer.MIN_VALUE;
135
int highestLineNumber = 0;
117
137
for (int index = 0; index < u2lineNumberTableLength; index++)
119
int lineNumber = lineNumberTable[index].u2lineNumber;
120
if (lineNumber > highestLineNumber)
139
LineNumberInfo info = lineNumberTable[index];
140
if (info.getSource() == null)
122
highestLineNumber = lineNumber;
142
int lineNumber = info.u2lineNumber;
143
if (lineNumber > highestLineNumber)
145
highestLineNumber = lineNumber;