ExceptionHelper.smali 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. .class public final Lio/reactivex/internal/util/ExceptionHelper;
  2. .super Ljava/lang/Object;
  3. .source "ExceptionHelper.java"
  4. # static fields
  5. .field public static final TERMINATED:Ljava/lang/Throwable;
  6. # direct methods
  7. .method static constructor <clinit>()V
  8. .locals 2
  9. .line 52
  10. new-instance v0, Lio/reactivex/internal/util/ExceptionHelper$1;
  11. const-string v1, "No further exceptions"
  12. invoke-direct {v0, v1}, Lio/reactivex/internal/util/ExceptionHelper$1;-><init>(Ljava/lang/String;)V
  13. sput-object v0, Lio/reactivex/internal/util/ExceptionHelper;->TERMINATED:Ljava/lang/Throwable;
  14. return-void
  15. .end method
  16. .method private constructor <init>()V
  17. .locals 2
  18. .line 27
  19. invoke-direct {p0}, Ljava/lang/Object;-><init>()V
  20. .line 28
  21. new-instance v0, Ljava/lang/IllegalStateException;
  22. const-string v1, "No instances!"
  23. invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
  24. throw v0
  25. .end method
  26. .method public static addThrowable(Ljava/util/concurrent/atomic/AtomicReference;Ljava/lang/Throwable;)Z
  27. .locals 5
  28. .annotation system Ldalvik/annotation/Signature;
  29. value = {
  30. "<T:",
  31. "Ljava/lang/Object;",
  32. ">(",
  33. "Ljava/util/concurrent/atomic/AtomicReference<",
  34. "Ljava/lang/Throwable;",
  35. ">;",
  36. "Ljava/lang/Throwable;",
  37. ")Z"
  38. }
  39. .end annotation
  40. .line 64
  41. :cond_0
  42. invoke-virtual {p0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
  43. move-result-object v0
  44. check-cast v0, Ljava/lang/Throwable;
  45. .line 66
  46. sget-object v1, Lio/reactivex/internal/util/ExceptionHelper;->TERMINATED:Ljava/lang/Throwable;
  47. const/4 v2, 0x0
  48. if-ne v0, v1, :cond_1
  49. return v2
  50. :cond_1
  51. const/4 v1, 0x1
  52. if-nez v0, :cond_2
  53. move-object v3, p1
  54. goto :goto_0
  55. .line 74
  56. :cond_2
  57. new-instance v3, Lio/reactivex/exceptions/CompositeException;
  58. const/4 v4, 0x2
  59. new-array v4, v4, [Ljava/lang/Throwable;
  60. aput-object v0, v4, v2
  61. aput-object p1, v4, v1
  62. invoke-direct {v3, v4}, Lio/reactivex/exceptions/CompositeException;-><init>([Ljava/lang/Throwable;)V
  63. .line 77
  64. :goto_0
  65. invoke-virtual {p0, v0, v3}, Ljava/util/concurrent/atomic/AtomicReference;->compareAndSet(Ljava/lang/Object;Ljava/lang/Object;)Z
  66. move-result v0
  67. if-eqz v0, :cond_0
  68. return v1
  69. .end method
  70. .method public static flatten(Ljava/lang/Throwable;)Ljava/util/List;
  71. .locals 4
  72. .annotation system Ldalvik/annotation/Signature;
  73. value = {
  74. "(",
  75. "Ljava/lang/Throwable;",
  76. ")",
  77. "Ljava/util/List<",
  78. "Ljava/lang/Throwable;",
  79. ">;"
  80. }
  81. .end annotation
  82. .line 97
  83. new-instance v0, Ljava/util/ArrayList;
  84. invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
  85. .line 98
  86. new-instance v1, Ljava/util/ArrayDeque;
  87. invoke-direct {v1}, Ljava/util/ArrayDeque;-><init>()V
  88. .line 99
  89. invoke-virtual {v1, p0}, Ljava/util/ArrayDeque;->offer(Ljava/lang/Object;)Z
  90. .line 101
  91. :cond_0
  92. :goto_0
  93. invoke-virtual {v1}, Ljava/util/ArrayDeque;->isEmpty()Z
  94. move-result p0
  95. if-nez p0, :cond_2
  96. .line 102
  97. invoke-virtual {v1}, Ljava/util/ArrayDeque;->removeFirst()Ljava/lang/Object;
  98. move-result-object p0
  99. check-cast p0, Ljava/lang/Throwable;
  100. .line 103
  101. instance-of v2, p0, Lio/reactivex/exceptions/CompositeException;
  102. if-eqz v2, :cond_1
  103. .line 104
  104. check-cast p0, Lio/reactivex/exceptions/CompositeException;
  105. .line 105
  106. invoke-virtual {p0}, Lio/reactivex/exceptions/CompositeException;->getExceptions()Ljava/util/List;
  107. move-result-object p0
  108. .line 106
  109. invoke-interface {p0}, Ljava/util/List;->size()I
  110. move-result v2
  111. add-int/lit8 v2, v2, -0x1
  112. :goto_1
  113. if-ltz v2, :cond_0
  114. .line 107
  115. invoke-interface {p0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
  116. move-result-object v3
  117. invoke-virtual {v1, v3}, Ljava/util/ArrayDeque;->offerFirst(Ljava/lang/Object;)Z
  118. add-int/lit8 v2, v2, -0x1
  119. goto :goto_1
  120. .line 110
  121. :cond_1
  122. invoke-interface {v0, p0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
  123. goto :goto_0
  124. :cond_2
  125. return-object v0
  126. .end method
  127. .method public static terminate(Ljava/util/concurrent/atomic/AtomicReference;)Ljava/lang/Throwable;
  128. .locals 2
  129. .annotation system Ldalvik/annotation/Signature;
  130. value = {
  131. "<T:",
  132. "Ljava/lang/Object;",
  133. ">(",
  134. "Ljava/util/concurrent/atomic/AtomicReference<",
  135. "Ljava/lang/Throwable;",
  136. ">;)",
  137. "Ljava/lang/Throwable;"
  138. }
  139. .end annotation
  140. .line 84
  141. invoke-virtual {p0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
  142. move-result-object v0
  143. check-cast v0, Ljava/lang/Throwable;
  144. .line 85
  145. sget-object v1, Lio/reactivex/internal/util/ExceptionHelper;->TERMINATED:Ljava/lang/Throwable;
  146. if-eq v0, v1, :cond_0
  147. .line 86
  148. invoke-virtual {p0, v1}, Ljava/util/concurrent/atomic/AtomicReference;->getAndSet(Ljava/lang/Object;)Ljava/lang/Object;
  149. move-result-object p0
  150. move-object v0, p0
  151. check-cast v0, Ljava/lang/Throwable;
  152. :cond_0
  153. return-object v0
  154. .end method
  155. .method public static wrapOrThrow(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
  156. .locals 1
  157. .line 39
  158. instance-of v0, p0, Ljava/lang/Error;
  159. if-nez v0, :cond_1
  160. .line 42
  161. instance-of v0, p0, Ljava/lang/RuntimeException;
  162. if-eqz v0, :cond_0
  163. .line 43
  164. check-cast p0, Ljava/lang/RuntimeException;
  165. return-object p0
  166. .line 45
  167. :cond_0
  168. new-instance v0, Ljava/lang/RuntimeException;
  169. invoke-direct {v0, p0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V
  170. return-object v0
  171. .line 40
  172. :cond_1
  173. check-cast p0, Ljava/lang/Error;
  174. throw p0
  175. .end method