ContainerHelpers.smali 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. .class Landroid/support/v4/util/ContainerHelpers;
  2. .super Ljava/lang/Object;
  3. .source "ContainerHelpers.java"
  4. # static fields
  5. .field static final EMPTY_INTS:[I
  6. .field static final EMPTY_LONGS:[J
  7. .field static final EMPTY_OBJECTS:[Ljava/lang/Object;
  8. # direct methods
  9. .method static constructor <clinit>()V
  10. .locals 2
  11. .prologue
  12. const/4 v1, 0x0
  13. .line 20
  14. new-array v0, v1, [I
  15. sput-object v0, Landroid/support/v4/util/ContainerHelpers;->EMPTY_INTS:[I
  16. .line 21
  17. new-array v0, v1, [J
  18. sput-object v0, Landroid/support/v4/util/ContainerHelpers;->EMPTY_LONGS:[J
  19. .line 22
  20. new-array v0, v1, [Ljava/lang/Object;
  21. sput-object v0, Landroid/support/v4/util/ContainerHelpers;->EMPTY_OBJECTS:[Ljava/lang/Object;
  22. return-void
  23. .end method
  24. .method constructor <init>()V
  25. .locals 0
  26. .prologue
  27. .line 19
  28. invoke-direct {p0}, Ljava/lang/Object;-><init>()V
  29. return-void
  30. .end method
  31. .method static binarySearch([III)I
  32. .locals 5
  33. .param p0, "array" # [I
  34. .param p1, "size" # I
  35. .param p2, "value" # I
  36. .prologue
  37. .line 46
  38. const/4 v1, 0x0
  39. .line 47
  40. .local v1, "lo":I
  41. add-int/lit8 v0, p1, -0x1
  42. .line 49
  43. .local v0, "hi":I
  44. :goto_0
  45. if-gt v1, v0, :cond_1
  46. .line 50
  47. add-int v4, v1, v0
  48. ushr-int/lit8 v2, v4, 0x1
  49. .line 51
  50. .local v2, "mid":I
  51. aget v3, p0, v2
  52. .line 53
  53. .local v3, "midVal":I
  54. if-ge v3, p2, :cond_0
  55. .line 54
  56. add-int/lit8 v1, v2, 0x1
  57. goto :goto_0
  58. .line 55
  59. :cond_0
  60. if-le v3, p2, :cond_2
  61. .line 56
  62. add-int/lit8 v0, v2, -0x1
  63. goto :goto_0
  64. .line 61
  65. .end local v2 # "mid":I
  66. .end local v3 # "midVal":I
  67. :cond_1
  68. xor-int/lit8 v2, v1, -0x1
  69. :cond_2
  70. return v2
  71. .end method
  72. .method static binarySearch([JIJ)I
  73. .locals 6
  74. .param p0, "array" # [J
  75. .param p1, "size" # I
  76. .param p2, "value" # J
  77. .prologue
  78. .line 65
  79. const/4 v1, 0x0
  80. .line 66
  81. .local v1, "lo":I
  82. add-int/lit8 v0, p1, -0x1
  83. .line 68
  84. .local v0, "hi":I
  85. :goto_0
  86. if-gt v1, v0, :cond_1
  87. .line 69
  88. add-int v5, v1, v0
  89. ushr-int/lit8 v2, v5, 0x1
  90. .line 70
  91. .local v2, "mid":I
  92. aget-wide v3, p0, v2
  93. .line 72
  94. .local v3, "midVal":J
  95. cmp-long v5, v3, p2
  96. if-gez v5, :cond_0
  97. .line 73
  98. add-int/lit8 v1, v2, 0x1
  99. goto :goto_0
  100. .line 74
  101. :cond_0
  102. cmp-long v5, v3, p2
  103. if-lez v5, :cond_2
  104. .line 75
  105. add-int/lit8 v0, v2, -0x1
  106. goto :goto_0
  107. .line 80
  108. .end local v2 # "mid":I
  109. .end local v3 # "midVal":J
  110. :cond_1
  111. xor-int/lit8 v2, v1, -0x1
  112. :cond_2
  113. return v2
  114. .end method
  115. .method public static equal(Ljava/lang/Object;Ljava/lang/Object;)Z
  116. .locals 1
  117. .param p0, "a" # Ljava/lang/Object;
  118. .param p1, "b" # Ljava/lang/Object;
  119. .prologue
  120. .line 41
  121. if-eq p0, p1, :cond_0
  122. if-eqz p0, :cond_1
  123. invoke-virtual {p0, p1}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
  124. move-result v0
  125. if-eqz v0, :cond_1
  126. :cond_0
  127. const/4 v0, 0x1
  128. :goto_0
  129. return v0
  130. :cond_1
  131. const/4 v0, 0x0
  132. goto :goto_0
  133. .end method
  134. .method public static idealByteArraySize(I)I
  135. .locals 3
  136. .param p0, "need" # I
  137. .prologue
  138. const/4 v2, 0x1
  139. .line 33
  140. const/4 v0, 0x4
  141. .local v0, "i":I
  142. :goto_0
  143. const/16 v1, 0x20
  144. if-ge v0, v1, :cond_0
  145. .line 34
  146. shl-int v1, v2, v0
  147. add-int/lit8 v1, v1, -0xc
  148. if-gt p0, v1, :cond_1
  149. .line 35
  150. shl-int v1, v2, v0
  151. add-int/lit8 p0, v1, -0xc
  152. .line 37
  153. .end local p0 # "need":I
  154. :cond_0
  155. return p0
  156. .line 33
  157. .restart local p0 # "need":I
  158. :cond_1
  159. add-int/lit8 v0, v0, 0x1
  160. goto :goto_0
  161. .end method
  162. .method public static idealIntArraySize(I)I
  163. .locals 1
  164. .param p0, "need" # I
  165. .prologue
  166. .line 25
  167. mul-int/lit8 v0, p0, 0x4
  168. invoke-static {v0}, Landroid/support/v4/util/ContainerHelpers;->idealByteArraySize(I)I
  169. move-result v0
  170. div-int/lit8 v0, v0, 0x4
  171. return v0
  172. .end method
  173. .method public static idealLongArraySize(I)I
  174. .locals 1
  175. .param p0, "need" # I
  176. .prologue
  177. .line 29
  178. mul-int/lit8 v0, p0, 0x8
  179. invoke-static {v0}, Landroid/support/v4/util/ContainerHelpers;->idealByteArraySize(I)I
  180. move-result v0
  181. div-int/lit8 v0, v0, 0x8
  182. return v0
  183. .end method