public abstract class io.netty.util.concurrent.SingleThreadEventExecutor extends io.netty.util.concurrent.AbstractScheduledEventExecutor implements io.netty.util.concurrent.OrderedEventExecutor
{
static final int DEFAULT_MAX_PENDING_EXECUTOR_TASKS;
private static final io.netty.util.internal.logging.InternalLogger logger;
private static final int ST_NOT_STARTED;
private static final int ST_STARTED;
private static final int ST_SHUTTING_DOWN;
private static final int ST_SHUTDOWN;
private static final int ST_TERMINATED;
private static final java.lang.Runnable NOOP_TASK;
private static final java.util.concurrent.atomic.AtomicIntegerFieldUpdater STATE_UPDATER;
private static final java.util.concurrent.atomic.AtomicReferenceFieldUpdater PROPERTIES_UPDATER;
private final java.util.Queue taskQueue;
private volatile java.lang.Thread thread;
private volatile io.netty.util.concurrent.ThreadProperties threadProperties;
private final java.util.concurrent.Executor executor;
private volatile boolean interrupted;
private final java.util.concurrent.CountDownLatch threadLock;
private final java.util.Set shutdownHooks;
private final boolean addTaskWakesUp;
private final int maxPendingTasks;
private final io.netty.util.concurrent.RejectedExecutionHandler rejectedExecutionHandler;
private long lastExecutionTime;
private volatile int state;
private volatile long gracefulShutdownQuietPeriod;
private volatile long gracefulShutdownTimeout;
private long gracefulShutdownStartTime;
private final io.netty.util.concurrent.Promise terminationFuture;
private static final long SCHEDULE_PURGE_INTERVAL;
static final boolean $assertionsDisabled;
protected void <init>(io.netty.util.concurrent.EventExecutorGroup, java.util.concurrent.ThreadFactory, boolean)
{
io.netty.util.concurrent.ThreadPerTaskExecutor v;
io.netty.util.concurrent.SingleThreadEventExecutor v;
io.netty.util.concurrent.EventExecutorGroup v;
java.util.concurrent.ThreadFactory v;
boolean v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: io.netty.util.concurrent.EventExecutorGroup;
v := @parameter: java.util.concurrent.ThreadFactory;
v := @parameter: boolean;
v = new io.netty.util.concurrent.ThreadPerTaskExecutor;
specialinvoke v.<io.netty.util.concurrent.ThreadPerTaskExecutor: void <init>(java.util.concurrent.ThreadFactory)>(v);
specialinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: void <init>(io.netty.util.concurrent.EventExecutorGroup,java.util.concurrent.Executor,boolean)>(v, v, v);
return;
}
protected void <init>(io.netty.util.concurrent.EventExecutorGroup, java.util.concurrent.ThreadFactory, boolean, int, io.netty.util.concurrent.RejectedExecutionHandler)
{
io.netty.util.concurrent.ThreadPerTaskExecutor v;
io.netty.util.concurrent.SingleThreadEventExecutor v;
int v;
io.netty.util.concurrent.EventExecutorGroup v;
java.util.concurrent.ThreadFactory v;
io.netty.util.concurrent.RejectedExecutionHandler v;
boolean v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: io.netty.util.concurrent.EventExecutorGroup;
v := @parameter: java.util.concurrent.ThreadFactory;
v := @parameter: boolean;
v := @parameter: int;
v := @parameter: io.netty.util.concurrent.RejectedExecutionHandler;
v = new io.netty.util.concurrent.ThreadPerTaskExecutor;
specialinvoke v.<io.netty.util.concurrent.ThreadPerTaskExecutor: void <init>(java.util.concurrent.ThreadFactory)>(v);
specialinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: void <init>(io.netty.util.concurrent.EventExecutorGroup,java.util.concurrent.Executor,boolean,int,io.netty.util.concurrent.RejectedExecutionHandler)>(v, v, v, v, v);
return;
}
protected void <init>(io.netty.util.concurrent.EventExecutorGroup, java.util.concurrent.Executor, boolean)
{
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.util.concurrent.Executor v;
int v;
io.netty.util.concurrent.EventExecutorGroup v;
io.netty.util.concurrent.RejectedExecutionHandler v;
boolean v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: io.netty.util.concurrent.EventExecutorGroup;
v := @parameter: java.util.concurrent.Executor;
v := @parameter: boolean;
v = <io.netty.util.concurrent.SingleThreadEventExecutor: int DEFAULT_MAX_PENDING_EXECUTOR_TASKS>;
v = staticinvoke <io.netty.util.concurrent.RejectedExecutionHandlers: io.netty.util.concurrent.RejectedExecutionHandler reject()>();
specialinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: void <init>(io.netty.util.concurrent.EventExecutorGroup,java.util.concurrent.Executor,boolean,int,io.netty.util.concurrent.RejectedExecutionHandler)>(v, v, v, v, v);
return;
}
protected void <init>(io.netty.util.concurrent.EventExecutorGroup, java.util.concurrent.Executor, boolean, int, io.netty.util.concurrent.RejectedExecutionHandler)
{
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.util.concurrent.Executor v, v;
io.netty.util.concurrent.EventExecutorGroup v;
io.netty.util.concurrent.GlobalEventExecutor v;
io.netty.util.concurrent.DefaultPromise v;
java.util.concurrent.CountDownLatch v;
int v, v, v;
java.lang.Object v;
java.util.Queue v;
io.netty.util.concurrent.RejectedExecutionHandler v;
java.util.LinkedHashSet v;
boolean v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: io.netty.util.concurrent.EventExecutorGroup;
v := @parameter: java.util.concurrent.Executor;
v := @parameter: boolean;
v := @parameter: int;
v := @parameter: io.netty.util.concurrent.RejectedExecutionHandler;
specialinvoke v.<io.netty.util.concurrent.AbstractScheduledEventExecutor: void <init>(io.netty.util.concurrent.EventExecutorGroup)>(v);
v = new java.util.concurrent.CountDownLatch;
specialinvoke v.<java.util.concurrent.CountDownLatch: void <init>(int)>(1);
v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.concurrent.CountDownLatch threadLock> = v;
v = new java.util.LinkedHashSet;
specialinvoke v.<java.util.LinkedHashSet: void <init>()>();
v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.Set shutdownHooks> = v;
v.<io.netty.util.concurrent.SingleThreadEventExecutor: int state> = 1;
v = new io.netty.util.concurrent.DefaultPromise;
v = <io.netty.util.concurrent.GlobalEventExecutor: io.netty.util.concurrent.GlobalEventExecutor INSTANCE>;
specialinvoke v.<io.netty.util.concurrent.DefaultPromise: void <init>(io.netty.util.concurrent.EventExecutor)>(v);
v.<io.netty.util.concurrent.SingleThreadEventExecutor: io.netty.util.concurrent.Promise terminationFuture> = v;
v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean addTaskWakesUp> = v;
v = staticinvoke <java.lang.Math: int max(int,int)>(16, v);
v.<io.netty.util.concurrent.SingleThreadEventExecutor: int maxPendingTasks> = v;
v = staticinvoke <io.netty.util.internal.ThreadExecutorMap: java.util.concurrent.Executor apply(java.util.concurrent.Executor,io.netty.util.concurrent.EventExecutor)>(v, v);
v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.concurrent.Executor executor> = v;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: int maxPendingTasks>;
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.Queue newTaskQueue(int)>(v);
v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.Queue taskQueue> = v;
v = staticinvoke <io.netty.util.internal.ObjectUtil: java.lang.Object checkNotNull(java.lang.Object,java.lang.String)>(v, "rejectedHandler");
v.<io.netty.util.concurrent.SingleThreadEventExecutor: io.netty.util.concurrent.RejectedExecutionHandler rejectedExecutionHandler> = v;
return;
}
protected void <init>(io.netty.util.concurrent.EventExecutorGroup, java.util.concurrent.Executor, boolean, java.util.Queue, io.netty.util.concurrent.RejectedExecutionHandler)
{
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.util.concurrent.Executor v, v;
io.netty.util.concurrent.EventExecutorGroup v;
io.netty.util.concurrent.GlobalEventExecutor v;
io.netty.util.concurrent.DefaultPromise v;
java.util.concurrent.CountDownLatch v;
int v;
java.lang.Object v, v;
java.util.Queue v;
io.netty.util.concurrent.RejectedExecutionHandler v;
java.util.LinkedHashSet v;
boolean v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: io.netty.util.concurrent.EventExecutorGroup;
v := @parameter: java.util.concurrent.Executor;
v := @parameter: boolean;
v := @parameter: java.util.Queue;
v := @parameter: io.netty.util.concurrent.RejectedExecutionHandler;
specialinvoke v.<io.netty.util.concurrent.AbstractScheduledEventExecutor: void <init>(io.netty.util.concurrent.EventExecutorGroup)>(v);
v = new java.util.concurrent.CountDownLatch;
specialinvoke v.<java.util.concurrent.CountDownLatch: void <init>(int)>(1);
v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.concurrent.CountDownLatch threadLock> = v;
v = new java.util.LinkedHashSet;
specialinvoke v.<java.util.LinkedHashSet: void <init>()>();
v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.Set shutdownHooks> = v;
v.<io.netty.util.concurrent.SingleThreadEventExecutor: int state> = 1;
v = new io.netty.util.concurrent.DefaultPromise;
v = <io.netty.util.concurrent.GlobalEventExecutor: io.netty.util.concurrent.GlobalEventExecutor INSTANCE>;
specialinvoke v.<io.netty.util.concurrent.DefaultPromise: void <init>(io.netty.util.concurrent.EventExecutor)>(v);
v.<io.netty.util.concurrent.SingleThreadEventExecutor: io.netty.util.concurrent.Promise terminationFuture> = v;
v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean addTaskWakesUp> = v;
v = <io.netty.util.concurrent.SingleThreadEventExecutor: int DEFAULT_MAX_PENDING_EXECUTOR_TASKS>;
v.<io.netty.util.concurrent.SingleThreadEventExecutor: int maxPendingTasks> = v;
v = staticinvoke <io.netty.util.internal.ThreadExecutorMap: java.util.concurrent.Executor apply(java.util.concurrent.Executor,io.netty.util.concurrent.EventExecutor)>(v, v);
v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.concurrent.Executor executor> = v;
v = staticinvoke <io.netty.util.internal.ObjectUtil: java.lang.Object checkNotNull(java.lang.Object,java.lang.String)>(v, "taskQueue");
v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.Queue taskQueue> = v;
v = staticinvoke <io.netty.util.internal.ObjectUtil: java.lang.Object checkNotNull(java.lang.Object,java.lang.String)>(v, "rejectedHandler");
v.<io.netty.util.concurrent.SingleThreadEventExecutor: io.netty.util.concurrent.RejectedExecutionHandler rejectedExecutionHandler> = v;
return;
}
protected java.util.Queue newTaskQueue()
{
int v;
java.util.Queue v;
io.netty.util.concurrent.SingleThreadEventExecutor v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: int maxPendingTasks>;
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.Queue newTaskQueue(int)>(v);
return v;
}
protected java.util.Queue newTaskQueue(int)
{
int v;
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.util.concurrent.LinkedBlockingQueue v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: int;
v = new java.util.concurrent.LinkedBlockingQueue;
specialinvoke v.<java.util.concurrent.LinkedBlockingQueue: void <init>(int)>(v);
return v;
}
protected void interruptThread()
{
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.lang.Thread v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.lang.Thread thread>;
if v != null goto label;
v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean interrupted> = 1;
goto label;
label:
virtualinvoke v.<java.lang.Thread: void interrupt()>();
label:
return;
}
protected java.lang.Runnable pollTask()
{
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.lang.AssertionError v;
java.util.Queue v;
java.lang.Runnable v;
boolean v, v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v = <io.netty.util.concurrent.SingleThreadEventExecutor: boolean $assertionsDisabled>;
if v != 0 goto label;
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean inEventLoop()>();
if v != 0 goto label;
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>()>();
throw v;
label:
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.Queue taskQueue>;
v = staticinvoke <io.netty.util.concurrent.SingleThreadEventExecutor: java.lang.Runnable pollTaskFrom(java.util.Queue)>(v);
return v;
}
protected static java.lang.Runnable pollTaskFrom(java.util.Queue)
{
java.lang.Object v;
java.util.Queue v;
java.lang.Runnable v;
v := @parameter: java.util.Queue;
label:
v = interfaceinvoke v.<java.util.Queue: java.lang.Object poll()>();
v = <io.netty.util.concurrent.SingleThreadEventExecutor: java.lang.Runnable WAKEUP_TASK>;
if v == v goto label;
return v;
}
protected java.lang.Runnable takeTask()
{
io.netty.util.concurrent.ScheduledFutureTask v;
long v;
java.lang.AssertionError v;
java.lang.Runnable v;
byte v;
boolean v, v, v;
java.lang.UnsupportedOperationException v;
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.util.concurrent.TimeUnit v;
java.lang.InterruptedException v, v;
java.lang.Object v, v;
java.util.Queue v, v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v = <io.netty.util.concurrent.SingleThreadEventExecutor: boolean $assertionsDisabled>;
if v != 0 goto label;
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean inEventLoop()>();
if v != 0 goto label;
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>()>();
throw v;
label:
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.Queue taskQueue>;
v = v instanceof java.util.concurrent.BlockingQueue;
if v != 0 goto label;
v = new java.lang.UnsupportedOperationException;
specialinvoke v.<java.lang.UnsupportedOperationException: void <init>()>();
throw v;
label:
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.Queue taskQueue>;
label:
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: io.netty.util.concurrent.ScheduledFutureTask peekScheduledTask()>();
if v != null goto label;
label:
v = interfaceinvoke v.<java.util.concurrent.BlockingQueue: java.lang.Object take()>();
v = <io.netty.util.concurrent.SingleThreadEventExecutor: java.lang.Runnable WAKEUP_TASK>;
if v != v goto label;
v = null;
label:
goto label;
label:
v := @caughtexception;
label:
return v;
label:
v = virtualinvoke v.<io.netty.util.concurrent.ScheduledFutureTask: long delayNanos()>();
v = v cmp 0L;
if v <= 0 goto label;
label:
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit NANOSECONDS>;
v = interfaceinvoke v.<java.util.concurrent.BlockingQueue: java.lang.Object poll(long,java.util.concurrent.TimeUnit)>(v, v);
label:
goto label;
label:
v := @caughtexception;
return null;
label:
if v != null goto label;
specialinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean fetchFromScheduledTaskQueue()>();
interfaceinvoke v.<java.util.concurrent.BlockingQueue: java.lang.Object poll()>();
label:
if v == null goto label;
return v;
catch java.lang.InterruptedException from label to label with label;
catch java.lang.InterruptedException from label to label with label;
}
private boolean fetchFromScheduledTaskQueue()
{
io.netty.util.concurrent.SingleThreadEventExecutor v;
io.netty.util.internal.PriorityQueue v, v, v;
long v;
java.lang.Runnable v;
java.util.Queue v;
boolean v, v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: io.netty.util.internal.PriorityQueue scheduledTaskQueue>;
if v == null goto label;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: io.netty.util.internal.PriorityQueue scheduledTaskQueue>;
v = interfaceinvoke v.<io.netty.util.internal.PriorityQueue: boolean isEmpty()>();
if v == 0 goto label;
label:
return 1;
label:
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: long getCurrentTimeNanos()>();
label:
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.lang.Runnable pollScheduledTask(long)>(v);
if v != null goto label;
return 1;
label:
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.Queue taskQueue>;
v = interfaceinvoke v.<java.util.Queue: boolean offer(java.lang.Object)>(v);
if v != 0 goto label;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: io.netty.util.internal.PriorityQueue scheduledTaskQueue>;
interfaceinvoke v.<io.netty.util.internal.PriorityQueue: boolean add(java.lang.Object)>(v);
return 0;
}
private boolean executeExpiredScheduledTasks()
{
io.netty.util.concurrent.SingleThreadEventExecutor v;
io.netty.util.internal.PriorityQueue v, v;
long v;
java.lang.Runnable v, v;
boolean v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: io.netty.util.internal.PriorityQueue scheduledTaskQueue>;
if v == null goto label;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: io.netty.util.internal.PriorityQueue scheduledTaskQueue>;
v = interfaceinvoke v.<io.netty.util.internal.PriorityQueue: boolean isEmpty()>();
if v == 0 goto label;
label:
return 0;
label:
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: long getCurrentTimeNanos()>();
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.lang.Runnable pollScheduledTask(long)>(v);
if v != null goto label;
return 0;
label:
staticinvoke <io.netty.util.concurrent.SingleThreadEventExecutor: void safeExecute(java.lang.Runnable)>(v);
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.lang.Runnable pollScheduledTask(long)>(v);
v = v;
if v != null goto label;
return 1;
}
protected java.lang.Runnable peekTask()
{
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.lang.Object v;
java.lang.AssertionError v;
java.util.Queue v;
boolean v, v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v = <io.netty.util.concurrent.SingleThreadEventExecutor: boolean $assertionsDisabled>;
if v != 0 goto label;
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean inEventLoop()>();
if v != 0 goto label;
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>()>();
throw v;
label:
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.Queue taskQueue>;
v = interfaceinvoke v.<java.util.Queue: java.lang.Object peek()>();
return v;
}
protected boolean hasTasks()
{
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.lang.AssertionError v;
java.util.Queue v;
boolean v, v, v, v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v = <io.netty.util.concurrent.SingleThreadEventExecutor: boolean $assertionsDisabled>;
if v != 0 goto label;
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean inEventLoop()>();
if v != 0 goto label;
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>()>();
throw v;
label:
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.Queue taskQueue>;
v = interfaceinvoke v.<java.util.Queue: boolean isEmpty()>();
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public int pendingTasks()
{
int v;
java.util.Queue v;
io.netty.util.concurrent.SingleThreadEventExecutor v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.Queue taskQueue>;
v = interfaceinvoke v.<java.util.Queue: int size()>();
return v;
}
protected void addTask(java.lang.Runnable)
{
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.lang.Runnable v;
boolean v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: java.lang.Runnable;
staticinvoke <io.netty.util.internal.ObjectUtil: java.lang.Object checkNotNull(java.lang.Object,java.lang.String)>(v, "task");
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean offerTask(java.lang.Runnable)>(v);
if v != 0 goto label;
virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: void reject(java.lang.Runnable)>(v);
label:
return;
}
final boolean offerTask(java.lang.Runnable)
{
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.util.Queue v;
java.lang.Runnable v;
boolean v, v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: java.lang.Runnable;
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean isShutdown()>();
if v == 0 goto label;
staticinvoke <io.netty.util.concurrent.SingleThreadEventExecutor: void reject()>();
label:
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.Queue taskQueue>;
v = interfaceinvoke v.<java.util.Queue: boolean offer(java.lang.Object)>(v);
return v;
}
protected boolean removeTask(java.lang.Runnable)
{
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.lang.Object v;
java.util.Queue v;
java.lang.Runnable v;
boolean v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: java.lang.Runnable;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.Queue taskQueue>;
v = staticinvoke <io.netty.util.internal.ObjectUtil: java.lang.Object checkNotNull(java.lang.Object,java.lang.String)>(v, "task");
v = interfaceinvoke v.<java.util.Queue: boolean remove(java.lang.Object)>(v);
return v;
}
protected boolean runAllTasks()
{
io.netty.util.concurrent.SingleThreadEventExecutor v;
long v;
java.lang.AssertionError v;
java.util.Queue v;
boolean v, v, v, v, v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v = <io.netty.util.concurrent.SingleThreadEventExecutor: boolean $assertionsDisabled>;
if v != 0 goto label;
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean inEventLoop()>();
if v != 0 goto label;
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>()>();
throw v;
label:
v = 0;
label:
v = specialinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean fetchFromScheduledTaskQueue()>();
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.Queue taskQueue>;
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean runAllTasksFrom(java.util.Queue)>(v);
if v == 0 goto label;
v = 1;
label:
if v == 0 goto label;
if v == 0 goto label;
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: long getCurrentTimeNanos()>();
v.<io.netty.util.concurrent.SingleThreadEventExecutor: long lastExecutionTime> = v;
label:
virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: void afterRunningAllTasks()>();
return v;
}
protected final boolean runScheduledAndExecutorTasks(int)
{
io.netty.util.concurrent.SingleThreadEventExecutor v;
long v;
java.lang.AssertionError v;
int v, v;
java.util.Queue v;
boolean v, v, v, v, v, v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: int;
v = <io.netty.util.concurrent.SingleThreadEventExecutor: boolean $assertionsDisabled>;
if v != 0 goto label;
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean inEventLoop()>();
if v != 0 goto label;
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>()>();
throw v;
label:
v = 0;
label:
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.Queue taskQueue>;
v = specialinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean runExistingTasksFrom(java.util.Queue)>(v);
v = specialinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean executeExpiredScheduledTasks()>();
v = v | v;
if v == 0 goto label;
v = v + 1;
if v < v goto label;
label:
if v <= 0 goto label;
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: long getCurrentTimeNanos()>();
v.<io.netty.util.concurrent.SingleThreadEventExecutor: long lastExecutionTime> = v;
label:
virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: void afterRunningAllTasks()>();
if v <= 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
protected final boolean runAllTasksFrom(java.util.Queue)
{
java.util.Queue v;
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.lang.Runnable v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: java.util.Queue;
v = staticinvoke <io.netty.util.concurrent.SingleThreadEventExecutor: java.lang.Runnable pollTaskFrom(java.util.Queue)>(v);
if v != null goto label;
return 0;
label:
staticinvoke <io.netty.util.concurrent.SingleThreadEventExecutor: void safeExecute(java.lang.Runnable)>(v);
v = staticinvoke <io.netty.util.concurrent.SingleThreadEventExecutor: java.lang.Runnable pollTaskFrom(java.util.Queue)>(v);
if v != null goto label;
return 1;
}
private boolean runExistingTasksFrom(java.util.Queue)
{
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.lang.Runnable v;
int v, v, v, v;
java.lang.Object v;
java.util.Queue v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: java.util.Queue;
v = staticinvoke <io.netty.util.concurrent.SingleThreadEventExecutor: java.lang.Runnable pollTaskFrom(java.util.Queue)>(v);
if v != null goto label;
return 0;
label:
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: int maxPendingTasks>;
v = interfaceinvoke v.<java.util.Queue: int size()>();
v = staticinvoke <java.lang.Math: int min(int,int)>(v, v);
staticinvoke <io.netty.util.concurrent.SingleThreadEventExecutor: void safeExecute(java.lang.Runnable)>(v);
label:
v = v;
v = v - 1;
if v <= 0 goto label;
v = interfaceinvoke v.<java.util.Queue: java.lang.Object poll()>();
if v == null goto label;
staticinvoke <io.netty.util.concurrent.SingleThreadEventExecutor: void safeExecute(java.lang.Runnable)>(v);
goto label;
label:
return 1;
}
protected boolean runAllTasks(long)
{
io.netty.util.concurrent.SingleThreadEventExecutor v;
long v, v, v, v, v, v, v;
java.lang.Runnable v;
byte v, v, v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: long;
specialinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean fetchFromScheduledTaskQueue()>();
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.lang.Runnable pollTask()>();
if v != null goto label;
virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: void afterRunningAllTasks()>();
return 0;
label:
v = v cmp 0L;
if v <= 0 goto label;
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: long getCurrentTimeNanos()>();
v = v + v;
goto label;
label:
v = 0L;
label:
v = v;
v = 0L;
label:
staticinvoke <io.netty.util.concurrent.SingleThreadEventExecutor: void safeExecute(java.lang.Runnable)>(v);
v = v + 1L;
v = v & 63L;
v = v cmp 0L;
if v != 0 goto label;
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: long getCurrentTimeNanos()>();
v = v cmp v;
if v >= 0 goto label;
label:
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.lang.Runnable pollTask()>();
if v != null goto label;
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: long getCurrentTimeNanos()>();
label:
virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: void afterRunningAllTasks()>();
v.<io.netty.util.concurrent.SingleThreadEventExecutor: long lastExecutionTime> = v;
return 1;
}
protected void afterRunningAllTasks()
{
io.netty.util.concurrent.SingleThreadEventExecutor v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
return;
}
protected long delayNanos(long)
{
io.netty.util.concurrent.ScheduledFutureTask v;
io.netty.util.concurrent.SingleThreadEventExecutor v;
long v, v, v, v, v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: long;
v = staticinvoke <io.netty.util.concurrent.SingleThreadEventExecutor: long initialNanoTime()>();
v = v - v;
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: io.netty.util.concurrent.ScheduledFutureTask peekScheduledTask()>();
if v != null goto label;
v = <io.netty.util.concurrent.SingleThreadEventExecutor: long SCHEDULE_PURGE_INTERVAL>;
return v;
label:
v = virtualinvoke v.<io.netty.util.concurrent.ScheduledFutureTask: long delayNanos(long)>(v);
return v;
}
protected long deadlineNanos()
{
io.netty.util.concurrent.ScheduledFutureTask v;
io.netty.util.concurrent.SingleThreadEventExecutor v;
long v, v, v, v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: io.netty.util.concurrent.ScheduledFutureTask peekScheduledTask()>();
if v != null goto label;
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: long getCurrentTimeNanos()>();
v = <io.netty.util.concurrent.SingleThreadEventExecutor: long SCHEDULE_PURGE_INTERVAL>;
v = v + v;
return v;
label:
v = virtualinvoke v.<io.netty.util.concurrent.ScheduledFutureTask: long deadlineNanos()>();
return v;
}
protected void updateLastExecutionTime()
{
long v;
io.netty.util.concurrent.SingleThreadEventExecutor v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: long getCurrentTimeNanos()>();
v.<io.netty.util.concurrent.SingleThreadEventExecutor: long lastExecutionTime> = v;
return;
}
protected abstract void run();
protected void cleanup()
{
io.netty.util.concurrent.SingleThreadEventExecutor v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
return;
}
protected void wakeup(boolean)
{
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.util.Queue v;
java.lang.Runnable v;
boolean v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: boolean;
if v != 0 goto label;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.Queue taskQueue>;
v = <io.netty.util.concurrent.SingleThreadEventExecutor: java.lang.Runnable WAKEUP_TASK>;
interfaceinvoke v.<java.util.Queue: boolean offer(java.lang.Object)>(v);
label:
return;
}
public boolean inEventLoop(java.lang.Thread)
{
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.lang.Thread v, v;
boolean v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: java.lang.Thread;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.lang.Thread thread>;
if v != v goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public void addShutdownHook(java.lang.Runnable)
{
io.netty.util.concurrent.SingleThreadEventExecutor v;
io.netty.util.concurrent.SingleThreadEventExecutor$2 v;
java.util.Set v;
java.lang.Runnable v;
boolean v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: java.lang.Runnable;
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean inEventLoop()>();
if v == 0 goto label;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.Set shutdownHooks>;
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
goto label;
label:
v = new io.netty.util.concurrent.SingleThreadEventExecutor$2;
specialinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor$2: void <init>(io.netty.util.concurrent.SingleThreadEventExecutor,java.lang.Runnable)>(v, v);
virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: void execute(java.lang.Runnable)>(v);
label:
return;
}
public void removeShutdownHook(java.lang.Runnable)
{
io.netty.util.concurrent.SingleThreadEventExecutor v;
io.netty.util.concurrent.SingleThreadEventExecutor$3 v;
java.util.Set v;
java.lang.Runnable v;
boolean v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: java.lang.Runnable;
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean inEventLoop()>();
if v == 0 goto label;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.Set shutdownHooks>;
interfaceinvoke v.<java.util.Set: boolean remove(java.lang.Object)>(v);
goto label;
label:
v = new io.netty.util.concurrent.SingleThreadEventExecutor$3;
specialinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor$3: void <init>(io.netty.util.concurrent.SingleThreadEventExecutor,java.lang.Runnable)>(v, v);
virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: void execute(java.lang.Runnable)>(v);
label:
return;
}
private boolean runShutdownHooks()
{
java.lang.Throwable v, v;
java.util.Iterator v;
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.util.Set v, v, v;
long v;
java.util.ArrayList v;
io.netty.util.internal.logging.InternalLogger v;
java.lang.Object v;
boolean v, v, v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v = 0;
label:
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.Set shutdownHooks>;
v = interfaceinvoke v.<java.util.Set: boolean isEmpty()>();
if v != 0 goto label;
v = new java.util.ArrayList;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.Set shutdownHooks>;
specialinvoke v.<java.util.ArrayList: void <init>(java.util.Collection)>(v);
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.Set shutdownHooks>;
interfaceinvoke v.<java.util.Set: void clear()>();
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
label:
staticinvoke <io.netty.util.concurrent.SingleThreadEventExecutor: void runTask(java.lang.Runnable)>(v);
label:
v = 1;
goto label;
label:
v := @caughtexception;
v = <io.netty.util.concurrent.SingleThreadEventExecutor: io.netty.util.internal.logging.InternalLogger logger>;
interfaceinvoke v.<io.netty.util.internal.logging.InternalLogger: void warn(java.lang.String,java.lang.Throwable)>("Shutdown hook raised an exception.", v);
label:
v = 1;
goto label;
label:
v := @caughtexception;
throw v;
label:
if v == 0 goto label;
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: long getCurrentTimeNanos()>();
v.<io.netty.util.concurrent.SingleThreadEventExecutor: long lastExecutionTime> = v;
label:
return v;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public io.netty.util.concurrent.Future shutdownGracefully(long, long, java.util.concurrent.TimeUnit)
{
java.util.concurrent.atomic.AtomicIntegerFieldUpdater v;
long v, v, v, v;
java.lang.Runnable v;
byte v;
int v, v;
java.lang.String v;
boolean v, v, v, v, v, v, v;
io.netty.util.concurrent.Promise v;
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.lang.IllegalArgumentException v;
java.util.concurrent.TimeUnit v;
java.util.Queue v;
io.netty.util.concurrent.Future v, v, v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: long;
v := @parameter: long;
v := @parameter: java.util.concurrent.TimeUnit;
staticinvoke <io.netty.util.internal.ObjectUtil: long checkPositiveOrZero(long,java.lang.String)>(v, "quietPeriod");
v = v cmp v;
if v >= 0 goto label;
v = new java.lang.IllegalArgumentException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (long,long)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("timeout: \u (expected >= quietPeriod (\u))");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
staticinvoke <io.netty.util.internal.ObjectUtil: java.lang.Object checkNotNull(java.lang.Object,java.lang.String)>(v, "unit");
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean isShuttingDown()>();
if v == 0 goto label;
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: io.netty.util.concurrent.Future terminationFuture()>();
return v;
label:
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean inEventLoop()>();
label:
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean isShuttingDown()>();
if v == 0 goto label;
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: io.netty.util.concurrent.Future terminationFuture()>();
return v;
label:
v = 1;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: int state>;
if v == 0 goto label;
v = 3;
goto label;
label:
lookupswitch(v)
{
case 1: goto label;
case 2: goto label;
default: goto label;
};
label:
v = 3;
goto label;
label:
v = v;
v = 0;
label:
v = <io.netty.util.concurrent.SingleThreadEventExecutor: java.util.concurrent.atomic.AtomicIntegerFieldUpdater STATE_UPDATER>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicIntegerFieldUpdater: boolean compareAndSet(java.lang.Object,int,int)>(v, v, v);
if v == 0 goto label;
v = virtualinvoke v.<java.util.concurrent.TimeUnit: long toNanos(long)>(v);
v.<io.netty.util.concurrent.SingleThreadEventExecutor: long gracefulShutdownQuietPeriod> = v;
v = virtualinvoke v.<java.util.concurrent.TimeUnit: long toNanos(long)>(v);
v.<io.netty.util.concurrent.SingleThreadEventExecutor: long gracefulShutdownTimeout> = v;
v = specialinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean ensureThreadStarted(int)>(v);
if v == 0 goto label;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: io.netty.util.concurrent.Promise terminationFuture>;
return v;
label:
if v == 0 goto label;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.Queue taskQueue>;
v = <io.netty.util.concurrent.SingleThreadEventExecutor: java.lang.Runnable WAKEUP_TASK>;
interfaceinvoke v.<java.util.Queue: boolean offer(java.lang.Object)>(v);
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean addTaskWakesUp>;
if v != 0 goto label;
virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: void wakeup(boolean)>(v);
label:
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: io.netty.util.concurrent.Future terminationFuture()>();
return v;
}
public io.netty.util.concurrent.Future terminationFuture()
{
io.netty.util.concurrent.Promise v;
io.netty.util.concurrent.SingleThreadEventExecutor v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: io.netty.util.concurrent.Promise terminationFuture>;
return v;
}
public void shutdown()
{
java.util.concurrent.atomic.AtomicIntegerFieldUpdater v;
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.lang.Runnable v;
int v, v;
java.util.Queue v;
boolean v, v, v, v, v, v, v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean isShutdown()>();
if v == 0 goto label;
return;
label:
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean inEventLoop()>();
label:
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean isShuttingDown()>();
if v == 0 goto label;
return;
label:
v = 1;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: int state>;
if v == 0 goto label;
v = 4;
goto label;
label:
tableswitch(v)
{
case 1: goto label;
case 2: goto label;
case 3: goto label;
default: goto label;
};
label:
v = 4;
goto label;
label:
v = v;
v = 0;
label:
v = <io.netty.util.concurrent.SingleThreadEventExecutor: java.util.concurrent.atomic.AtomicIntegerFieldUpdater STATE_UPDATER>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicIntegerFieldUpdater: boolean compareAndSet(java.lang.Object,int,int)>(v, v, v);
if v == 0 goto label;
v = specialinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean ensureThreadStarted(int)>(v);
if v == 0 goto label;
return;
label:
if v == 0 goto label;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.Queue taskQueue>;
v = <io.netty.util.concurrent.SingleThreadEventExecutor: java.lang.Runnable WAKEUP_TASK>;
interfaceinvoke v.<java.util.Queue: boolean offer(java.lang.Object)>(v);
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean addTaskWakesUp>;
if v != 0 goto label;
virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: void wakeup(boolean)>(v);
label:
return;
}
public boolean isShuttingDown()
{
int v;
io.netty.util.concurrent.SingleThreadEventExecutor v;
boolean v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: int state>;
if v < 3 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public boolean isShutdown()
{
int v;
io.netty.util.concurrent.SingleThreadEventExecutor v;
boolean v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: int state>;
if v < 4 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public boolean isTerminated()
{
int v;
io.netty.util.concurrent.SingleThreadEventExecutor v;
boolean v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: int state>;
if v != 5 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
protected boolean confirmShutdown()
{
java.lang.IllegalStateException v;
long v, v, v, v, v, v, v, v, v, v;
java.lang.Runnable v, v;
byte v, v, v, v;
boolean v, v, v, v, v, v;
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.lang.InterruptedException v;
java.util.Queue v, v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean isShuttingDown()>();
if v != 0 goto label;
return 0;
label:
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean inEventLoop()>();
if v != 0 goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("must be invoked from an event loop");
throw v;
label:
virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: void cancelScheduledTasks()>();
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: long gracefulShutdownStartTime>;
v = v cmp 0L;
if v != 0 goto label;
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: long getCurrentTimeNanos()>();
v.<io.netty.util.concurrent.SingleThreadEventExecutor: long gracefulShutdownStartTime> = v;
label:
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean runAllTasks()>();
if v != 0 goto label;
v = specialinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean runShutdownHooks()>();
if v == 0 goto label;
label:
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean isShutdown()>();
if v == 0 goto label;
return 1;
label:
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: long gracefulShutdownQuietPeriod>;
v = v cmp 0L;
if v != 0 goto label;
return 1;
label:
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.Queue taskQueue>;
v = <io.netty.util.concurrent.SingleThreadEventExecutor: java.lang.Runnable WAKEUP_TASK>;
interfaceinvoke v.<java.util.Queue: boolean offer(java.lang.Object)>(v);
return 0;
label:
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: long getCurrentTimeNanos()>();
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean isShutdown()>();
if v != 0 goto label;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: long gracefulShutdownStartTime>;
v = v - v;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: long gracefulShutdownTimeout>;
v = v cmp v;
if v <= 0 goto label;
label:
return 1;
label:
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: long lastExecutionTime>;
v = v - v;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: long gracefulShutdownQuietPeriod>;
v = v cmp v;
if v > 0 goto label;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.Queue taskQueue>;
v = <io.netty.util.concurrent.SingleThreadEventExecutor: java.lang.Runnable WAKEUP_TASK>;
interfaceinvoke v.<java.util.Queue: boolean offer(java.lang.Object)>(v);
label:
staticinvoke <java.lang.Thread: void sleep(long)>(100L);
label:
goto label;
label:
v := @caughtexception;
label:
return 0;
label:
return 1;
catch java.lang.InterruptedException from label to label with label;
}
public boolean awaitTermination(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException
{
java.util.concurrent.TimeUnit v;
java.lang.IllegalStateException v;
java.util.concurrent.CountDownLatch v;
io.netty.util.concurrent.SingleThreadEventExecutor v;
long v;
boolean v, v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: long;
v := @parameter: java.util.concurrent.TimeUnit;
staticinvoke <io.netty.util.internal.ObjectUtil: java.lang.Object checkNotNull(java.lang.Object,java.lang.String)>(v, "unit");
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean inEventLoop()>();
if v == 0 goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("cannot await termination of the current thread");
throw v;
label:
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.concurrent.CountDownLatch threadLock>;
virtualinvoke v.<java.util.concurrent.CountDownLatch: boolean await(long,java.util.concurrent.TimeUnit)>(v, v);
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean isTerminated()>();
return v;
}
public void execute(java.lang.Runnable)
{
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.lang.Runnable v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: java.lang.Runnable;
specialinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: void execute0(java.lang.Runnable)>(v);
return;
}
public void lazyExecute(java.lang.Runnable)
{
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.lang.Runnable v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: java.lang.Runnable;
specialinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: void lazyExecute0(java.lang.Runnable)>(v);
return;
}
private void execute0(java.lang.Runnable)
{
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.lang.Runnable v;
boolean v, v, v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: java.lang.Runnable;
staticinvoke <io.netty.util.internal.ObjectUtil: java.lang.Object checkNotNull(java.lang.Object,java.lang.String)>(v, "task");
v = v instanceof io.netty.util.concurrent.AbstractEventExecutor$LazyRunnable;
if v != 0 goto label;
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean wakesUpForTask(java.lang.Runnable)>(v);
if v == 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
specialinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: void execute(java.lang.Runnable,boolean)>(v, v);
return;
}
private void lazyExecute0(java.lang.Runnable)
{
java.lang.Object v;
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.lang.Runnable v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: java.lang.Runnable;
v = staticinvoke <io.netty.util.internal.ObjectUtil: java.lang.Object checkNotNull(java.lang.Object,java.lang.String)>(v, "task");
specialinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: void execute(java.lang.Runnable,boolean)>(v, 0);
return;
}
private void execute(java.lang.Runnable, boolean)
{
java.lang.UnsupportedOperationException v;
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.lang.Runnable v;
boolean v, v, v, v, v, v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: java.lang.Runnable;
v := @parameter: boolean;
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean inEventLoop()>();
virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: void addTask(java.lang.Runnable)>(v);
if v != 0 goto label;
specialinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: void startThread()>();
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean isShutdown()>();
if v == 0 goto label;
v = 0;
label:
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean removeTask(java.lang.Runnable)>(v);
if v == 0 goto label;
v = 1;
label:
goto label;
label:
v := @caughtexception;
label:
if v == 0 goto label;
staticinvoke <io.netty.util.concurrent.SingleThreadEventExecutor: void reject()>();
label:
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean addTaskWakesUp>;
if v != 0 goto label;
if v == 0 goto label;
virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: void wakeup(boolean)>(v);
label:
return;
catch java.lang.UnsupportedOperationException from label to label with label;
}
public java.lang.Object invokeAny(java.util.Collection) throws java.lang.InterruptedException, java.util.concurrent.ExecutionException
{
java.lang.Object v;
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.util.Collection v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: java.util.Collection;
specialinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: void throwIfInEventLoop(java.lang.String)>("invokeAny");
v = specialinvoke v.<io.netty.util.concurrent.AbstractScheduledEventExecutor: java.lang.Object invokeAny(java.util.Collection)>(v);
return v;
}
public java.lang.Object invokeAny(java.util.Collection, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException, java.util.concurrent.ExecutionException, java.util.concurrent.TimeoutException
{
java.util.concurrent.TimeUnit v;
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.util.Collection v;
java.lang.Object v;
long v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: java.util.Collection;
v := @parameter: long;
v := @parameter: java.util.concurrent.TimeUnit;
specialinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: void throwIfInEventLoop(java.lang.String)>("invokeAny");
v = specialinvoke v.<io.netty.util.concurrent.AbstractScheduledEventExecutor: java.lang.Object invokeAny(java.util.Collection,long,java.util.concurrent.TimeUnit)>(v, v, v);
return v;
}
public java.util.List invokeAll(java.util.Collection) throws java.lang.InterruptedException
{
java.util.List v;
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.util.Collection v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: java.util.Collection;
specialinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: void throwIfInEventLoop(java.lang.String)>("invokeAll");
v = specialinvoke v.<io.netty.util.concurrent.AbstractScheduledEventExecutor: java.util.List invokeAll(java.util.Collection)>(v);
return v;
}
public java.util.List invokeAll(java.util.Collection, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException
{
java.util.concurrent.TimeUnit v;
java.util.List v;
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.util.Collection v;
long v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: java.util.Collection;
v := @parameter: long;
v := @parameter: java.util.concurrent.TimeUnit;
specialinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: void throwIfInEventLoop(java.lang.String)>("invokeAll");
v = specialinvoke v.<io.netty.util.concurrent.AbstractScheduledEventExecutor: java.util.List invokeAll(java.util.Collection,long,java.util.concurrent.TimeUnit)>(v, v, v);
return v;
}
private void throwIfInEventLoop(java.lang.String)
{
java.util.concurrent.RejectedExecutionException v;
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.lang.String v, v;
boolean v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: java.lang.String;
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean inEventLoop()>();
if v == 0 goto label;
v = new java.util.concurrent.RejectedExecutionException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Calling \u from within the EventLoop is not allowed");
specialinvoke v.<java.util.concurrent.RejectedExecutionException: void <init>(java.lang.String)>(v);
throw v;
label:
return;
}
public final io.netty.util.concurrent.ThreadProperties threadProperties()
{
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.util.concurrent.atomic.AtomicReferenceFieldUpdater v;
java.lang.AssertionError v, v;
java.lang.Runnable v;
io.netty.util.concurrent.SingleThreadEventExecutor$DefaultThreadProperties v;
java.lang.Thread v;
io.netty.util.concurrent.Future v;
io.netty.util.concurrent.ThreadProperties v;
boolean v, v, v, v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: io.netty.util.concurrent.ThreadProperties threadProperties>;
if v != null goto label;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.lang.Thread thread>;
if v != null goto label;
v = <io.netty.util.concurrent.SingleThreadEventExecutor: boolean $assertionsDisabled>;
if v != 0 goto label;
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: boolean inEventLoop()>();
if v == 0 goto label;
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>()>();
throw v;
label:
v = <io.netty.util.concurrent.SingleThreadEventExecutor: java.lang.Runnable NOOP_TASK>;
v = virtualinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: io.netty.util.concurrent.Future submit(java.lang.Runnable)>(v);
interfaceinvoke v.<io.netty.util.concurrent.Future: io.netty.util.concurrent.Future syncUninterruptibly()>();
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.lang.Thread thread>;
v = <io.netty.util.concurrent.SingleThreadEventExecutor: boolean $assertionsDisabled>;
if v != 0 goto label;
if v != null goto label;
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>()>();
throw v;
label:
v = new io.netty.util.concurrent.SingleThreadEventExecutor$DefaultThreadProperties;
specialinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor$DefaultThreadProperties: void <init>(java.lang.Thread)>(v);
v = v;
v = <io.netty.util.concurrent.SingleThreadEventExecutor: java.util.concurrent.atomic.AtomicReferenceFieldUpdater PROPERTIES_UPDATER>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicReferenceFieldUpdater: boolean compareAndSet(java.lang.Object,java.lang.Object,java.lang.Object)>(v, null, v);
if v != 0 goto label;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: io.netty.util.concurrent.ThreadProperties threadProperties>;
label:
return v;
}
protected boolean wakesUpForTask(java.lang.Runnable)
{
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.lang.Runnable v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: java.lang.Runnable;
return 1;
}
protected static void reject()
{
java.util.concurrent.RejectedExecutionException v;
v = new java.util.concurrent.RejectedExecutionException;
specialinvoke v.<java.util.concurrent.RejectedExecutionException: void <init>(java.lang.String)>("event executor terminated");
throw v;
}
protected final void reject(java.lang.Runnable)
{
io.netty.util.concurrent.RejectedExecutionHandler v;
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.lang.Runnable v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: java.lang.Runnable;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: io.netty.util.concurrent.RejectedExecutionHandler rejectedExecutionHandler>;
interfaceinvoke v.<io.netty.util.concurrent.RejectedExecutionHandler: void rejected(java.lang.Runnable,io.netty.util.concurrent.SingleThreadEventExecutor)>(v, v);
return;
}
private void startThread()
{
java.lang.Throwable v;
java.util.concurrent.atomic.AtomicIntegerFieldUpdater v, v;
io.netty.util.concurrent.SingleThreadEventExecutor v;
int v;
boolean v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: int state>;
if v != 1 goto label;
v = <io.netty.util.concurrent.SingleThreadEventExecutor: java.util.concurrent.atomic.AtomicIntegerFieldUpdater STATE_UPDATER>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicIntegerFieldUpdater: boolean compareAndSet(java.lang.Object,int,int)>(v, 1, 2);
if v == 0 goto label;
label:
specialinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: void doStartThread()>();
label:
goto label;
label:
v := @caughtexception;
v = <io.netty.util.concurrent.SingleThreadEventExecutor: java.util.concurrent.atomic.AtomicIntegerFieldUpdater STATE_UPDATER>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicIntegerFieldUpdater: boolean compareAndSet(java.lang.Object,int,int)>(v, 2, 1);
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
private boolean ensureThreadStarted(int)
{
java.lang.Throwable v;
java.util.concurrent.atomic.AtomicIntegerFieldUpdater v;
io.netty.util.concurrent.Promise v;
io.netty.util.concurrent.SingleThreadEventExecutor v;
int v;
boolean v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v := @parameter: int;
if v != 1 goto label;
label:
specialinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor: void doStartThread()>();
label:
goto label;
label:
v := @caughtexception;
v = <io.netty.util.concurrent.SingleThreadEventExecutor: java.util.concurrent.atomic.AtomicIntegerFieldUpdater STATE_UPDATER>;
virtualinvoke v.<java.util.concurrent.atomic.AtomicIntegerFieldUpdater: void set(java.lang.Object,int)>(v, 5);
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: io.netty.util.concurrent.Promise terminationFuture>;
interfaceinvoke v.<io.netty.util.concurrent.Promise: boolean tryFailure(java.lang.Throwable)>(v);
v = v instanceof java.lang.Exception;
if v != 0 goto label;
staticinvoke <io.netty.util.internal.PlatformDependent: void throwException(java.lang.Throwable)>(v);
label:
return 1;
label:
return 0;
catch java.lang.Throwable from label to label with label;
}
private void doStartThread()
{
io.netty.util.concurrent.SingleThreadEventExecutor$4 v;
io.netty.util.concurrent.SingleThreadEventExecutor v;
java.util.concurrent.Executor v;
java.lang.Thread v;
java.lang.AssertionError v;
boolean v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v = <io.netty.util.concurrent.SingleThreadEventExecutor: boolean $assertionsDisabled>;
if v != 0 goto label;
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.lang.Thread thread>;
if v == null goto label;
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>()>();
throw v;
label:
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.concurrent.Executor executor>;
v = new io.netty.util.concurrent.SingleThreadEventExecutor$4;
specialinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor$4: void <init>(io.netty.util.concurrent.SingleThreadEventExecutor)>(v);
interfaceinvoke v.<java.util.concurrent.Executor: void execute(java.lang.Runnable)>(v);
return;
}
final int drainTasks()
{
io.netty.util.concurrent.SingleThreadEventExecutor v;
int v;
java.lang.Object v;
java.util.Queue v;
java.lang.Runnable v;
v := @this: io.netty.util.concurrent.SingleThreadEventExecutor;
v = 0;
label:
v = v.<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.Queue taskQueue>;
v = interfaceinvoke v.<java.util.Queue: java.lang.Object poll()>();
if v == null goto label;
v = <io.netty.util.concurrent.SingleThreadEventExecutor: java.lang.Runnable WAKEUP_TASK>;
if v == v goto label;
v = v + 1;
goto label;
label:
return v;
}
static void <clinit>()
{
java.util.concurrent.atomic.AtomicIntegerFieldUpdater v;
java.util.concurrent.atomic.AtomicReferenceFieldUpdater v;
long v;
java.util.concurrent.TimeUnit v;
io.netty.util.concurrent.SingleThreadEventExecutor$1 v;
io.netty.util.internal.logging.InternalLogger v;
int v, v;
java.lang.Class v;
boolean v, v;
v = class "Lio/netty/util/concurrent/SingleThreadEventExecutor;";
v = virtualinvoke v.<java.lang.Class: boolean desiredAssertionStatus()>();
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
<io.netty.util.concurrent.SingleThreadEventExecutor: boolean $assertionsDisabled> = v;
v = staticinvoke <io.netty.util.internal.SystemPropertyUtil: int getInt(java.lang.String,int)>("io.netty.eventexecutor.maxPendingTasks", 2147483647);
v = staticinvoke <java.lang.Math: int max(int,int)>(16, v);
<io.netty.util.concurrent.SingleThreadEventExecutor: int DEFAULT_MAX_PENDING_EXECUTOR_TASKS> = v;
v = staticinvoke <io.netty.util.internal.logging.InternalLoggerFactory: io.netty.util.internal.logging.InternalLogger getInstance(java.lang.Class)>(class "Lio/netty/util/concurrent/SingleThreadEventExecutor;");
<io.netty.util.concurrent.SingleThreadEventExecutor: io.netty.util.internal.logging.InternalLogger logger> = v;
v = new io.netty.util.concurrent.SingleThreadEventExecutor$1;
specialinvoke v.<io.netty.util.concurrent.SingleThreadEventExecutor$1: void <init>()>();
<io.netty.util.concurrent.SingleThreadEventExecutor: java.lang.Runnable NOOP_TASK> = v;
v = staticinvoke <java.util.concurrent.atomic.AtomicIntegerFieldUpdater: java.util.concurrent.atomic.AtomicIntegerFieldUpdater newUpdater(java.lang.Class,java.lang.String)>(class "Lio/netty/util/concurrent/SingleThreadEventExecutor;", "state");
<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.concurrent.atomic.AtomicIntegerFieldUpdater STATE_UPDATER> = v;
v = staticinvoke <java.util.concurrent.atomic.AtomicReferenceFieldUpdater: java.util.concurrent.atomic.AtomicReferenceFieldUpdater newUpdater(java.lang.Class,java.lang.Class,java.lang.String)>(class "Lio/netty/util/concurrent/SingleThreadEventExecutor;", class "Lio/netty/util/concurrent/ThreadProperties;", "threadProperties");
<io.netty.util.concurrent.SingleThreadEventExecutor: java.util.concurrent.atomic.AtomicReferenceFieldUpdater PROPERTIES_UPDATER> = v;
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit SECONDS>;
v = virtualinvoke v.<java.util.concurrent.TimeUnit: long toNanos(long)>(1L);
<io.netty.util.concurrent.SingleThreadEventExecutor: long SCHEDULE_PURGE_INTERVAL> = v;
return;
}
}