package o; import com.huawei.hms.framework.common.ContainerUtils; import java.util.LinkedHashMap; import java.util.Locale; import java.util.Map; /* loaded from: classes.dex */ public class pKi { private int createCount; private int evictionCount; private int hitCount; private final LinkedHashMap map; private int maxSize; private int missCount; private int putCount; private int size; protected V create(K k) { return null; } protected void entryRemoved(boolean z, K k, V v, V v2) { } protected int sizeOf(K k, V v) { return 1; } public pKi(int i) { if (i <= 0) { throw new IllegalArgumentException("maxSize <= 0"); } this.maxSize = i; this.map = new LinkedHashMap<>(0, 0.75f, true); } public void resize(int i) { if (i <= 0) { throw new IllegalArgumentException("maxSize <= 0"); } synchronized (this) { this.maxSize = i; } trimToSize(i); } public final V get(K k) { V v; if (k == null) { throw new NullPointerException("key == null"); } synchronized (this) { V v2 = this.map.get(k); if (v2 != null) { this.hitCount++; return v2; } this.missCount++; V create = create(k); if (create == null) { return null; } synchronized (this) { this.createCount++; v = (V) this.map.put(k, create); if (v != null) { this.map.put(k, v); } else { this.size += safeSizeOf(k, create); } } if (v != null) { entryRemoved(false, k, create, v); return v; } trimToSize(this.maxSize); return create; } } public final V put(K k, V v) { V put; if (k == null || v == null) { throw new NullPointerException("key == null || value == null"); } synchronized (this) { this.putCount++; this.size += safeSizeOf(k, v); put = this.map.put(k, v); if (put != null) { this.size -= safeSizeOf(k, put); } } if (put != null) { entryRemoved(false, k, put, v); } trimToSize(this.maxSize); return put; } /* JADX WARN: Code restructure failed: missing block: B:11:0x0070, code lost: throw new java.lang.IllegalStateException(getClass().getName() + ".sizeOf() is reporting inconsistent results!"); */ /* Code decompiled incorrectly, please refer to instructions dump. To view partially-correct add '--show-bad-code' argument */ public void trimToSize(int r5) { /* r4 = this; L0: monitor-enter(r4) int r0 = r4.size // Catch: java.lang.Throwable -> L71 if (r0 < 0) goto L52 java.util.LinkedHashMap r0 = r4.map // Catch: java.lang.Throwable -> L71 boolean r0 = r0.isEmpty() // Catch: java.lang.Throwable -> L71 if (r0 == 0) goto L11 int r0 = r4.size // Catch: java.lang.Throwable -> L71 if (r0 != 0) goto L52 L11: int r0 = r4.size // Catch: java.lang.Throwable -> L71 if (r0 <= r5) goto L50 java.util.LinkedHashMap r0 = r4.map // Catch: java.lang.Throwable -> L71 boolean r0 = r0.isEmpty() // Catch: java.lang.Throwable -> L71 if (r0 == 0) goto L1e goto L50 L1e: java.util.LinkedHashMap r0 = r4.map // Catch: java.lang.Throwable -> L71 java.util.Set r0 = r0.entrySet() // Catch: java.lang.Throwable -> L71 java.util.Iterator r0 = r0.iterator() // Catch: java.lang.Throwable -> L71 java.lang.Object r0 = r0.next() // Catch: java.lang.Throwable -> L71 java.util.Map$Entry r0 = (java.util.Map.Entry) r0 // Catch: java.lang.Throwable -> L71 java.lang.Object r1 = r0.getKey() // Catch: java.lang.Throwable -> L71 java.lang.Object r0 = r0.getValue() // Catch: java.lang.Throwable -> L71 java.util.LinkedHashMap r2 = r4.map // Catch: java.lang.Throwable -> L71 r2.remove(r1) // Catch: java.lang.Throwable -> L71 int r2 = r4.size // Catch: java.lang.Throwable -> L71 int r3 = r4.safeSizeOf(r1, r0) // Catch: java.lang.Throwable -> L71 int r2 = r2 - r3 r4.size = r2 // Catch: java.lang.Throwable -> L71 int r2 = r4.evictionCount // Catch: java.lang.Throwable -> L71 r3 = 1 int r2 = r2 + r3 r4.evictionCount = r2 // Catch: java.lang.Throwable -> L71 monitor-exit(r4) // Catch: java.lang.Throwable -> L71 r2 = 0 r4.entryRemoved(r3, r1, r0, r2) goto L0 L50: monitor-exit(r4) // Catch: java.lang.Throwable -> L71 return L52: java.lang.IllegalStateException r5 = new java.lang.IllegalStateException // Catch: java.lang.Throwable -> L71 java.lang.StringBuilder r0 = new java.lang.StringBuilder // Catch: java.lang.Throwable -> L71 r0.() // Catch: java.lang.Throwable -> L71 java.lang.Class r1 = r4.getClass() // Catch: java.lang.Throwable -> L71 java.lang.String r1 = r1.getName() // Catch: java.lang.Throwable -> L71 r0.append(r1) // Catch: java.lang.Throwable -> L71 java.lang.String r1 = ".sizeOf() is reporting inconsistent results!" r0.append(r1) // Catch: java.lang.Throwable -> L71 java.lang.String r0 = r0.toString() // Catch: java.lang.Throwable -> L71 r5.(r0) // Catch: java.lang.Throwable -> L71 throw r5 // Catch: java.lang.Throwable -> L71 L71: r5 = move-exception monitor-exit(r4) // Catch: java.lang.Throwable -> L71 throw r5 */ throw new UnsupportedOperationException("Method not decompiled: o.pKi.trimToSize(int):void"); } public final V remove(K k) { V remove; if (k == null) { throw new NullPointerException("key == null"); } synchronized (this) { remove = this.map.remove(k); if (remove != null) { this.size -= safeSizeOf(k, remove); } } if (remove != null) { entryRemoved(false, k, remove, null); } return remove; } private int safeSizeOf(K k, V v) { int sizeOf = sizeOf(k, v); if (sizeOf >= 0) { return sizeOf; } throw new IllegalStateException("Negative size: " + k + ContainerUtils.KEY_VALUE_DELIMITER + v); } public final void evictAll() { trimToSize(-1); } public final int size() { int i; synchronized (this) { i = this.size; } return i; } public final int maxSize() { int i; synchronized (this) { i = this.maxSize; } return i; } public final int hitCount() { int i; synchronized (this) { i = this.hitCount; } return i; } public final int missCount() { int i; synchronized (this) { i = this.missCount; } return i; } public final int createCount() { int i; synchronized (this) { i = this.createCount; } return i; } public final int putCount() { int i; synchronized (this) { i = this.putCount; } return i; } public final int evictionCount() { int i; synchronized (this) { i = this.evictionCount; } return i; } public final Map snapshot() { LinkedHashMap linkedHashMap; synchronized (this) { linkedHashMap = new LinkedHashMap(this.map); } return linkedHashMap; } public final String toString() { String format; synchronized (this) { int i = this.hitCount; int i2 = this.missCount + i; format = String.format(Locale.US, "LruCache[maxSize=%d,hits=%d,misses=%d,hitRate=%d%%]", Integer.valueOf(this.maxSize), Integer.valueOf(this.hitCount), Integer.valueOf(this.missCount), Integer.valueOf(i2 != 0 ? (i * 100) / i2 : 0)); } return format; } }