RemoveRepeatsStrategy.java
3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package com.crashlytics.android.core;
import java.util.HashMap;
import java.util.Map;
class RemoveRepeatsStrategy
implements StackTraceTrimmingStrategy
{
private final int maxRepetitions;
public RemoveRepeatsStrategy()
{
this(1);
}
public RemoveRepeatsStrategy(int paramInt)
{
this.maxRepetitions = paramInt;
}
private static boolean isRepeatingSequence(StackTraceElement[] paramArrayOfStackTraceElement, int paramInt1, int paramInt2)
{
int j = paramInt2 - paramInt1;
if (paramInt2 + j > paramArrayOfStackTraceElement.length) {
return false;
}
int i = 0;
for (;;)
{
if (i >= j) {
break label47;
}
if (!paramArrayOfStackTraceElement[(paramInt1 + i)].equals(paramArrayOfStackTraceElement[(paramInt2 + i)])) {
break;
}
i += 1;
}
label47:
return true;
}
private static StackTraceElement[] trimRepeats(StackTraceElement[] paramArrayOfStackTraceElement, int paramInt)
{
HashMap localHashMap = new HashMap();
StackTraceElement[] arrayOfStackTraceElement = new StackTraceElement[paramArrayOfStackTraceElement.length];
int i = 0;
int k = 1;
int m = 0;
if (i < paramArrayOfStackTraceElement.length)
{
StackTraceElement localStackTraceElement = paramArrayOfStackTraceElement[i];
Integer localInteger = (Integer)localHashMap.get(localStackTraceElement);
int j;
if ((localInteger == null) || (!isRepeatingSequence(paramArrayOfStackTraceElement, localInteger.intValue(), i)))
{
arrayOfStackTraceElement[m] = paramArrayOfStackTraceElement[i];
j = m + 1;
m = i;
}
int n;
for (k = 1;; k = n)
{
localHashMap.put(localStackTraceElement, Integer.valueOf(i));
i = m + 1;
m = j;
break;
int i1 = i - localInteger.intValue();
n = k;
j = m;
if (k < paramInt)
{
System.arraycopy(paramArrayOfStackTraceElement, i, arrayOfStackTraceElement, m, i1);
j = m + i1;
n = k + 1;
}
m = i1 - 1 + i;
}
}
paramArrayOfStackTraceElement = new StackTraceElement[m];
System.arraycopy(arrayOfStackTraceElement, 0, paramArrayOfStackTraceElement, 0, paramArrayOfStackTraceElement.length);
return paramArrayOfStackTraceElement;
}
public StackTraceElement[] getTrimmedStackTrace(StackTraceElement[] paramArrayOfStackTraceElement)
{
StackTraceElement[] arrayOfStackTraceElement2 = trimRepeats(paramArrayOfStackTraceElement, this.maxRepetitions);
StackTraceElement[] arrayOfStackTraceElement1 = paramArrayOfStackTraceElement;
if (arrayOfStackTraceElement2.length < paramArrayOfStackTraceElement.length) {
arrayOfStackTraceElement1 = arrayOfStackTraceElement2;
}
return arrayOfStackTraceElement1;
}
}
/* Location: /home/merong/decompile/hackery-dex2jar.jar!/com/crashlytics/android/core/RemoveRepeatsStrategy.class
* Java compiler version: 6 (50.0)
* JD-Core Version: 0.7.1
*/