package android.support.v4.util; import java.util.LinkedHashMap; import java.util.Map; public class LruCache<K, V> { private int createCount; private int evictionCount; private int hitCount; private final LinkedHashMap<K, V> map; private int maxSize; private int missCount; private int putCount; private int size; public LruCache(int paramInt) { if (paramInt <= 0) { throw new IllegalArgumentException("maxSize <= 0"); } this.maxSize = paramInt; this.map = new LinkedHashMap(0, 0.75F, true); } private int safeSizeOf(K paramK, V paramV) { int i = sizeOf(paramK, paramV); if (i < 0) { throw new IllegalStateException("Negative size: " + paramK + "=" + paramV); } return i; } protected V create(K paramK) { return null; } /** * @deprecated */ public final int createCount() { try { int i = this.createCount; return i; } finally { localObject = finally; throw localObject; } } protected void entryRemoved(boolean paramBoolean, K paramK, V paramV1, V paramV2) {} public final void evictAll() { trimToSize(-1); } /** * @deprecated */ public final int evictionCount() { try { int i = this.evictionCount; return i; } finally { localObject = finally; throw localObject; } } public final V get(K paramK) { if (paramK == null) { throw new NullPointerException("key == null"); } Object localObject3; try { Object localObject2 = this.map.get(paramK); if (localObject2 != null) { this.hitCount = (1 + this.hitCount); localObject3 = localObject2; } else { this.missCount = (1 + this.missCount); localObject3 = create(paramK); if (localObject3 == null) { localObject3 = null; } } } finally {} try { this.createCount = (1 + this.createCount); Object localObject5 = this.map.put(paramK, localObject3); if (localObject5 != null) { this.map.put(paramK, localObject5); } for (;;) { if (localObject5 == null) { break; } entryRemoved(false, paramK, localObject3, localObject5); localObject3 = localObject5; break label180; this.size += safeSizeOf(paramK, localObject3); } trimToSize(this.maxSize); } finally {} label180: return localObject3; } /** * @deprecated */ public final int hitCount() { try { int i = this.hitCount; return i; } finally { localObject = finally; throw localObject; } } /** * @deprecated */ public final int maxSize() { try { int i = this.maxSize; return i; } finally { localObject = finally; throw localObject; } } /** * @deprecated */ public final int missCount() { try { int i = this.missCount; return i; } finally { localObject = finally; throw localObject; } } public final V put(K paramK, V paramV) { if ((paramK == null) || (paramV == null)) { throw new NullPointerException("key == null || value == null"); } try { this.putCount = (1 + this.putCount); this.size += safeSizeOf(paramK, paramV); Object localObject2 = this.map.put(paramK, paramV); if (localObject2 != null) { this.size -= safeSizeOf(paramK, localObject2); } if (localObject2 != null) { entryRemoved(false, paramK, localObject2, paramV); } trimToSize(this.maxSize); return localObject2; } finally {} } /** * @deprecated */ public final int putCount() { try { int i = this.putCount; return i; } finally { localObject = finally; throw localObject; } } public final V remove(K paramK) { if (paramK == null) { throw new NullPointerException("key == null"); } try { Object localObject2 = this.map.remove(paramK); if (localObject2 != null) { this.size -= safeSizeOf(paramK, localObject2); } if (localObject2 != null) { entryRemoved(false, paramK, localObject2, null); } return localObject2; } finally {} } /** * @deprecated */ public final int size() { try { int i = this.size; return i; } finally { localObject = finally; throw localObject; } } protected int sizeOf(K paramK, V paramV) { return 1; } /** * @deprecated */ public final Map<K, V> snapshot() { try { LinkedHashMap localLinkedHashMap = new LinkedHashMap(this.map); return localLinkedHashMap; } finally { localObject = finally; throw localObject; } } /** * @deprecated */ public final String toString() { int i = 0; try { int j = this.hitCount + this.missCount; if (j != 0) { i = 100 * this.hitCount / j; } Object[] arrayOfObject = new Object[4]; arrayOfObject[0] = Integer.valueOf(this.maxSize); arrayOfObject[1] = Integer.valueOf(this.hitCount); arrayOfObject[2] = Integer.valueOf(this.missCount); arrayOfObject[3] = Integer.valueOf(i); String str = String.format("LruCache[maxSize=%d,hits=%d,misses=%d,hitRate=%d%%]", arrayOfObject); return str; } finally { localObject = finally; throw localObject; } } /* Error */ public void trimToSize(int paramInt) { // Byte code: // 0: aload_0 // 1: monitorenter // 2: aload_0 // 3: getfield 99 android/support/v4/util/LruCache:size I // 6: iflt +20 -> 26 // 9: aload_0 // 10: getfield 38 android/support/v4/util/LruCache:map Ljava/util/LinkedHashMap; // 13: invokevirtual 131 java/util/LinkedHashMap:isEmpty ()Z // 16: ifeq +48 -> 64 // 19: aload_0 // 20: getfield 99 android/support/v4/util/LruCache:size I // 23: ifeq +41 -> 64 // 26: new 45 java/lang/IllegalStateException // 29: dup // 30: new 47 java/lang/StringBuilder // 33: dup // 34: invokespecial 48 java/lang/StringBuilder:<init> ()V // 37: aload_0 // 38: invokevirtual 135 java/lang/Object:getClass ()Ljava/lang/Class; // 41: invokevirtual 140 java/lang/Class:getName ()Ljava/lang/String; // 44: invokevirtual 54 java/lang/StringBuilder:append (Ljava/lang/String;)Ljava/lang/StringBuilder; // 47: ldc 142 // 49: invokevirtual 54 java/lang/StringBuilder:append (Ljava/lang/String;)Ljava/lang/StringBuilder; // 52: invokevirtual 63 java/lang/StringBuilder:toString ()Ljava/lang/String; // 55: invokespecial 64 java/lang/IllegalStateException:<init> (Ljava/lang/String;)V // 58: athrow // 59: astore_2 // 60: aload_0 // 61: monitorexit // 62: aload_2 // 63: athrow // 64: aload_0 // 65: getfield 99 android/support/v4/util/LruCache:size I // 68: iload_1 // 69: if_icmple +13 -> 82 // 72: aload_0 // 73: getfield 38 android/support/v4/util/LruCache:map Ljava/util/LinkedHashMap; // 76: invokevirtual 131 java/util/LinkedHashMap:isEmpty ()Z // 79: ifeq +6 -> 85 // 82: aload_0 // 83: monitorexit // 84: return // 85: aload_0 // 86: getfield 38 android/support/v4/util/LruCache:map Ljava/util/LinkedHashMap; // 89: invokevirtual 146 java/util/LinkedHashMap:entrySet ()Ljava/util/Set; // 92: invokeinterface 152 1 0 // 97: invokeinterface 158 1 0 // 102: checkcast 160 java/util/Map$Entry // 105: astore_3 // 106: aload_3 // 107: invokeinterface 163 1 0 // 112: astore 4 // 114: aload_3 // 115: invokeinterface 166 1 0 // 120: astore 5 // 122: aload_0 // 123: getfield 38 android/support/v4/util/LruCache:map Ljava/util/LinkedHashMap; // 126: aload 4 // 128: invokevirtual 108 java/util/LinkedHashMap:remove (Ljava/lang/Object;)Ljava/lang/Object; // 131: pop // 132: aload_0 // 133: aload_0 // 134: getfield 99 android/support/v4/util/LruCache:size I // 137: aload_0 // 138: aload 4 // 140: aload 5 // 142: invokespecial 101 android/support/v4/util/LruCache:safeSizeOf (Ljava/lang/Object;Ljava/lang/Object;)I // 145: isub // 146: putfield 99 android/support/v4/util/LruCache:size I // 149: aload_0 // 150: iconst_1 // 151: aload_0 // 152: getfield 77 android/support/v4/util/LruCache:evictionCount I // 155: iadd // 156: putfield 77 android/support/v4/util/LruCache:evictionCount I // 159: aload_0 // 160: monitorexit // 161: aload_0 // 162: iconst_1 // 163: aload 4 // 165: aload 5 // 167: aconst_null // 168: invokevirtual 97 android/support/v4/util/LruCache:entryRemoved (ZLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V // 171: goto -171 -> 0 // Local variable table: // start length slot name signature // 0 174 0 this LruCache // 0 174 1 paramInt int // 59 4 2 localObject1 Object // 105 10 3 localEntry java.util.Map.Entry // 112 52 4 localObject2 Object // 120 46 5 localObject3 Object // Exception table: // from to target type // 2 62 59 finally // 64 161 59 finally } } /* Location: F:\neembuu\Research\android_apps\output_jar.jar * Qualified Name: android.support.v4.util.LruCache * JD-Core Version: 0.7.0.1 */