CircularArray.smali 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822
  1. .class public final Landroid/support/v4/util/CircularArray;
  2. .super Ljava/lang/Object;
  3. .source "CircularArray.java"
  4. # annotations
  5. .annotation system Ldalvik/annotation/Signature;
  6. value = {
  7. "<E:",
  8. "Ljava/lang/Object;",
  9. ">",
  10. "Ljava/lang/Object;"
  11. }
  12. .end annotation
  13. # instance fields
  14. .field private mCapacityBitmask:I
  15. .field private mElements:[Ljava/lang/Object;
  16. .annotation system Ldalvik/annotation/Signature;
  17. value = {
  18. "[TE;"
  19. }
  20. .end annotation
  21. .end field
  22. .field private mHead:I
  23. .field private mTail:I
  24. # direct methods
  25. .method public constructor <init>()V
  26. .locals 1
  27. .prologue
  28. .line 47
  29. .local p0, "this":Landroid/support/v4/util/CircularArray;, "Landroid/support/v4/util/CircularArray<TE;>;"
  30. const/16 v0, 0x8
  31. invoke-direct {p0, v0}, Landroid/support/v4/util/CircularArray;-><init>(I)V
  32. .line 48
  33. return-void
  34. .end method
  35. .method public constructor <init>(I)V
  36. .locals 3
  37. .param p1, "minCapacity" # I
  38. .prologue
  39. .local p0, "this":Landroid/support/v4/util/CircularArray;, "Landroid/support/v4/util/CircularArray<TE;>;"
  40. const/4 v2, 0x1
  41. .line 56
  42. invoke-direct {p0}, Ljava/lang/Object;-><init>()V
  43. .line 57
  44. if-ge p1, v2, :cond_0
  45. .line 58
  46. new-instance v1, Ljava/lang/IllegalArgumentException;
  47. const-string v2, "capacity must be >= 1"
  48. invoke-direct {v1, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
  49. throw v1
  50. .line 60
  51. :cond_0
  52. const/high16 v1, 0x40000000 # 2.0f
  53. if-le p1, v1, :cond_1
  54. .line 61
  55. new-instance v1, Ljava/lang/IllegalArgumentException;
  56. const-string v2, "capacity must be <= 2^30"
  57. invoke-direct {v1, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
  58. throw v1
  59. .line 67
  60. :cond_1
  61. invoke-static {p1}, Ljava/lang/Integer;->bitCount(I)I
  62. move-result v1
  63. if-eq v1, v2, :cond_2
  64. .line 68
  65. add-int/lit8 v1, p1, -0x1
  66. invoke-static {v1}, Ljava/lang/Integer;->highestOneBit(I)I
  67. move-result v1
  68. shl-int/lit8 v0, v1, 0x1
  69. .line 73
  70. .local v0, "arrayCapacity":I
  71. :goto_0
  72. add-int/lit8 v1, v0, -0x1
  73. iput v1, p0, Landroid/support/v4/util/CircularArray;->mCapacityBitmask:I
  74. .line 74
  75. new-array v1, v0, [Ljava/lang/Object;
  76. check-cast v1, [Ljava/lang/Object;
  77. iput-object v1, p0, Landroid/support/v4/util/CircularArray;->mElements:[Ljava/lang/Object;
  78. .line 75
  79. return-void
  80. .line 70
  81. .end local v0 # "arrayCapacity":I
  82. :cond_2
  83. move v0, p1
  84. .restart local v0 # "arrayCapacity":I
  85. goto :goto_0
  86. .end method
  87. .method private doubleCapacity()V
  88. .locals 7
  89. .prologue
  90. .local p0, "this":Landroid/support/v4/util/CircularArray;, "Landroid/support/v4/util/CircularArray<TE;>;"
  91. const/4 v6, 0x0
  92. .line 28
  93. iget-object v4, p0, Landroid/support/v4/util/CircularArray;->mElements:[Ljava/lang/Object;
  94. array-length v1, v4
  95. .line 29
  96. .local v1, "n":I
  97. iget v4, p0, Landroid/support/v4/util/CircularArray;->mHead:I
  98. sub-int v3, v1, v4
  99. .line 30
  100. .local v3, "r":I
  101. shl-int/lit8 v2, v1, 0x1
  102. .line 31
  103. .local v2, "newCapacity":I
  104. if-gez v2, :cond_0
  105. .line 32
  106. new-instance v4, Ljava/lang/RuntimeException;
  107. const-string v5, "Max array capacity exceeded"
  108. invoke-direct {v4, v5}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
  109. throw v4
  110. .line 34
  111. :cond_0
  112. new-array v0, v2, [Ljava/lang/Object;
  113. .line 35
  114. .local v0, "a":[Ljava/lang/Object;
  115. iget-object v4, p0, Landroid/support/v4/util/CircularArray;->mElements:[Ljava/lang/Object;
  116. iget v5, p0, Landroid/support/v4/util/CircularArray;->mHead:I
  117. invoke-static {v4, v5, v0, v6, v3}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
  118. .line 36
  119. iget-object v4, p0, Landroid/support/v4/util/CircularArray;->mElements:[Ljava/lang/Object;
  120. iget v5, p0, Landroid/support/v4/util/CircularArray;->mHead:I
  121. invoke-static {v4, v6, v0, v3, v5}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
  122. .line 37
  123. check-cast v0, [Ljava/lang/Object;
  124. .end local v0 # "a":[Ljava/lang/Object;
  125. iput-object v0, p0, Landroid/support/v4/util/CircularArray;->mElements:[Ljava/lang/Object;
  126. .line 38
  127. iput v6, p0, Landroid/support/v4/util/CircularArray;->mHead:I
  128. .line 39
  129. iput v1, p0, Landroid/support/v4/util/CircularArray;->mTail:I
  130. .line 40
  131. add-int/lit8 v4, v2, -0x1
  132. iput v4, p0, Landroid/support/v4/util/CircularArray;->mCapacityBitmask:I
  133. .line 41
  134. return-void
  135. .end method
  136. # virtual methods
  137. .method public addFirst(Ljava/lang/Object;)V
  138. .locals 2
  139. .annotation system Ldalvik/annotation/Signature;
  140. value = {
  141. "(TE;)V"
  142. }
  143. .end annotation
  144. .prologue
  145. .line 82
  146. .local p0, "this":Landroid/support/v4/util/CircularArray;, "Landroid/support/v4/util/CircularArray<TE;>;"
  147. .local p1, "e":Ljava/lang/Object;, "TE;"
  148. iget v0, p0, Landroid/support/v4/util/CircularArray;->mHead:I
  149. add-int/lit8 v0, v0, -0x1
  150. iget v1, p0, Landroid/support/v4/util/CircularArray;->mCapacityBitmask:I
  151. and-int/2addr v0, v1
  152. iput v0, p0, Landroid/support/v4/util/CircularArray;->mHead:I
  153. .line 83
  154. iget-object v0, p0, Landroid/support/v4/util/CircularArray;->mElements:[Ljava/lang/Object;
  155. iget v1, p0, Landroid/support/v4/util/CircularArray;->mHead:I
  156. aput-object p1, v0, v1
  157. .line 84
  158. iget v0, p0, Landroid/support/v4/util/CircularArray;->mHead:I
  159. iget v1, p0, Landroid/support/v4/util/CircularArray;->mTail:I
  160. if-ne v0, v1, :cond_0
  161. .line 85
  162. invoke-direct {p0}, Landroid/support/v4/util/CircularArray;->doubleCapacity()V
  163. .line 87
  164. :cond_0
  165. return-void
  166. .end method
  167. .method public addLast(Ljava/lang/Object;)V
  168. .locals 2
  169. .annotation system Ldalvik/annotation/Signature;
  170. value = {
  171. "(TE;)V"
  172. }
  173. .end annotation
  174. .prologue
  175. .line 94
  176. .local p0, "this":Landroid/support/v4/util/CircularArray;, "Landroid/support/v4/util/CircularArray<TE;>;"
  177. .local p1, "e":Ljava/lang/Object;, "TE;"
  178. iget-object v0, p0, Landroid/support/v4/util/CircularArray;->mElements:[Ljava/lang/Object;
  179. iget v1, p0, Landroid/support/v4/util/CircularArray;->mTail:I
  180. aput-object p1, v0, v1
  181. .line 95
  182. iget v0, p0, Landroid/support/v4/util/CircularArray;->mTail:I
  183. add-int/lit8 v0, v0, 0x1
  184. iget v1, p0, Landroid/support/v4/util/CircularArray;->mCapacityBitmask:I
  185. and-int/2addr v0, v1
  186. iput v0, p0, Landroid/support/v4/util/CircularArray;->mTail:I
  187. .line 96
  188. iget v0, p0, Landroid/support/v4/util/CircularArray;->mTail:I
  189. iget v1, p0, Landroid/support/v4/util/CircularArray;->mHead:I
  190. if-ne v0, v1, :cond_0
  191. .line 97
  192. invoke-direct {p0}, Landroid/support/v4/util/CircularArray;->doubleCapacity()V
  193. .line 99
  194. :cond_0
  195. return-void
  196. .end method
  197. .method public clear()V
  198. .locals 1
  199. .prologue
  200. .line 136
  201. .local p0, "this":Landroid/support/v4/util/CircularArray;, "Landroid/support/v4/util/CircularArray<TE;>;"
  202. invoke-virtual {p0}, Landroid/support/v4/util/CircularArray;->size()I
  203. move-result v0
  204. invoke-virtual {p0, v0}, Landroid/support/v4/util/CircularArray;->removeFromStart(I)V
  205. .line 137
  206. return-void
  207. .end method
  208. .method public get(I)Ljava/lang/Object;
  209. .locals 3
  210. .param p1, "n" # I
  211. .annotation system Ldalvik/annotation/Signature;
  212. value = {
  213. "(I)TE;"
  214. }
  215. .end annotation
  216. .prologue
  217. .line 238
  218. .local p0, "this":Landroid/support/v4/util/CircularArray;, "Landroid/support/v4/util/CircularArray<TE;>;"
  219. if-ltz p1, :cond_0
  220. invoke-virtual {p0}, Landroid/support/v4/util/CircularArray;->size()I
  221. move-result v0
  222. if-lt p1, v0, :cond_1
  223. .line 239
  224. :cond_0
  225. new-instance v0, Ljava/lang/ArrayIndexOutOfBoundsException;
  226. invoke-direct {v0}, Ljava/lang/ArrayIndexOutOfBoundsException;-><init>()V
  227. throw v0
  228. .line 241
  229. :cond_1
  230. iget-object v0, p0, Landroid/support/v4/util/CircularArray;->mElements:[Ljava/lang/Object;
  231. iget v1, p0, Landroid/support/v4/util/CircularArray;->mHead:I
  232. add-int/2addr v1, p1
  233. iget v2, p0, Landroid/support/v4/util/CircularArray;->mCapacityBitmask:I
  234. and-int/2addr v1, v2
  235. aget-object v0, v0, v1
  236. return-object v0
  237. .end method
  238. .method public getFirst()Ljava/lang/Object;
  239. .locals 2
  240. .annotation system Ldalvik/annotation/Signature;
  241. value = {
  242. "()TE;"
  243. }
  244. .end annotation
  245. .prologue
  246. .line 213
  247. .local p0, "this":Landroid/support/v4/util/CircularArray;, "Landroid/support/v4/util/CircularArray<TE;>;"
  248. iget v0, p0, Landroid/support/v4/util/CircularArray;->mHead:I
  249. iget v1, p0, Landroid/support/v4/util/CircularArray;->mTail:I
  250. if-ne v0, v1, :cond_0
  251. .line 214
  252. new-instance v0, Ljava/lang/ArrayIndexOutOfBoundsException;
  253. invoke-direct {v0}, Ljava/lang/ArrayIndexOutOfBoundsException;-><init>()V
  254. throw v0
  255. .line 216
  256. :cond_0
  257. iget-object v0, p0, Landroid/support/v4/util/CircularArray;->mElements:[Ljava/lang/Object;
  258. iget v1, p0, Landroid/support/v4/util/CircularArray;->mHead:I
  259. aget-object v0, v0, v1
  260. return-object v0
  261. .end method
  262. .method public getLast()Ljava/lang/Object;
  263. .locals 3
  264. .annotation system Ldalvik/annotation/Signature;
  265. value = {
  266. "()TE;"
  267. }
  268. .end annotation
  269. .prologue
  270. .line 225
  271. .local p0, "this":Landroid/support/v4/util/CircularArray;, "Landroid/support/v4/util/CircularArray<TE;>;"
  272. iget v0, p0, Landroid/support/v4/util/CircularArray;->mHead:I
  273. iget v1, p0, Landroid/support/v4/util/CircularArray;->mTail:I
  274. if-ne v0, v1, :cond_0
  275. .line 226
  276. new-instance v0, Ljava/lang/ArrayIndexOutOfBoundsException;
  277. invoke-direct {v0}, Ljava/lang/ArrayIndexOutOfBoundsException;-><init>()V
  278. throw v0
  279. .line 228
  280. :cond_0
  281. iget-object v0, p0, Landroid/support/v4/util/CircularArray;->mElements:[Ljava/lang/Object;
  282. iget v1, p0, Landroid/support/v4/util/CircularArray;->mTail:I
  283. add-int/lit8 v1, v1, -0x1
  284. iget v2, p0, Landroid/support/v4/util/CircularArray;->mCapacityBitmask:I
  285. and-int/2addr v1, v2
  286. aget-object v0, v0, v1
  287. return-object v0
  288. .end method
  289. .method public isEmpty()Z
  290. .locals 2
  291. .prologue
  292. .line 257
  293. .local p0, "this":Landroid/support/v4/util/CircularArray;, "Landroid/support/v4/util/CircularArray<TE;>;"
  294. iget v0, p0, Landroid/support/v4/util/CircularArray;->mHead:I
  295. iget v1, p0, Landroid/support/v4/util/CircularArray;->mTail:I
  296. if-ne v0, v1, :cond_0
  297. const/4 v0, 0x1
  298. :goto_0
  299. return v0
  300. :cond_0
  301. const/4 v0, 0x0
  302. goto :goto_0
  303. .end method
  304. .method public popFirst()Ljava/lang/Object;
  305. .locals 4
  306. .annotation system Ldalvik/annotation/Signature;
  307. value = {
  308. "()TE;"
  309. }
  310. .end annotation
  311. .prologue
  312. .line 107
  313. .local p0, "this":Landroid/support/v4/util/CircularArray;, "Landroid/support/v4/util/CircularArray<TE;>;"
  314. iget v1, p0, Landroid/support/v4/util/CircularArray;->mHead:I
  315. iget v2, p0, Landroid/support/v4/util/CircularArray;->mTail:I
  316. if-ne v1, v2, :cond_0
  317. .line 108
  318. new-instance v1, Ljava/lang/ArrayIndexOutOfBoundsException;
  319. invoke-direct {v1}, Ljava/lang/ArrayIndexOutOfBoundsException;-><init>()V
  320. throw v1
  321. .line 110
  322. :cond_0
  323. iget-object v1, p0, Landroid/support/v4/util/CircularArray;->mElements:[Ljava/lang/Object;
  324. iget v2, p0, Landroid/support/v4/util/CircularArray;->mHead:I
  325. aget-object v0, v1, v2
  326. .line 111
  327. .local v0, "result":Ljava/lang/Object;, "TE;"
  328. iget-object v1, p0, Landroid/support/v4/util/CircularArray;->mElements:[Ljava/lang/Object;
  329. iget v2, p0, Landroid/support/v4/util/CircularArray;->mHead:I
  330. const/4 v3, 0x0
  331. aput-object v3, v1, v2
  332. .line 112
  333. iget v1, p0, Landroid/support/v4/util/CircularArray;->mHead:I
  334. add-int/lit8 v1, v1, 0x1
  335. iget v2, p0, Landroid/support/v4/util/CircularArray;->mCapacityBitmask:I
  336. and-int/2addr v1, v2
  337. iput v1, p0, Landroid/support/v4/util/CircularArray;->mHead:I
  338. .line 113
  339. return-object v0
  340. .end method
  341. .method public popLast()Ljava/lang/Object;
  342. .locals 4
  343. .annotation system Ldalvik/annotation/Signature;
  344. value = {
  345. "()TE;"
  346. }
  347. .end annotation
  348. .prologue
  349. .line 122
  350. .local p0, "this":Landroid/support/v4/util/CircularArray;, "Landroid/support/v4/util/CircularArray<TE;>;"
  351. iget v2, p0, Landroid/support/v4/util/CircularArray;->mHead:I
  352. iget v3, p0, Landroid/support/v4/util/CircularArray;->mTail:I
  353. if-ne v2, v3, :cond_0
  354. .line 123
  355. new-instance v2, Ljava/lang/ArrayIndexOutOfBoundsException;
  356. invoke-direct {v2}, Ljava/lang/ArrayIndexOutOfBoundsException;-><init>()V
  357. throw v2
  358. .line 125
  359. :cond_0
  360. iget v2, p0, Landroid/support/v4/util/CircularArray;->mTail:I
  361. add-int/lit8 v2, v2, -0x1
  362. iget v3, p0, Landroid/support/v4/util/CircularArray;->mCapacityBitmask:I
  363. and-int v1, v2, v3
  364. .line 126
  365. .local v1, "t":I
  366. iget-object v2, p0, Landroid/support/v4/util/CircularArray;->mElements:[Ljava/lang/Object;
  367. aget-object v0, v2, v1
  368. .line 127
  369. .local v0, "result":Ljava/lang/Object;, "TE;"
  370. iget-object v2, p0, Landroid/support/v4/util/CircularArray;->mElements:[Ljava/lang/Object;
  371. const/4 v3, 0x0
  372. aput-object v3, v2, v1
  373. .line 128
  374. iput v1, p0, Landroid/support/v4/util/CircularArray;->mTail:I
  375. .line 129
  376. return-object v0
  377. .end method
  378. .method public removeFromEnd(I)V
  379. .locals 6
  380. .param p1, "numOfElements" # I
  381. .prologue
  382. .local p0, "this":Landroid/support/v4/util/CircularArray;, "Landroid/support/v4/util/CircularArray<TE;>;"
  383. const/4 v5, 0x0
  384. .line 180
  385. if-gtz p1, :cond_1
  386. .line 205
  387. :cond_0
  388. :goto_0
  389. return-void
  390. .line 183
  391. :cond_1
  392. invoke-virtual {p0}, Landroid/support/v4/util/CircularArray;->size()I
  393. move-result v4
  394. if-le p1, v4, :cond_2
  395. .line 184
  396. new-instance v4, Ljava/lang/ArrayIndexOutOfBoundsException;
  397. invoke-direct {v4}, Ljava/lang/ArrayIndexOutOfBoundsException;-><init>()V
  398. throw v4
  399. .line 186
  400. :cond_2
  401. const/4 v3, 0x0
  402. .line 187
  403. .local v3, "start":I
  404. iget v4, p0, Landroid/support/v4/util/CircularArray;->mTail:I
  405. if-ge p1, v4, :cond_3
  406. .line 188
  407. iget v4, p0, Landroid/support/v4/util/CircularArray;->mTail:I
  408. sub-int v3, v4, p1
  409. .line 190
  410. :cond_3
  411. move v0, v3
  412. .local v0, "i":I
  413. :goto_1
  414. iget v4, p0, Landroid/support/v4/util/CircularArray;->mTail:I
  415. if-ge v0, v4, :cond_4
  416. .line 191
  417. iget-object v4, p0, Landroid/support/v4/util/CircularArray;->mElements:[Ljava/lang/Object;
  418. aput-object v5, v4, v0
  419. .line 190
  420. add-int/lit8 v0, v0, 0x1
  421. goto :goto_1
  422. .line 193
  423. :cond_4
  424. iget v4, p0, Landroid/support/v4/util/CircularArray;->mTail:I
  425. sub-int v2, v4, v3
  426. .line 194
  427. .local v2, "removed":I
  428. sub-int/2addr p1, v2
  429. .line 195
  430. iget v4, p0, Landroid/support/v4/util/CircularArray;->mTail:I
  431. sub-int/2addr v4, v2
  432. iput v4, p0, Landroid/support/v4/util/CircularArray;->mTail:I
  433. .line 196
  434. if-lez p1, :cond_0
  435. .line 198
  436. iget-object v4, p0, Landroid/support/v4/util/CircularArray;->mElements:[Ljava/lang/Object;
  437. array-length v4, v4
  438. iput v4, p0, Landroid/support/v4/util/CircularArray;->mTail:I
  439. .line 199
  440. iget v4, p0, Landroid/support/v4/util/CircularArray;->mTail:I
  441. sub-int v1, v4, p1
  442. .line 200
  443. .local v1, "newTail":I
  444. move v0, v1
  445. :goto_2
  446. iget v4, p0, Landroid/support/v4/util/CircularArray;->mTail:I
  447. if-ge v0, v4, :cond_5
  448. .line 201
  449. iget-object v4, p0, Landroid/support/v4/util/CircularArray;->mElements:[Ljava/lang/Object;
  450. aput-object v5, v4, v0
  451. .line 200
  452. add-int/lit8 v0, v0, 0x1
  453. goto :goto_2
  454. .line 203
  455. :cond_5
  456. iput v1, p0, Landroid/support/v4/util/CircularArray;->mTail:I
  457. goto :goto_0
  458. .end method
  459. .method public removeFromStart(I)V
  460. .locals 6
  461. .param p1, "numOfElements" # I
  462. .prologue
  463. .local p0, "this":Landroid/support/v4/util/CircularArray;, "Landroid/support/v4/util/CircularArray<TE;>;"
  464. const/4 v5, 0x0
  465. .line 147
  466. if-gtz p1, :cond_1
  467. .line 170
  468. :cond_0
  469. :goto_0
  470. return-void
  471. .line 150
  472. :cond_1
  473. invoke-virtual {p0}, Landroid/support/v4/util/CircularArray;->size()I
  474. move-result v3
  475. if-le p1, v3, :cond_2
  476. .line 151
  477. new-instance v3, Ljava/lang/ArrayIndexOutOfBoundsException;
  478. invoke-direct {v3}, Ljava/lang/ArrayIndexOutOfBoundsException;-><init>()V
  479. throw v3
  480. .line 153
  481. :cond_2
  482. iget-object v3, p0, Landroid/support/v4/util/CircularArray;->mElements:[Ljava/lang/Object;
  483. array-length v0, v3
  484. .line 154
  485. .local v0, "end":I
  486. iget v3, p0, Landroid/support/v4/util/CircularArray;->mHead:I
  487. sub-int v3, v0, v3
  488. if-ge p1, v3, :cond_3
  489. .line 155
  490. iget v3, p0, Landroid/support/v4/util/CircularArray;->mHead:I
  491. add-int v0, v3, p1
  492. .line 157
  493. :cond_3
  494. iget v1, p0, Landroid/support/v4/util/CircularArray;->mHead:I
  495. .local v1, "i":I
  496. :goto_1
  497. if-ge v1, v0, :cond_4
  498. .line 158
  499. iget-object v3, p0, Landroid/support/v4/util/CircularArray;->mElements:[Ljava/lang/Object;
  500. aput-object v5, v3, v1
  501. .line 157
  502. add-int/lit8 v1, v1, 0x1
  503. goto :goto_1
  504. .line 160
  505. :cond_4
  506. iget v3, p0, Landroid/support/v4/util/CircularArray;->mHead:I
  507. sub-int v2, v0, v3
  508. .line 161
  509. .local v2, "removed":I
  510. sub-int/2addr p1, v2
  511. .line 162
  512. iget v3, p0, Landroid/support/v4/util/CircularArray;->mHead:I
  513. add-int/2addr v3, v2
  514. iget v4, p0, Landroid/support/v4/util/CircularArray;->mCapacityBitmask:I
  515. and-int/2addr v3, v4
  516. iput v3, p0, Landroid/support/v4/util/CircularArray;->mHead:I
  517. .line 163
  518. if-lez p1, :cond_0
  519. .line 165
  520. const/4 v1, 0x0
  521. :goto_2
  522. if-ge v1, p1, :cond_5
  523. .line 166
  524. iget-object v3, p0, Landroid/support/v4/util/CircularArray;->mElements:[Ljava/lang/Object;
  525. aput-object v5, v3, v1
  526. .line 165
  527. add-int/lit8 v1, v1, 0x1
  528. goto :goto_2
  529. .line 168
  530. :cond_5
  531. iput p1, p0, Landroid/support/v4/util/CircularArray;->mHead:I
  532. goto :goto_0
  533. .end method
  534. .method public size()I
  535. .locals 2
  536. .prologue
  537. .line 249
  538. .local p0, "this":Landroid/support/v4/util/CircularArray;, "Landroid/support/v4/util/CircularArray<TE;>;"
  539. iget v0, p0, Landroid/support/v4/util/CircularArray;->mTail:I
  540. iget v1, p0, Landroid/support/v4/util/CircularArray;->mHead:I
  541. sub-int/2addr v0, v1
  542. iget v1, p0, Landroid/support/v4/util/CircularArray;->mCapacityBitmask:I
  543. and-int/2addr v0, v1
  544. return v0
  545. .end method