ComputationScheduler$FixedSchedulerPool.smali 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. .class final Lio/reactivex/internal/schedulers/ComputationScheduler$FixedSchedulerPool;
  2. .super Ljava/lang/Object;
  3. .source "ComputationScheduler.java"
  4. # annotations
  5. .annotation system Ldalvik/annotation/EnclosingClass;
  6. value = Lio/reactivex/internal/schedulers/ComputationScheduler;
  7. .end annotation
  8. .annotation system Ldalvik/annotation/InnerClass;
  9. accessFlags = 0x18
  10. name = "FixedSchedulerPool"
  11. .end annotation
  12. # instance fields
  13. .field final cores:I
  14. .field final eventLoops:[Lio/reactivex/internal/schedulers/ComputationScheduler$PoolWorker;
  15. .field n:J
  16. # direct methods
  17. .method constructor <init>(ILjava/util/concurrent/ThreadFactory;)V
  18. .locals 3
  19. .line 75
  20. invoke-direct {p0}, Ljava/lang/Object;-><init>()V
  21. .line 77
  22. iput p1, p0, Lio/reactivex/internal/schedulers/ComputationScheduler$FixedSchedulerPool;->cores:I
  23. .line 78
  24. new-array v0, p1, [Lio/reactivex/internal/schedulers/ComputationScheduler$PoolWorker;
  25. iput-object v0, p0, Lio/reactivex/internal/schedulers/ComputationScheduler$FixedSchedulerPool;->eventLoops:[Lio/reactivex/internal/schedulers/ComputationScheduler$PoolWorker;
  26. const/4 v0, 0x0
  27. :goto_0
  28. if-ge v0, p1, :cond_0
  29. .line 80
  30. iget-object v1, p0, Lio/reactivex/internal/schedulers/ComputationScheduler$FixedSchedulerPool;->eventLoops:[Lio/reactivex/internal/schedulers/ComputationScheduler$PoolWorker;
  31. new-instance v2, Lio/reactivex/internal/schedulers/ComputationScheduler$PoolWorker;
  32. invoke-direct {v2, p2}, Lio/reactivex/internal/schedulers/ComputationScheduler$PoolWorker;-><init>(Ljava/util/concurrent/ThreadFactory;)V
  33. aput-object v2, v1, v0
  34. add-int/lit8 v0, v0, 0x1
  35. goto :goto_0
  36. :cond_0
  37. return-void
  38. .end method
  39. # virtual methods
  40. .method public getEventLoop()Lio/reactivex/internal/schedulers/ComputationScheduler$PoolWorker;
  41. .locals 6
  42. .line 85
  43. iget v0, p0, Lio/reactivex/internal/schedulers/ComputationScheduler$FixedSchedulerPool;->cores:I
  44. if-nez v0, :cond_0
  45. .line 87
  46. sget-object v0, Lio/reactivex/internal/schedulers/ComputationScheduler;->SHUTDOWN_WORKER:Lio/reactivex/internal/schedulers/ComputationScheduler$PoolWorker;
  47. return-object v0
  48. .line 90
  49. :cond_0
  50. iget-object v1, p0, Lio/reactivex/internal/schedulers/ComputationScheduler$FixedSchedulerPool;->eventLoops:[Lio/reactivex/internal/schedulers/ComputationScheduler$PoolWorker;
  51. iget-wide v2, p0, Lio/reactivex/internal/schedulers/ComputationScheduler$FixedSchedulerPool;->n:J
  52. const-wide/16 v4, 0x1
  53. add-long/2addr v4, v2
  54. iput-wide v4, p0, Lio/reactivex/internal/schedulers/ComputationScheduler$FixedSchedulerPool;->n:J
  55. int-to-long v4, v0
  56. rem-long/2addr v2, v4
  57. long-to-int v0, v2
  58. aget-object v0, v1, v0
  59. return-object v0
  60. .end method
  61. .method public shutdown()V
  62. .locals 4
  63. .line 94
  64. iget-object v0, p0, Lio/reactivex/internal/schedulers/ComputationScheduler$FixedSchedulerPool;->eventLoops:[Lio/reactivex/internal/schedulers/ComputationScheduler$PoolWorker;
  65. array-length v1, v0
  66. const/4 v2, 0x0
  67. :goto_0
  68. if-ge v2, v1, :cond_0
  69. aget-object v3, v0, v2
  70. .line 95
  71. invoke-virtual {v3}, Lio/reactivex/internal/schedulers/ComputationScheduler$PoolWorker;->dispose()V
  72. add-int/lit8 v2, v2, 0x1
  73. goto :goto_0
  74. :cond_0
  75. return-void
  76. .end method