Files

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 + "}";
}
}