decompiler: better line matching for single block methods
This commit is contained in:
@@ -101,6 +101,8 @@ public class BytecodeMappingTracer {
|
||||
}
|
||||
|
||||
Map<Integer, Integer> res = new HashMap<Integer, Integer>();
|
||||
|
||||
// first match offsets from line number table
|
||||
int[] data = lineNumberTable.getRawData();
|
||||
for (int i = 0; i < data.length; i += 2) {
|
||||
int originalOffset = data[i];
|
||||
@@ -113,9 +115,11 @@ public class BytecodeMappingTracer {
|
||||
unmappedLines.add(originalLine);
|
||||
}
|
||||
}
|
||||
|
||||
// now match offsets from decompiler mapping
|
||||
for (Entry<Integer, Integer> entry : mapping.entrySet()) {
|
||||
int originalLine = lineNumberTable.findLineNumber(entry.getKey());
|
||||
if (originalLine > -1) {
|
||||
if (originalLine > -1 && !res.containsKey(originalLine)) {
|
||||
res.put(originalLine, entry.getValue());
|
||||
unmappedLines.remove(originalLine);
|
||||
}
|
||||
|
||||
@@ -12,9 +12,9 @@ class i implements bg {
|
||||
private final b b;
|
||||
|
||||
i(b var1, j var2) {
|
||||
this.b = var1;
|
||||
this.b = var1;// 1
|
||||
this.a = var2;
|
||||
}// 1
|
||||
}
|
||||
|
||||
public void a(c var1, k var2, boolean var3) {
|
||||
File var4 = this.a.b().a(var1);// 2
|
||||
@@ -50,7 +50,7 @@ class 'a/a/a/a/e/f/i' {
|
||||
|
||||
Lines mapping:
|
||||
0 <-> 25
|
||||
1 <-> 17
|
||||
1 <-> 15
|
||||
2 <-> 20
|
||||
3 <-> 21
|
||||
4 <-> 22
|
||||
|
||||
@@ -18,12 +18,12 @@ public enum TestEnum {
|
||||
}// 30
|
||||
|
||||
private TestEnum() {
|
||||
this("?");
|
||||
}// 34
|
||||
this("?");// 34
|
||||
}
|
||||
|
||||
private TestEnum(@Deprecated String var3) {
|
||||
this.s = var3;
|
||||
}// 35
|
||||
this.s = var3;// 35
|
||||
}
|
||||
}
|
||||
|
||||
class 'pkg/TestEnum$1' {
|
||||
@@ -59,5 +59,5 @@ Lines mapping:
|
||||
22 <-> 7
|
||||
27 <-> 12
|
||||
30 <-> 18
|
||||
34 <-> 22
|
||||
35 <-> 26
|
||||
34 <-> 21
|
||||
35 <-> 25
|
||||
|
||||
Reference in New Issue
Block a user