298 lines
15 KiB
Java
298 lines
15 KiB
Java
package com.google.firebase.concurrent;
|
|
|
|
import com.google.android.gms.common.internal.Preconditions;
|
|
import java.util.ArrayDeque;
|
|
import java.util.Deque;
|
|
import java.util.concurrent.Executor;
|
|
import java.util.logging.Logger;
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
/* loaded from: classes3.dex */
|
|
public final class SequentialExecutor implements Executor {
|
|
private static final Logger log = Logger.getLogger(SequentialExecutor.class.getName());
|
|
private final Executor executor;
|
|
private final Deque<Runnable> queue = new ArrayDeque();
|
|
private WorkerRunningState workerRunningState = WorkerRunningState.IDLE;
|
|
private long workerRunCount = 0;
|
|
private final QueueWorker worker = new QueueWorker();
|
|
|
|
/* loaded from: classes3.dex */
|
|
public final class QueueWorker implements Runnable {
|
|
Runnable task;
|
|
|
|
private QueueWorker() {
|
|
}
|
|
|
|
/* JADX WARN: Code restructure failed: missing block: B:10:0x004e, code lost:
|
|
|
|
r1 = r1 | java.lang.Thread.interrupted();
|
|
r2 = null;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:12:0x0050, code lost:
|
|
|
|
r8.task.run();
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:16:0x005a, code lost:
|
|
|
|
r0 = move-exception;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:17:0x007a, code lost:
|
|
|
|
r8.task = null;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:18:0x007c, code lost:
|
|
|
|
throw r0;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:20:0x005c, code lost:
|
|
|
|
r3 = move-exception;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:21:0x005d, code lost:
|
|
|
|
com.google.firebase.concurrent.SequentialExecutor.log.log(java.util.logging.Level.SEVERE, "Exception while executing runnable " + r8.task, (java.lang.Throwable) r3);
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:26:0x0045, code lost:
|
|
|
|
if (r1 == false) goto L50;
|
|
*/
|
|
/* JADX WARN: Code restructure failed: missing block: B:30:?, code lost:
|
|
|
|
return;
|
|
*/
|
|
/*
|
|
Code decompiled incorrectly, please refer to instructions dump.
|
|
To view partially-correct add '--show-bad-code' argument
|
|
*/
|
|
private void workOnQueue() {
|
|
/*
|
|
r8 = this;
|
|
r0 = 0
|
|
r1 = r0
|
|
L2:
|
|
com.google.firebase.concurrent.SequentialExecutor r2 = com.google.firebase.concurrent.SequentialExecutor.this // Catch: java.lang.Throwable -> L58
|
|
java.util.Deque r2 = com.google.firebase.concurrent.SequentialExecutor.access$100(r2) // Catch: java.lang.Throwable -> L58
|
|
monitor-enter(r2) // Catch: java.lang.Throwable -> L58
|
|
if (r0 != 0) goto L2d
|
|
com.google.firebase.concurrent.SequentialExecutor r0 = com.google.firebase.concurrent.SequentialExecutor.this // Catch: java.lang.Throwable -> L20
|
|
com.google.firebase.concurrent.SequentialExecutor$WorkerRunningState r0 = com.google.firebase.concurrent.SequentialExecutor.access$200(r0) // Catch: java.lang.Throwable -> L20
|
|
com.google.firebase.concurrent.SequentialExecutor$WorkerRunningState r3 = com.google.firebase.concurrent.SequentialExecutor.WorkerRunningState.RUNNING // Catch: java.lang.Throwable -> L20
|
|
if (r0 != r3) goto L22
|
|
monitor-exit(r2) // Catch: java.lang.Throwable -> L20
|
|
if (r1 == 0) goto L48
|
|
L18:
|
|
java.lang.Thread r8 = java.lang.Thread.currentThread()
|
|
r8.interrupt()
|
|
goto L48
|
|
L20:
|
|
r8 = move-exception
|
|
goto L7d
|
|
L22:
|
|
com.google.firebase.concurrent.SequentialExecutor r0 = com.google.firebase.concurrent.SequentialExecutor.this // Catch: java.lang.Throwable -> L20
|
|
com.google.firebase.concurrent.SequentialExecutor.access$308(r0) // Catch: java.lang.Throwable -> L20
|
|
com.google.firebase.concurrent.SequentialExecutor r0 = com.google.firebase.concurrent.SequentialExecutor.this // Catch: java.lang.Throwable -> L20
|
|
com.google.firebase.concurrent.SequentialExecutor.access$202(r0, r3) // Catch: java.lang.Throwable -> L20
|
|
r0 = 1
|
|
L2d:
|
|
com.google.firebase.concurrent.SequentialExecutor r3 = com.google.firebase.concurrent.SequentialExecutor.this // Catch: java.lang.Throwable -> L20
|
|
java.util.Deque r3 = com.google.firebase.concurrent.SequentialExecutor.access$100(r3) // Catch: java.lang.Throwable -> L20
|
|
java.lang.Object r3 = r3.poll() // Catch: java.lang.Throwable -> L20
|
|
java.lang.Runnable r3 = (java.lang.Runnable) r3 // Catch: java.lang.Throwable -> L20
|
|
r8.task = r3 // Catch: java.lang.Throwable -> L20
|
|
if (r3 != 0) goto L49
|
|
com.google.firebase.concurrent.SequentialExecutor r8 = com.google.firebase.concurrent.SequentialExecutor.this // Catch: java.lang.Throwable -> L20
|
|
com.google.firebase.concurrent.SequentialExecutor$WorkerRunningState r0 = com.google.firebase.concurrent.SequentialExecutor.WorkerRunningState.IDLE // Catch: java.lang.Throwable -> L20
|
|
com.google.firebase.concurrent.SequentialExecutor.access$202(r8, r0) // Catch: java.lang.Throwable -> L20
|
|
monitor-exit(r2) // Catch: java.lang.Throwable -> L20
|
|
if (r1 == 0) goto L48
|
|
goto L18
|
|
L48:
|
|
return
|
|
L49:
|
|
monitor-exit(r2) // Catch: java.lang.Throwable -> L20
|
|
boolean r2 = java.lang.Thread.interrupted() // Catch: java.lang.Throwable -> L58
|
|
r1 = r1 | r2
|
|
r2 = 0
|
|
java.lang.Runnable r3 = r8.task // Catch: java.lang.Throwable -> L5a java.lang.RuntimeException -> L5c
|
|
r3.run() // Catch: java.lang.Throwable -> L5a java.lang.RuntimeException -> L5c
|
|
L55:
|
|
r8.task = r2 // Catch: java.lang.Throwable -> L58
|
|
goto L2
|
|
L58:
|
|
r8 = move-exception
|
|
goto L7f
|
|
L5a:
|
|
r0 = move-exception
|
|
goto L7a
|
|
L5c:
|
|
r3 = move-exception
|
|
java.util.logging.Logger r4 = com.google.firebase.concurrent.SequentialExecutor.access$400() // Catch: java.lang.Throwable -> L5a
|
|
java.util.logging.Level r5 = java.util.logging.Level.SEVERE // Catch: java.lang.Throwable -> L5a
|
|
java.lang.StringBuilder r6 = new java.lang.StringBuilder // Catch: java.lang.Throwable -> L5a
|
|
r6.<init>() // Catch: java.lang.Throwable -> L5a
|
|
java.lang.String r7 = "Exception while executing runnable "
|
|
r6.append(r7) // Catch: java.lang.Throwable -> L5a
|
|
java.lang.Runnable r7 = r8.task // Catch: java.lang.Throwable -> L5a
|
|
r6.append(r7) // Catch: java.lang.Throwable -> L5a
|
|
java.lang.String r6 = r6.toString() // Catch: java.lang.Throwable -> L5a
|
|
r4.log(r5, r6, r3) // Catch: java.lang.Throwable -> L5a
|
|
goto L55
|
|
L7a:
|
|
r8.task = r2 // Catch: java.lang.Throwable -> L58
|
|
throw r0 // Catch: java.lang.Throwable -> L58
|
|
L7d:
|
|
monitor-exit(r2) // Catch: java.lang.Throwable -> L20
|
|
throw r8 // Catch: java.lang.Throwable -> L58
|
|
L7f:
|
|
if (r1 == 0) goto L88
|
|
java.lang.Thread r0 = java.lang.Thread.currentThread()
|
|
r0.interrupt()
|
|
L88:
|
|
throw r8
|
|
*/
|
|
throw new UnsupportedOperationException("Method not decompiled: com.google.firebase.concurrent.SequentialExecutor.QueueWorker.workOnQueue():void");
|
|
}
|
|
|
|
@Override // java.lang.Runnable
|
|
public void run() {
|
|
try {
|
|
workOnQueue();
|
|
} catch (Error e4) {
|
|
synchronized (SequentialExecutor.this.queue) {
|
|
SequentialExecutor.this.workerRunningState = WorkerRunningState.IDLE;
|
|
throw e4;
|
|
}
|
|
}
|
|
}
|
|
|
|
public String toString() {
|
|
Runnable runnable = this.task;
|
|
if (runnable != null) {
|
|
return "SequentialExecutorWorker{running=" + runnable + "}";
|
|
}
|
|
return "SequentialExecutorWorker{state=" + SequentialExecutor.this.workerRunningState + "}";
|
|
}
|
|
}
|
|
|
|
/* loaded from: classes3.dex */
|
|
public enum WorkerRunningState {
|
|
IDLE,
|
|
QUEUING,
|
|
QUEUED,
|
|
RUNNING
|
|
}
|
|
|
|
public SequentialExecutor(Executor executor) {
|
|
this.executor = (Executor) Preconditions.checkNotNull(executor);
|
|
}
|
|
|
|
public static /* synthetic */ long access$308(SequentialExecutor sequentialExecutor) {
|
|
long j4 = sequentialExecutor.workerRunCount;
|
|
sequentialExecutor.workerRunCount = 1 + j4;
|
|
return j4;
|
|
}
|
|
|
|
/* JADX WARN: Removed duplicated region for block: B:45:0x0064 A[ADDED_TO_REGION] */
|
|
@Override // java.util.concurrent.Executor
|
|
/*
|
|
Code decompiled incorrectly, please refer to instructions dump.
|
|
To view partially-correct add '--show-bad-code' argument
|
|
*/
|
|
public void execute(final java.lang.Runnable r8) {
|
|
/*
|
|
r7 = this;
|
|
com.google.android.gms.common.internal.Preconditions.checkNotNull(r8)
|
|
java.util.Deque<java.lang.Runnable> r0 = r7.queue
|
|
monitor-enter(r0)
|
|
com.google.firebase.concurrent.SequentialExecutor$WorkerRunningState r1 = r7.workerRunningState // Catch: java.lang.Throwable -> L6b
|
|
com.google.firebase.concurrent.SequentialExecutor$WorkerRunningState r2 = com.google.firebase.concurrent.SequentialExecutor.WorkerRunningState.RUNNING // Catch: java.lang.Throwable -> L6b
|
|
if (r1 == r2) goto L6d
|
|
com.google.firebase.concurrent.SequentialExecutor$WorkerRunningState r2 = com.google.firebase.concurrent.SequentialExecutor.WorkerRunningState.QUEUED // Catch: java.lang.Throwable -> L6b
|
|
if (r1 != r2) goto L11
|
|
goto L6d
|
|
L11:
|
|
long r3 = r7.workerRunCount // Catch: java.lang.Throwable -> L6b
|
|
com.google.firebase.concurrent.SequentialExecutor$1 r1 = new com.google.firebase.concurrent.SequentialExecutor$1 // Catch: java.lang.Throwable -> L6b
|
|
r1.<init>() // Catch: java.lang.Throwable -> L6b
|
|
java.util.Deque<java.lang.Runnable> r8 = r7.queue // Catch: java.lang.Throwable -> L6b
|
|
r8.add(r1) // Catch: java.lang.Throwable -> L6b
|
|
com.google.firebase.concurrent.SequentialExecutor$WorkerRunningState r8 = com.google.firebase.concurrent.SequentialExecutor.WorkerRunningState.QUEUING // Catch: java.lang.Throwable -> L6b
|
|
r7.workerRunningState = r8 // Catch: java.lang.Throwable -> L6b
|
|
monitor-exit(r0) // Catch: java.lang.Throwable -> L6b
|
|
java.util.concurrent.Executor r0 = r7.executor // Catch: java.lang.Throwable -> L44
|
|
com.google.firebase.concurrent.SequentialExecutor$QueueWorker r5 = r7.worker // Catch: java.lang.Throwable -> L44
|
|
r0.execute(r5) // Catch: java.lang.Throwable -> L44
|
|
com.google.firebase.concurrent.SequentialExecutor$WorkerRunningState r0 = r7.workerRunningState
|
|
if (r0 == r8) goto L2e
|
|
return
|
|
L2e:
|
|
java.util.Deque<java.lang.Runnable> r0 = r7.queue
|
|
monitor-enter(r0)
|
|
long r5 = r7.workerRunCount // Catch: java.lang.Throwable -> L3e
|
|
int r1 = (r5 > r3 ? 1 : (r5 == r3 ? 0 : -1))
|
|
if (r1 != 0) goto L40
|
|
com.google.firebase.concurrent.SequentialExecutor$WorkerRunningState r1 = r7.workerRunningState // Catch: java.lang.Throwable -> L3e
|
|
if (r1 != r8) goto L40
|
|
r7.workerRunningState = r2 // Catch: java.lang.Throwable -> L3e
|
|
goto L40
|
|
L3e:
|
|
r7 = move-exception
|
|
goto L42
|
|
L40:
|
|
monitor-exit(r0) // Catch: java.lang.Throwable -> L3e
|
|
return
|
|
L42:
|
|
monitor-exit(r0) // Catch: java.lang.Throwable -> L3e
|
|
throw r7
|
|
L44:
|
|
r8 = move-exception
|
|
java.util.Deque<java.lang.Runnable> r2 = r7.queue
|
|
monitor-enter(r2)
|
|
com.google.firebase.concurrent.SequentialExecutor$WorkerRunningState r0 = r7.workerRunningState // Catch: java.lang.Throwable -> L53
|
|
com.google.firebase.concurrent.SequentialExecutor$WorkerRunningState r3 = com.google.firebase.concurrent.SequentialExecutor.WorkerRunningState.IDLE // Catch: java.lang.Throwable -> L53
|
|
if (r0 == r3) goto L55
|
|
com.google.firebase.concurrent.SequentialExecutor$WorkerRunningState r3 = com.google.firebase.concurrent.SequentialExecutor.WorkerRunningState.QUEUING // Catch: java.lang.Throwable -> L53
|
|
if (r0 != r3) goto L5f
|
|
goto L55
|
|
L53:
|
|
r7 = move-exception
|
|
goto L69
|
|
L55:
|
|
java.util.Deque<java.lang.Runnable> r7 = r7.queue // Catch: java.lang.Throwable -> L53
|
|
boolean r7 = r7.removeLastOccurrence(r1) // Catch: java.lang.Throwable -> L53
|
|
if (r7 == 0) goto L5f
|
|
r7 = 1
|
|
goto L60
|
|
L5f:
|
|
r7 = 0
|
|
L60:
|
|
boolean r0 = r8 instanceof java.util.concurrent.RejectedExecutionException // Catch: java.lang.Throwable -> L53
|
|
if (r0 == 0) goto L68
|
|
if (r7 != 0) goto L68
|
|
monitor-exit(r2) // Catch: java.lang.Throwable -> L53
|
|
return
|
|
L68:
|
|
throw r8 // Catch: java.lang.Throwable -> L53
|
|
L69:
|
|
monitor-exit(r2) // Catch: java.lang.Throwable -> L53
|
|
throw r7
|
|
L6b:
|
|
r7 = move-exception
|
|
goto L74
|
|
L6d:
|
|
java.util.Deque<java.lang.Runnable> r7 = r7.queue // Catch: java.lang.Throwable -> L6b
|
|
r7.add(r8) // Catch: java.lang.Throwable -> L6b
|
|
monitor-exit(r0) // Catch: java.lang.Throwable -> L6b
|
|
return
|
|
L74:
|
|
monitor-exit(r0) // Catch: java.lang.Throwable -> L6b
|
|
throw r7
|
|
*/
|
|
throw new UnsupportedOperationException("Method not decompiled: com.google.firebase.concurrent.SequentialExecutor.execute(java.lang.Runnable):void");
|
|
}
|
|
|
|
public String toString() {
|
|
return "SequentialExecutor@" + System.identityHashCode(this) + "{" + this.executor + "}";
|
|
}
|
|
}
|