Pools$SimplePool.smali 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. .class public Landroid/support/v4/util/Pools$SimplePool;
  2. .super Ljava/lang/Object;
  3. .source "Pools.java"
  4. # interfaces
  5. .implements Landroid/support/v4/util/Pools$Pool;
  6. # annotations
  7. .annotation system Ldalvik/annotation/EnclosingClass;
  8. value = Landroid/support/v4/util/Pools;
  9. .end annotation
  10. .annotation system Ldalvik/annotation/InnerClass;
  11. accessFlags = 0x9
  12. name = "SimplePool"
  13. .end annotation
  14. .annotation system Ldalvik/annotation/Signature;
  15. value = {
  16. "<T:",
  17. "Ljava/lang/Object;",
  18. ">",
  19. "Ljava/lang/Object;",
  20. "Landroid/support/v4/util/Pools$Pool",
  21. "<TT;>;"
  22. }
  23. .end annotation
  24. # instance fields
  25. .field private final mPool:[Ljava/lang/Object;
  26. .field private mPoolSize:I
  27. # direct methods
  28. .method public constructor <init>(I)V
  29. .locals 2
  30. .param p1, "maxPoolSize" # I
  31. .prologue
  32. .line 90
  33. .local p0, "this":Landroid/support/v4/util/Pools$SimplePool;, "Landroid/support/v4/util/Pools$SimplePool<TT;>;"
  34. invoke-direct {p0}, Ljava/lang/Object;-><init>()V
  35. .line 91
  36. if-gtz p1, :cond_0
  37. .line 92
  38. new-instance v0, Ljava/lang/IllegalArgumentException;
  39. const-string v1, "The max pool size must be > 0"
  40. invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
  41. throw v0
  42. .line 94
  43. :cond_0
  44. new-array v0, p1, [Ljava/lang/Object;
  45. iput-object v0, p0, Landroid/support/v4/util/Pools$SimplePool;->mPool:[Ljava/lang/Object;
  46. .line 95
  47. return-void
  48. .end method
  49. .method private isInPool(Ljava/lang/Object;)Z
  50. .locals 2
  51. .annotation system Ldalvik/annotation/Signature;
  52. value = {
  53. "(TT;)Z"
  54. }
  55. .end annotation
  56. .prologue
  57. .line 124
  58. .local p0, "this":Landroid/support/v4/util/Pools$SimplePool;, "Landroid/support/v4/util/Pools$SimplePool<TT;>;"
  59. .local p1, "instance":Ljava/lang/Object;, "TT;"
  60. const/4 v0, 0x0
  61. .local v0, "i":I
  62. :goto_0
  63. iget v1, p0, Landroid/support/v4/util/Pools$SimplePool;->mPoolSize:I
  64. if-ge v0, v1, :cond_1
  65. .line 125
  66. iget-object v1, p0, Landroid/support/v4/util/Pools$SimplePool;->mPool:[Ljava/lang/Object;
  67. aget-object v1, v1, v0
  68. if-ne v1, p1, :cond_0
  69. .line 126
  70. const/4 v1, 0x1
  71. .line 129
  72. :goto_1
  73. return v1
  74. .line 124
  75. :cond_0
  76. add-int/lit8 v0, v0, 0x1
  77. goto :goto_0
  78. .line 129
  79. :cond_1
  80. const/4 v1, 0x0
  81. goto :goto_1
  82. .end method
  83. # virtual methods
  84. .method public acquire()Ljava/lang/Object;
  85. .locals 4
  86. .annotation system Ldalvik/annotation/Signature;
  87. value = {
  88. "()TT;"
  89. }
  90. .end annotation
  91. .prologue
  92. .local p0, "this":Landroid/support/v4/util/Pools$SimplePool;, "Landroid/support/v4/util/Pools$SimplePool<TT;>;"
  93. const/4 v2, 0x0
  94. .line 100
  95. iget v3, p0, Landroid/support/v4/util/Pools$SimplePool;->mPoolSize:I
  96. if-lez v3, :cond_0
  97. .line 101
  98. iget v3, p0, Landroid/support/v4/util/Pools$SimplePool;->mPoolSize:I
  99. add-int/lit8 v1, v3, -0x1
  100. .line 102
  101. .local v1, "lastPooledIndex":I
  102. iget-object v3, p0, Landroid/support/v4/util/Pools$SimplePool;->mPool:[Ljava/lang/Object;
  103. aget-object v0, v3, v1
  104. .line 103
  105. .local v0, "instance":Ljava/lang/Object;, "TT;"
  106. iget-object v3, p0, Landroid/support/v4/util/Pools$SimplePool;->mPool:[Ljava/lang/Object;
  107. aput-object v2, v3, v1
  108. .line 104
  109. iget v2, p0, Landroid/support/v4/util/Pools$SimplePool;->mPoolSize:I
  110. add-int/lit8 v2, v2, -0x1
  111. iput v2, p0, Landroid/support/v4/util/Pools$SimplePool;->mPoolSize:I
  112. .line 107
  113. .end local v0 # "instance":Ljava/lang/Object;, "TT;"
  114. .end local v1 # "lastPooledIndex":I
  115. :goto_0
  116. return-object v0
  117. :cond_0
  118. move-object v0, v2
  119. goto :goto_0
  120. .end method
  121. .method public release(Ljava/lang/Object;)Z
  122. .locals 2
  123. .annotation system Ldalvik/annotation/Signature;
  124. value = {
  125. "(TT;)Z"
  126. }
  127. .end annotation
  128. .prologue
  129. .line 112
  130. .local p0, "this":Landroid/support/v4/util/Pools$SimplePool;, "Landroid/support/v4/util/Pools$SimplePool<TT;>;"
  131. .local p1, "instance":Ljava/lang/Object;, "TT;"
  132. invoke-direct {p0, p1}, Landroid/support/v4/util/Pools$SimplePool;->isInPool(Ljava/lang/Object;)Z
  133. move-result v0
  134. if-eqz v0, :cond_0
  135. .line 113
  136. new-instance v0, Ljava/lang/IllegalStateException;
  137. const-string v1, "Already in the pool!"
  138. invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
  139. throw v0
  140. .line 115
  141. :cond_0
  142. iget v0, p0, Landroid/support/v4/util/Pools$SimplePool;->mPoolSize:I
  143. iget-object v1, p0, Landroid/support/v4/util/Pools$SimplePool;->mPool:[Ljava/lang/Object;
  144. array-length v1, v1
  145. if-ge v0, v1, :cond_1
  146. .line 116
  147. iget-object v0, p0, Landroid/support/v4/util/Pools$SimplePool;->mPool:[Ljava/lang/Object;
  148. iget v1, p0, Landroid/support/v4/util/Pools$SimplePool;->mPoolSize:I
  149. aput-object p1, v0, v1
  150. .line 117
  151. iget v0, p0, Landroid/support/v4/util/Pools$SimplePool;->mPoolSize:I
  152. add-int/lit8 v0, v0, 0x1
  153. iput v0, p0, Landroid/support/v4/util/Pools$SimplePool;->mPoolSize:I
  154. .line 118
  155. const/4 v0, 0x1
  156. .line 120
  157. :goto_0
  158. return v0
  159. :cond_1
  160. const/4 v0, 0x0
  161. goto :goto_0
  162. .end method