public final class io.netty.channel.ChannelOutboundBuffer extends java.lang.Object
{
static final int CHANNEL_OUTBOUND_BUFFER_ENTRY_OVERHEAD;
private static final io.netty.util.internal.logging.InternalLogger logger;
private static final io.netty.util.concurrent.FastThreadLocal NIO_BUFFERS;
private final io.netty.channel.Channel channel;
private io.netty.channel.ChannelOutboundBuffer$Entry flushedEntry;
private io.netty.channel.ChannelOutboundBuffer$Entry unflushedEntry;
private io.netty.channel.ChannelOutboundBuffer$Entry tailEntry;
private int flushed;
private int nioBufferCount;
private long nioBufferSize;
private boolean inFail;
private static final java.util.concurrent.atomic.AtomicLongFieldUpdater TOTAL_PENDING_SIZE_UPDATER;
private volatile long totalPendingSize;
private static final java.util.concurrent.atomic.AtomicIntegerFieldUpdater UNWRITABLE_UPDATER;
private volatile int unwritable;
private volatile java.lang.Runnable fireChannelWritabilityChangedTask;
static final boolean $assertionsDisabled;
void <init>(io.netty.channel.AbstractChannel)
{
io.netty.channel.ChannelOutboundBuffer v;
io.netty.channel.AbstractChannel v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v := @parameter: io.netty.channel.AbstractChannel;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.Channel channel> = v;
return;
}
public void addMessage(java.lang.Object, int, io.netty.channel.ChannelPromise)
{
long v;
io.netty.channel.ChannelOutboundBuffer v;
io.netty.channel.ChannelPromise v;
int v, v;
java.lang.Object v;
io.netty.channel.ChannelOutboundBuffer$Entry v, v, v, v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v := @parameter: java.lang.Object;
v := @parameter: int;
v := @parameter: io.netty.channel.ChannelPromise;
v = staticinvoke <io.netty.channel.ChannelOutboundBuffer: long total(java.lang.Object)>(v);
v = staticinvoke <io.netty.channel.ChannelOutboundBuffer$Entry: io.netty.channel.ChannelOutboundBuffer$Entry newInstance(java.lang.Object,int,long,io.netty.channel.ChannelPromise)>(v, v, v, v);
v = v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.ChannelOutboundBuffer$Entry tailEntry>;
if v != null goto label;
v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.ChannelOutboundBuffer$Entry flushedEntry> = null;
goto label;
label:
v = v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.ChannelOutboundBuffer$Entry tailEntry>;
v.<io.netty.channel.ChannelOutboundBuffer$Entry: io.netty.channel.ChannelOutboundBuffer$Entry next> = v;
label:
v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.ChannelOutboundBuffer$Entry tailEntry> = v;
v = v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.ChannelOutboundBuffer$Entry unflushedEntry>;
if v != null goto label;
v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.ChannelOutboundBuffer$Entry unflushedEntry> = v;
label:
v = v.<io.netty.channel.ChannelOutboundBuffer$Entry: int pendingSize>;
specialinvoke v.<io.netty.channel.ChannelOutboundBuffer: void incrementPendingOutboundBytes(long,boolean)>(v, 0);
return;
}
public void addFlush()
{
io.netty.channel.ChannelOutboundBuffer v;
io.netty.channel.ChannelPromise v;
int v, v, v;
io.netty.channel.ChannelOutboundBuffer$Entry v, v;
boolean v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v = v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.ChannelOutboundBuffer$Entry unflushedEntry>;
if v == null goto label;
v = v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.ChannelOutboundBuffer$Entry flushedEntry>;
if v != null goto label;
v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.ChannelOutboundBuffer$Entry flushedEntry> = v;
label:
v = v.<io.netty.channel.ChannelOutboundBuffer: int flushed>;
v = v + 1;
v.<io.netty.channel.ChannelOutboundBuffer: int flushed> = v;
v = v.<io.netty.channel.ChannelOutboundBuffer$Entry: io.netty.channel.ChannelPromise promise>;
v = interfaceinvoke v.<io.netty.channel.ChannelPromise: boolean setUncancellable()>();
if v != 0 goto label;
v = virtualinvoke v.<io.netty.channel.ChannelOutboundBuffer$Entry: int cancel()>();
specialinvoke v.<io.netty.channel.ChannelOutboundBuffer: void decrementPendingOutboundBytes(long,boolean,boolean)>(v, 0, 1);
label:
v = v.<io.netty.channel.ChannelOutboundBuffer$Entry: io.netty.channel.ChannelOutboundBuffer$Entry next>;
if v != null goto label;
v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.ChannelOutboundBuffer$Entry unflushedEntry> = null;
label:
return;
}
void incrementPendingOutboundBytes(long)
{
io.netty.channel.ChannelOutboundBuffer v;
long v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v := @parameter: long;
specialinvoke v.<io.netty.channel.ChannelOutboundBuffer: void incrementPendingOutboundBytes(long,boolean)>(v, 1);
return;
}
private void incrementPendingOutboundBytes(long, boolean)
{
java.util.concurrent.atomic.AtomicLongFieldUpdater v;
long v, v;
io.netty.channel.Channel v;
io.netty.channel.ChannelOutboundBuffer v;
byte v, v;
io.netty.channel.ChannelConfig v;
int v;
boolean v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v := @parameter: long;
v := @parameter: boolean;
v = v cmp 0L;
if v != 0 goto label;
return;
label:
v = <io.netty.channel.ChannelOutboundBuffer: java.util.concurrent.atomic.AtomicLongFieldUpdater TOTAL_PENDING_SIZE_UPDATER>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLongFieldUpdater: long addAndGet(java.lang.Object,long)>(v, v);
v = v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.Channel channel>;
v = interfaceinvoke v.<io.netty.channel.Channel: io.netty.channel.ChannelConfig config()>();
v = interfaceinvoke v.<io.netty.channel.ChannelConfig: int getWriteBufferHighWaterMark()>();
v = v cmp v;
if v <= 0 goto label;
specialinvoke v.<io.netty.channel.ChannelOutboundBuffer: void setUnwritable(boolean)>(v);
label:
return;
}
void decrementPendingOutboundBytes(long)
{
io.netty.channel.ChannelOutboundBuffer v;
long v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v := @parameter: long;
specialinvoke v.<io.netty.channel.ChannelOutboundBuffer: void decrementPendingOutboundBytes(long,boolean,boolean)>(v, 1, 1);
return;
}
private void decrementPendingOutboundBytes(long, boolean, boolean)
{
java.util.concurrent.atomic.AtomicLongFieldUpdater v;
long v, v, v;
io.netty.channel.Channel v;
io.netty.channel.ChannelOutboundBuffer v;
byte v, v;
io.netty.channel.ChannelConfig v;
int v;
boolean v, v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v := @parameter: long;
v := @parameter: boolean;
v := @parameter: boolean;
v = v cmp 0L;
if v != 0 goto label;
return;
label:
v = <io.netty.channel.ChannelOutboundBuffer: java.util.concurrent.atomic.AtomicLongFieldUpdater TOTAL_PENDING_SIZE_UPDATER>;
v = neg v;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicLongFieldUpdater: long addAndGet(java.lang.Object,long)>(v, v);
if v == 0 goto label;
v = v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.Channel channel>;
v = interfaceinvoke v.<io.netty.channel.Channel: io.netty.channel.ChannelConfig config()>();
v = interfaceinvoke v.<io.netty.channel.ChannelConfig: int getWriteBufferLowWaterMark()>();
v = v cmp v;
if v >= 0 goto label;
specialinvoke v.<io.netty.channel.ChannelOutboundBuffer: void setWritable(boolean)>(v);
label:
return;
}
private static long total(java.lang.Object)
{
long v;
io.netty.buffer.ByteBuf v;
int v, v;
java.lang.Object v;
boolean v, v, v;
v := @parameter: java.lang.Object;
v = v instanceof io.netty.buffer.ByteBuf;
if v == 0 goto label;
v = virtualinvoke v.<io.netty.buffer.ByteBuf: int readableBytes()>();
return v;
label:
v = v instanceof io.netty.channel.FileRegion;
if v == 0 goto label;
v = interfaceinvoke v.<io.netty.channel.FileRegion: long count()>();
return v;
label:
v = v instanceof io.netty.buffer.ByteBufHolder;
if v == 0 goto label;
v = interfaceinvoke v.<io.netty.buffer.ByteBufHolder: io.netty.buffer.ByteBuf content()>();
v = virtualinvoke v.<io.netty.buffer.ByteBuf: int readableBytes()>();
return v;
label:
return -1L;
}
public java.lang.Object current()
{
io.netty.channel.ChannelOutboundBuffer v;
java.lang.Object v;
io.netty.channel.ChannelOutboundBuffer$Entry v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v = v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.ChannelOutboundBuffer$Entry flushedEntry>;
if v != null goto label;
return null;
label:
v = v.<io.netty.channel.ChannelOutboundBuffer$Entry: java.lang.Object msg>;
return v;
}
public long currentProgress()
{
io.netty.channel.ChannelOutboundBuffer v;
long v;
io.netty.channel.ChannelOutboundBuffer$Entry v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v = v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.ChannelOutboundBuffer$Entry flushedEntry>;
if v != null goto label;
return 0L;
label:
v = v.<io.netty.channel.ChannelOutboundBuffer$Entry: long progress>;
return v;
}
public void progress(long)
{
long v, v, v, v, v;
java.lang.AssertionError v, v;
io.netty.channel.ChannelOutboundBuffer v;
io.netty.channel.ChannelPromise v;
java.lang.Class v;
io.netty.channel.ChannelOutboundBuffer$Entry v;
boolean v, v, v, v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v := @parameter: long;
v = v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.ChannelOutboundBuffer$Entry flushedEntry>;
v = <io.netty.channel.ChannelOutboundBuffer: 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 = v.<io.netty.channel.ChannelOutboundBuffer$Entry: io.netty.channel.ChannelPromise promise>;
v = v.<io.netty.channel.ChannelOutboundBuffer$Entry: long progress>;
v = v + v;
v.<io.netty.channel.ChannelOutboundBuffer$Entry: long progress> = v;
v = <io.netty.channel.ChannelOutboundBuffer: 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 = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
if v != class "Lio/netty/channel/VoidChannelPromise;" goto label;
return;
label:
v = v instanceof io.netty.channel.DefaultChannelProgressivePromise;
if v == 0 goto label;
v = v.<io.netty.channel.ChannelOutboundBuffer$Entry: long total>;
virtualinvoke v.<io.netty.channel.DefaultChannelProgressivePromise: boolean tryProgress(long,long)>(v, v);
goto label;
label:
v = v instanceof io.netty.channel.ChannelProgressivePromise;
if v == 0 goto label;
v = v.<io.netty.channel.ChannelOutboundBuffer$Entry: long total>;
interfaceinvoke v.<io.netty.channel.ChannelProgressivePromise: boolean tryProgress(long,long)>(v, v);
label:
return;
}
public boolean remove()
{
io.netty.channel.ChannelOutboundBuffer v;
io.netty.channel.ChannelPromise v;
int v;
java.lang.Object v;
io.netty.channel.ChannelOutboundBuffer$Entry v;
boolean v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v = v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.ChannelOutboundBuffer$Entry flushedEntry>;
if v != null goto label;
specialinvoke v.<io.netty.channel.ChannelOutboundBuffer: void clearNioBuffers()>();
return 0;
label:
v = v.<io.netty.channel.ChannelOutboundBuffer$Entry: java.lang.Object msg>;
v = v.<io.netty.channel.ChannelOutboundBuffer$Entry: io.netty.channel.ChannelPromise promise>;
v = v.<io.netty.channel.ChannelOutboundBuffer$Entry: int pendingSize>;
specialinvoke v.<io.netty.channel.ChannelOutboundBuffer: void removeEntry(io.netty.channel.ChannelOutboundBuffer$Entry)>(v);
v = v.<io.netty.channel.ChannelOutboundBuffer$Entry: boolean cancelled>;
if v != 0 goto label;
staticinvoke <io.netty.util.ReferenceCountUtil: void safeRelease(java.lang.Object)>(v);
staticinvoke <io.netty.channel.ChannelOutboundBuffer: void safeSuccess(io.netty.channel.ChannelPromise)>(v);
specialinvoke v.<io.netty.channel.ChannelOutboundBuffer: void decrementPendingOutboundBytes(long,boolean,boolean)>(v, 0, 1);
label:
virtualinvoke v.<io.netty.channel.ChannelOutboundBuffer$Entry: void unguardedRecycle()>();
return 1;
}
public boolean remove(java.lang.Throwable)
{
io.netty.channel.ChannelOutboundBuffer v;
java.lang.Throwable v;
boolean v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v := @parameter: java.lang.Throwable;
v = specialinvoke v.<io.netty.channel.ChannelOutboundBuffer: boolean remove0(java.lang.Throwable,boolean)>(v, 1);
return v;
}
private boolean remove0(java.lang.Throwable, boolean)
{
java.lang.Throwable v;
io.netty.channel.ChannelOutboundBuffer v;
io.netty.channel.ChannelPromise v;
int v;
java.lang.Object v;
io.netty.channel.ChannelOutboundBuffer$Entry v;
boolean v, v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v := @parameter: java.lang.Throwable;
v := @parameter: boolean;
v = v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.ChannelOutboundBuffer$Entry flushedEntry>;
if v != null goto label;
specialinvoke v.<io.netty.channel.ChannelOutboundBuffer: void clearNioBuffers()>();
return 0;
label:
v = v.<io.netty.channel.ChannelOutboundBuffer$Entry: java.lang.Object msg>;
v = v.<io.netty.channel.ChannelOutboundBuffer$Entry: io.netty.channel.ChannelPromise promise>;
v = v.<io.netty.channel.ChannelOutboundBuffer$Entry: int pendingSize>;
specialinvoke v.<io.netty.channel.ChannelOutboundBuffer: void removeEntry(io.netty.channel.ChannelOutboundBuffer$Entry)>(v);
v = v.<io.netty.channel.ChannelOutboundBuffer$Entry: boolean cancelled>;
if v != 0 goto label;
staticinvoke <io.netty.util.ReferenceCountUtil: void safeRelease(java.lang.Object)>(v);
staticinvoke <io.netty.channel.ChannelOutboundBuffer: void safeFail(io.netty.channel.ChannelPromise,java.lang.Throwable)>(v, v);
specialinvoke v.<io.netty.channel.ChannelOutboundBuffer: void decrementPendingOutboundBytes(long,boolean,boolean)>(v, 0, v);
label:
virtualinvoke v.<io.netty.channel.ChannelOutboundBuffer$Entry: void unguardedRecycle()>();
return 1;
}
private void removeEntry(io.netty.channel.ChannelOutboundBuffer$Entry)
{
io.netty.channel.ChannelOutboundBuffer v;
int v, v;
io.netty.channel.ChannelOutboundBuffer$Entry v, v, v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v := @parameter: io.netty.channel.ChannelOutboundBuffer$Entry;
v = v.<io.netty.channel.ChannelOutboundBuffer: int flushed>;
v = v - 1;
v.<io.netty.channel.ChannelOutboundBuffer: int flushed> = v;
if v != 0 goto label;
v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.ChannelOutboundBuffer$Entry flushedEntry> = null;
v = v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.ChannelOutboundBuffer$Entry tailEntry>;
if v != v goto label;
v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.ChannelOutboundBuffer$Entry tailEntry> = null;
v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.ChannelOutboundBuffer$Entry unflushedEntry> = null;
goto label;
label:
v = v.<io.netty.channel.ChannelOutboundBuffer$Entry: io.netty.channel.ChannelOutboundBuffer$Entry next>;
v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.ChannelOutboundBuffer$Entry flushedEntry> = v;
label:
return;
}
public void removeBytes(long)
{
long v;
java.lang.AssertionError v;
io.netty.channel.ChannelOutboundBuffer v;
byte v, v, v, v;
int v, v, v, v;
java.lang.Object v;
boolean v, v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v := @parameter: long;
label:
v = virtualinvoke v.<io.netty.channel.ChannelOutboundBuffer: java.lang.Object current()>();
v = v instanceof io.netty.buffer.ByteBuf;
if v != 0 goto label;
v = <io.netty.channel.ChannelOutboundBuffer: boolean $assertionsDisabled>;
if v != 0 goto label;
v = v cmp 0L;
if v == 0 goto label;
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>()>();
throw v;
label:
v = virtualinvoke v.<io.netty.buffer.ByteBuf: int readerIndex()>();
v = virtualinvoke v.<io.netty.buffer.ByteBuf: int writerIndex()>();
v = v - v;
v = v cmp v;
if v > 0 goto label;
v = v cmp 0L;
if v == 0 goto label;
virtualinvoke v.<io.netty.channel.ChannelOutboundBuffer: void progress(long)>(v);
v = v - v;
label:
virtualinvoke v.<io.netty.channel.ChannelOutboundBuffer: boolean remove()>();
goto label;
label:
v = v cmp 0L;
if v == 0 goto label;
v = v + v;
virtualinvoke v.<io.netty.buffer.ByteBuf: io.netty.buffer.ByteBuf readerIndex(int)>(v);
virtualinvoke v.<io.netty.channel.ChannelOutboundBuffer: void progress(long)>(v);
label:
specialinvoke v.<io.netty.channel.ChannelOutboundBuffer: void clearNioBuffers()>();
return;
}
private void clearNioBuffers()
{
io.netty.channel.ChannelOutboundBuffer v;
io.netty.util.concurrent.FastThreadLocal v;
int v;
java.lang.Object v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v = v.<io.netty.channel.ChannelOutboundBuffer: int nioBufferCount>;
if v <= 0 goto label;
v.<io.netty.channel.ChannelOutboundBuffer: int nioBufferCount> = 0;
v = <io.netty.channel.ChannelOutboundBuffer: io.netty.util.concurrent.FastThreadLocal NIO_BUFFERS>;
v = virtualinvoke v.<io.netty.util.concurrent.FastThreadLocal: java.lang.Object get()>();
staticinvoke <java.util.Arrays: void fill(java.lang.Object[],int,int,java.lang.Object)>(v, 0, v, null);
label:
return;
}
public java.nio.ByteBuffer[] nioBuffers()
{
io.netty.channel.ChannelOutboundBuffer v;
java.nio.ByteBuffer[] v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v = virtualinvoke v.<io.netty.channel.ChannelOutboundBuffer: java.nio.ByteBuffer[] nioBuffers(int,long)>(2147483647, 2147483647L);
return v;
}
public java.nio.ByteBuffer[] nioBuffers(int, long)
{
java.nio.ByteBuffer v, v;
byte v, v;
boolean v, v, v, v, v;
io.netty.channel.ChannelOutboundBuffer v;
io.netty.channel.ChannelOutboundBuffer$Entry v;
io.netty.util.internal.InternalThreadLocalMap v;
long v, v, v;
java.lang.AssertionError v, v;
io.netty.util.concurrent.FastThreadLocal v, v;
int v, v, v, v, v, v, v, v, v, v, v, v;
java.lang.Object v, v, v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v := @parameter: int;
v := @parameter: long;
v = <io.netty.channel.ChannelOutboundBuffer: boolean $assertionsDisabled>;
if v != 0 goto label;
if v > 0 goto label;
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>()>();
throw v;
label:
v = <io.netty.channel.ChannelOutboundBuffer: boolean $assertionsDisabled>;
if v != 0 goto label;
v = v cmp 0L;
if v > 0 goto label;
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>()>();
throw v;
label:
v = 0L;
v = 0;
v = staticinvoke <io.netty.util.internal.InternalThreadLocalMap: io.netty.util.internal.InternalThreadLocalMap get()>();
v = <io.netty.channel.ChannelOutboundBuffer: io.netty.util.concurrent.FastThreadLocal NIO_BUFFERS>;
v = virtualinvoke v.<io.netty.util.concurrent.FastThreadLocal: java.lang.Object get(io.netty.util.internal.InternalThreadLocalMap)>(v);
v = v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.ChannelOutboundBuffer$Entry flushedEntry>;
label:
v = specialinvoke v.<io.netty.channel.ChannelOutboundBuffer: boolean isFlushedEntry(io.netty.channel.ChannelOutboundBuffer$Entry)>(v);
if v == 0 goto label;
v = v.<io.netty.channel.ChannelOutboundBuffer$Entry: java.lang.Object msg>;
v = v instanceof io.netty.buffer.ByteBuf;
if v == 0 goto label;
v = v.<io.netty.channel.ChannelOutboundBuffer$Entry: boolean cancelled>;
if v != 0 goto label;
v = v.<io.netty.channel.ChannelOutboundBuffer$Entry: java.lang.Object msg>;
v = virtualinvoke v.<io.netty.buffer.ByteBuf: int readerIndex()>();
v = virtualinvoke v.<io.netty.buffer.ByteBuf: int writerIndex()>();
v = v - v;
if v <= 0 goto label;
v = v - v;
v = v cmp v;
if v >= 0 goto label;
if v != 0 goto label;
label:
v = v + v;
v = v.<io.netty.channel.ChannelOutboundBuffer$Entry: int count>;
v = (int) -1;
if v != v goto label;
v = virtualinvoke v.<io.netty.buffer.ByteBuf: int nioBufferCount()>();
v = v;
v.<io.netty.channel.ChannelOutboundBuffer$Entry: int count> = v;
label:
v = v + v;
v = staticinvoke <java.lang.Math: int min(int,int)>(v, v);
v = lengthof v;
if v <= v goto label;
v = staticinvoke <io.netty.channel.ChannelOutboundBuffer: java.nio.ByteBuffer[] expandNioBufferArray(java.nio.ByteBuffer[],int,int)>(v, v, v);
v = <io.netty.channel.ChannelOutboundBuffer: io.netty.util.concurrent.FastThreadLocal NIO_BUFFERS>;
virtualinvoke v.<io.netty.util.concurrent.FastThreadLocal: void set(io.netty.util.internal.InternalThreadLocalMap,java.lang.Object)>(v, v);
label:
if v != 1 goto label;
v = v.<io.netty.channel.ChannelOutboundBuffer$Entry: java.nio.ByteBuffer buf>;
if v != null goto label;
v = virtualinvoke v.<io.netty.buffer.ByteBuf: java.nio.ByteBuffer internalNioBuffer(int,int)>(v, v);
v = v;
v.<io.netty.channel.ChannelOutboundBuffer$Entry: java.nio.ByteBuffer buf> = v;
label:
v = v;
v = v + 1;
v[v] = v;
goto label;
label:
v = staticinvoke <io.netty.channel.ChannelOutboundBuffer: int nioBuffers(io.netty.channel.ChannelOutboundBuffer$Entry,io.netty.buffer.ByteBuf,java.nio.ByteBuffer[],int,int)>(v, v, v, v, v);
label:
if v >= v goto label;
label:
v = v.<io.netty.channel.ChannelOutboundBuffer$Entry: io.netty.channel.ChannelOutboundBuffer$Entry next>;
goto label;
label:
v.<io.netty.channel.ChannelOutboundBuffer: int nioBufferCount> = v;
v.<io.netty.channel.ChannelOutboundBuffer: long nioBufferSize> = v;
return v;
}
private static int nioBuffers(io.netty.channel.ChannelOutboundBuffer$Entry, io.netty.buffer.ByteBuf, java.nio.ByteBuffer[], int, int)
{
java.nio.ByteBuffer[] v, v, v;
java.nio.ByteBuffer v;
io.netty.buffer.ByteBuf v;
int v, v, v, v, v;
io.netty.channel.ChannelOutboundBuffer$Entry v;
boolean v;
v := @parameter: io.netty.channel.ChannelOutboundBuffer$Entry;
v := @parameter: io.netty.buffer.ByteBuf;
v := @parameter: java.nio.ByteBuffer[];
v := @parameter: int;
v := @parameter: int;
v = v.<io.netty.channel.ChannelOutboundBuffer$Entry: java.nio.ByteBuffer[] bufs>;
if v != null goto label;
v = virtualinvoke v.<io.netty.buffer.ByteBuf: java.nio.ByteBuffer[] nioBuffers()>();
v = v;
v.<io.netty.channel.ChannelOutboundBuffer$Entry: java.nio.ByteBuffer[] bufs> = v;
label:
v = 0;
label:
v = lengthof v;
if v >= v goto label;
if v >= v goto label;
v = v[v];
if v == null goto label;
v = virtualinvoke v.<java.nio.ByteBuffer: boolean hasRemaining()>();
if v == 0 goto label;
v = v;
v = v + 1;
v[v] = v;
label:
v = v + 1;
goto label;
label:
return v;
}
private static java.nio.ByteBuffer[] expandNioBufferArray(java.nio.ByteBuffer[], int, int)
{
java.lang.IllegalStateException v;
java.nio.ByteBuffer[] v, v;
int v, v, v;
v := @parameter: java.nio.ByteBuffer[];
v := @parameter: int;
v := @parameter: int;
v = lengthof v;
label:
v = v << 1;
if v >= 0 goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>()>();
throw v;
label:
if v > v goto label;
v = newarray (java.nio.ByteBuffer)[v];
staticinvoke <java.lang.System: void arraycopy(java.lang.Object,int,java.lang.Object,int,int)>(v, 0, v, 0, v);
return v;
}
public int nioBufferCount()
{
int v;
io.netty.channel.ChannelOutboundBuffer v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v = v.<io.netty.channel.ChannelOutboundBuffer: int nioBufferCount>;
return v;
}
public long nioBufferSize()
{
io.netty.channel.ChannelOutboundBuffer v;
long v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v = v.<io.netty.channel.ChannelOutboundBuffer: long nioBufferSize>;
return v;
}
public boolean isWritable()
{
int v;
io.netty.channel.ChannelOutboundBuffer v;
boolean v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v = v.<io.netty.channel.ChannelOutboundBuffer: int unwritable>;
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public boolean getUserDefinedWritability(int)
{
io.netty.channel.ChannelOutboundBuffer v;
int v, v, v, v;
boolean v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v := @parameter: int;
v = v.<io.netty.channel.ChannelOutboundBuffer: int unwritable>;
v = staticinvoke <io.netty.channel.ChannelOutboundBuffer: int writabilityMask(int)>(v);
v = v & v;
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public void setUserDefinedWritability(int, boolean)
{
int v;
io.netty.channel.ChannelOutboundBuffer v;
boolean v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v := @parameter: int;
v := @parameter: boolean;
if v == 0 goto label;
specialinvoke v.<io.netty.channel.ChannelOutboundBuffer: void setUserDefinedWritability(int)>(v);
goto label;
label:
specialinvoke v.<io.netty.channel.ChannelOutboundBuffer: void clearUserDefinedWritability(int)>(v);
label:
return;
}
private void setUserDefinedWritability(int)
{
java.util.concurrent.atomic.AtomicIntegerFieldUpdater v;
io.netty.channel.ChannelOutboundBuffer v;
int v, v, v, v, v, v;
boolean v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v := @parameter: int;
v = staticinvoke <io.netty.channel.ChannelOutboundBuffer: int writabilityMask(int)>(v);
v = (int) -1;
v = v ^ v;
label:
v = v.<io.netty.channel.ChannelOutboundBuffer: int unwritable>;
v = v & v;
v = <io.netty.channel.ChannelOutboundBuffer: java.util.concurrent.atomic.AtomicIntegerFieldUpdater UNWRITABLE_UPDATER>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicIntegerFieldUpdater: boolean compareAndSet(java.lang.Object,int,int)>(v, v, v);
if v == 0 goto label;
if v == 0 goto label;
if v != 0 goto label;
specialinvoke v.<io.netty.channel.ChannelOutboundBuffer: void fireChannelWritabilityChanged(boolean)>(1);
label:
return;
}
private void clearUserDefinedWritability(int)
{
io.netty.channel.ChannelOutboundBuffer v;
java.util.concurrent.atomic.AtomicIntegerFieldUpdater v;
int v, v, v, v;
boolean v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v := @parameter: int;
v = staticinvoke <io.netty.channel.ChannelOutboundBuffer: int writabilityMask(int)>(v);
label:
v = v.<io.netty.channel.ChannelOutboundBuffer: int unwritable>;
v = v | v;
v = <io.netty.channel.ChannelOutboundBuffer: java.util.concurrent.atomic.AtomicIntegerFieldUpdater UNWRITABLE_UPDATER>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicIntegerFieldUpdater: boolean compareAndSet(java.lang.Object,int,int)>(v, v, v);
if v == 0 goto label;
if v != 0 goto label;
if v == 0 goto label;
specialinvoke v.<io.netty.channel.ChannelOutboundBuffer: void fireChannelWritabilityChanged(boolean)>(1);
label:
return;
}
private static int writabilityMask(int)
{
int v, v;
java.lang.String v;
java.lang.IllegalArgumentException v;
v := @parameter: int;
if v < 1 goto label;
if v <= 31 goto label;
label:
v = new java.lang.IllegalArgumentException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (int)>(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[])>("index: \u (expected: 1~31)");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
v = 1 << v;
return v;
}
private void setWritable(boolean)
{
io.netty.channel.ChannelOutboundBuffer v;
java.util.concurrent.atomic.AtomicIntegerFieldUpdater v;
int v, v, v;
boolean v, v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v := @parameter: boolean;
label:
v = v.<io.netty.channel.ChannelOutboundBuffer: int unwritable>;
v = (int) -2;
v = v & v;
v = <io.netty.channel.ChannelOutboundBuffer: java.util.concurrent.atomic.AtomicIntegerFieldUpdater UNWRITABLE_UPDATER>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicIntegerFieldUpdater: boolean compareAndSet(java.lang.Object,int,int)>(v, v, v);
if v == 0 goto label;
if v == 0 goto label;
if v != 0 goto label;
specialinvoke v.<io.netty.channel.ChannelOutboundBuffer: void fireChannelWritabilityChanged(boolean)>(v);
label:
return;
}
private void setUnwritable(boolean)
{
io.netty.channel.ChannelOutboundBuffer v;
java.util.concurrent.atomic.AtomicIntegerFieldUpdater v;
int v, v;
boolean v, v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v := @parameter: boolean;
label:
v = v.<io.netty.channel.ChannelOutboundBuffer: int unwritable>;
v = v | 1;
v = <io.netty.channel.ChannelOutboundBuffer: java.util.concurrent.atomic.AtomicIntegerFieldUpdater UNWRITABLE_UPDATER>;
v = virtualinvoke v.<java.util.concurrent.atomic.AtomicIntegerFieldUpdater: boolean compareAndSet(java.lang.Object,int,int)>(v, v, v);
if v == 0 goto label;
if v != 0 goto label;
specialinvoke v.<io.netty.channel.ChannelOutboundBuffer: void fireChannelWritabilityChanged(boolean)>(v);
label:
return;
}
private void fireChannelWritabilityChanged(boolean)
{
io.netty.channel.ChannelPipeline v;
io.netty.channel.EventLoop v;
java.lang.Runnable v;
io.netty.channel.Channel v, v;
io.netty.channel.ChannelOutboundBuffer v;
io.netty.channel.ChannelOutboundBuffer$2 v;
boolean v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v := @parameter: boolean;
v = v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.Channel channel>;
v = interfaceinvoke v.<io.netty.channel.Channel: io.netty.channel.ChannelPipeline pipeline()>();
if v == 0 goto label;
v = v.<io.netty.channel.ChannelOutboundBuffer: java.lang.Runnable fireChannelWritabilityChangedTask>;
if v != null goto label;
v = new io.netty.channel.ChannelOutboundBuffer$2;
specialinvoke v.<io.netty.channel.ChannelOutboundBuffer$2: void <init>(io.netty.channel.ChannelOutboundBuffer,io.netty.channel.ChannelPipeline)>(v, v);
v = v;
v.<io.netty.channel.ChannelOutboundBuffer: java.lang.Runnable fireChannelWritabilityChangedTask> = v;
label:
v = v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.Channel channel>;
v = interfaceinvoke v.<io.netty.channel.Channel: io.netty.channel.EventLoop eventLoop()>();
interfaceinvoke v.<io.netty.channel.EventLoop: void execute(java.lang.Runnable)>(v);
goto label;
label:
interfaceinvoke v.<io.netty.channel.ChannelPipeline: io.netty.channel.ChannelPipeline fireChannelWritabilityChanged()>();
label:
return;
}
public int size()
{
int v;
io.netty.channel.ChannelOutboundBuffer v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v = v.<io.netty.channel.ChannelOutboundBuffer: int flushed>;
return v;
}
public boolean isEmpty()
{
int v;
io.netty.channel.ChannelOutboundBuffer v;
boolean v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v = v.<io.netty.channel.ChannelOutboundBuffer: int flushed>;
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
void failFlushed(java.lang.Throwable, boolean)
{
io.netty.channel.ChannelOutboundBuffer v;
java.lang.Throwable v, v;
boolean v, v, v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v := @parameter: java.lang.Throwable;
v := @parameter: boolean;
v = v.<io.netty.channel.ChannelOutboundBuffer: boolean inFail>;
if v == 0 goto label;
return;
label:
v.<io.netty.channel.ChannelOutboundBuffer: boolean inFail> = 1;
label:
v = specialinvoke v.<io.netty.channel.ChannelOutboundBuffer: boolean remove0(java.lang.Throwable,boolean)>(v, v);
if v != 0 goto label;
label:
v.<io.netty.channel.ChannelOutboundBuffer: boolean inFail> = 0;
goto label;
label:
v := @caughtexception;
v.<io.netty.channel.ChannelOutboundBuffer: boolean inFail> = 0;
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
void close(java.lang.Throwable, boolean)
{
java.lang.Throwable v, v;
java.lang.IllegalStateException v, v;
io.netty.channel.ChannelPromise v;
int v, v;
boolean v, v, v, v, v;
io.netty.channel.ChannelOutboundBuffer$3 v;
java.util.concurrent.atomic.AtomicLongFieldUpdater v;
io.netty.channel.EventLoop v;
io.netty.channel.Channel v, v;
io.netty.channel.ChannelOutboundBuffer v;
java.lang.Object v;
io.netty.channel.ChannelOutboundBuffer$Entry v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v := @parameter: java.lang.Throwable;
v := @parameter: boolean;
v = v.<io.netty.channel.ChannelOutboundBuffer: boolean inFail>;
if v == 0 goto label;
v = v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.Channel channel>;
v = interfaceinvoke v.<io.netty.channel.Channel: io.netty.channel.EventLoop eventLoop()>();
v = new io.netty.channel.ChannelOutboundBuffer$3;
specialinvoke v.<io.netty.channel.ChannelOutboundBuffer$3: void <init>(io.netty.channel.ChannelOutboundBuffer,java.lang.Throwable,boolean)>(v, v, v);
interfaceinvoke v.<io.netty.channel.EventLoop: void execute(java.lang.Runnable)>(v);
return;
label:
v.<io.netty.channel.ChannelOutboundBuffer: boolean inFail> = 1;
if v != 0 goto label;
v = v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.Channel channel>;
v = interfaceinvoke v.<io.netty.channel.Channel: boolean isOpen()>();
if v == 0 goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("close() must be invoked after the channel is closed.");
throw v;
label:
v = virtualinvoke v.<io.netty.channel.ChannelOutboundBuffer: boolean isEmpty()>();
if v != 0 goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("close() must be invoked after all flushed writes are handled.");
throw v;
label:
v = v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.ChannelOutboundBuffer$Entry unflushedEntry>;
label:
if v == null goto label;
v = v.<io.netty.channel.ChannelOutboundBuffer$Entry: int pendingSize>;
v = <io.netty.channel.ChannelOutboundBuffer: java.util.concurrent.atomic.AtomicLongFieldUpdater TOTAL_PENDING_SIZE_UPDATER>;
v = neg v;
virtualinvoke v.<java.util.concurrent.atomic.AtomicLongFieldUpdater: long addAndGet(java.lang.Object,long)>(v, v);
v = v.<io.netty.channel.ChannelOutboundBuffer$Entry: boolean cancelled>;
if v != 0 goto label;
v = v.<io.netty.channel.ChannelOutboundBuffer$Entry: java.lang.Object msg>;
staticinvoke <io.netty.util.ReferenceCountUtil: void safeRelease(java.lang.Object)>(v);
v = v.<io.netty.channel.ChannelOutboundBuffer$Entry: io.netty.channel.ChannelPromise promise>;
staticinvoke <io.netty.channel.ChannelOutboundBuffer: void safeFail(io.netty.channel.ChannelPromise,java.lang.Throwable)>(v, v);
label:
v = virtualinvoke v.<io.netty.channel.ChannelOutboundBuffer$Entry: io.netty.channel.ChannelOutboundBuffer$Entry unguardedRecycleAndGetNext()>();
goto label;
label:
v.<io.netty.channel.ChannelOutboundBuffer: boolean inFail> = 0;
goto label;
label:
v := @caughtexception;
v.<io.netty.channel.ChannelOutboundBuffer: boolean inFail> = 0;
throw v;
label:
specialinvoke v.<io.netty.channel.ChannelOutboundBuffer: void clearNioBuffers()>();
return;
catch java.lang.Throwable from label to label with label;
}
void close(java.nio.channels.ClosedChannelException)
{
io.netty.channel.ChannelOutboundBuffer v;
java.nio.channels.ClosedChannelException v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v := @parameter: java.nio.channels.ClosedChannelException;
virtualinvoke v.<io.netty.channel.ChannelOutboundBuffer: void close(java.lang.Throwable,boolean)>(v, 0);
return;
}
private static void safeSuccess(io.netty.channel.ChannelPromise)
{
io.netty.channel.ChannelPromise v;
boolean v;
io.netty.util.internal.logging.InternalLogger v;
v := @parameter: io.netty.channel.ChannelPromise;
v = v instanceof io.netty.channel.VoidChannelPromise;
if v == 0 goto label;
v = null;
goto label;
label:
v = <io.netty.channel.ChannelOutboundBuffer: io.netty.util.internal.logging.InternalLogger logger>;
label:
staticinvoke <io.netty.util.internal.PromiseNotificationUtil: void trySuccess(io.netty.util.concurrent.Promise,java.lang.Object,io.netty.util.internal.logging.InternalLogger)>(v, null, v);
return;
}
private static void safeFail(io.netty.channel.ChannelPromise, java.lang.Throwable)
{
java.lang.Throwable v;
io.netty.channel.ChannelPromise v;
io.netty.util.internal.logging.InternalLogger v;
boolean v;
v := @parameter: io.netty.channel.ChannelPromise;
v := @parameter: java.lang.Throwable;
v = v instanceof io.netty.channel.VoidChannelPromise;
if v == 0 goto label;
v = null;
goto label;
label:
v = <io.netty.channel.ChannelOutboundBuffer: io.netty.util.internal.logging.InternalLogger logger>;
label:
staticinvoke <io.netty.util.internal.PromiseNotificationUtil: void tryFailure(io.netty.util.concurrent.Promise,java.lang.Throwable,io.netty.util.internal.logging.InternalLogger)>(v, v, v);
return;
}
public void recycle()
{
io.netty.channel.ChannelOutboundBuffer v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
return;
}
public long totalPendingWriteBytes()
{
io.netty.channel.ChannelOutboundBuffer v;
long v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v = v.<io.netty.channel.ChannelOutboundBuffer: long totalPendingSize>;
return v;
}
public long bytesBeforeUnwritable()
{
long v, v, v;
io.netty.channel.Channel v;
io.netty.channel.ChannelOutboundBuffer v;
byte v;
io.netty.channel.ChannelConfig v;
int v;
boolean v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v = v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.Channel channel>;
v = interfaceinvoke v.<io.netty.channel.Channel: io.netty.channel.ChannelConfig config()>();
v = interfaceinvoke v.<io.netty.channel.ChannelConfig: int getWriteBufferHighWaterMark()>();
v = v.<io.netty.channel.ChannelOutboundBuffer: long totalPendingSize>;
v = v - v;
v = v cmp 0L;
if v <= 0 goto label;
v = virtualinvoke v.<io.netty.channel.ChannelOutboundBuffer: boolean isWritable()>();
if v == 0 goto label;
v = v;
goto label;
label:
v = 0L;
label:
return v;
label:
return 0L;
}
public long bytesBeforeWritable()
{
long v, v, v;
io.netty.channel.Channel v;
io.netty.channel.ChannelOutboundBuffer v;
byte v;
io.netty.channel.ChannelConfig v;
int v;
boolean v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v = v.<io.netty.channel.ChannelOutboundBuffer: long totalPendingSize>;
v = v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.Channel channel>;
v = interfaceinvoke v.<io.netty.channel.Channel: io.netty.channel.ChannelConfig config()>();
v = interfaceinvoke v.<io.netty.channel.ChannelConfig: int getWriteBufferLowWaterMark()>();
v = v - v;
v = v cmp 0L;
if v <= 0 goto label;
v = virtualinvoke v.<io.netty.channel.ChannelOutboundBuffer: boolean isWritable()>();
if v == 0 goto label;
v = 0L;
goto label;
label:
v = v;
label:
return v;
label:
return 0L;
}
public void forEachFlushedMessage(io.netty.channel.ChannelOutboundBuffer$MessageProcessor) throws java.lang.Exception
{
io.netty.channel.ChannelOutboundBuffer v;
io.netty.channel.ChannelOutboundBuffer$MessageProcessor v;
java.lang.Object v;
io.netty.channel.ChannelOutboundBuffer$Entry v;
boolean v, v, v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v := @parameter: io.netty.channel.ChannelOutboundBuffer$MessageProcessor;
staticinvoke <io.netty.util.internal.ObjectUtil: java.lang.Object checkNotNull(java.lang.Object,java.lang.String)>(v, "processor");
v = v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.ChannelOutboundBuffer$Entry flushedEntry>;
if v != null goto label;
return;
label:
v = v.<io.netty.channel.ChannelOutboundBuffer$Entry: boolean cancelled>;
if v != 0 goto label;
v = v.<io.netty.channel.ChannelOutboundBuffer$Entry: java.lang.Object msg>;
v = interfaceinvoke v.<io.netty.channel.ChannelOutboundBuffer$MessageProcessor: boolean processMessage(java.lang.Object)>(v);
if v != 0 goto label;
return;
label:
v = v.<io.netty.channel.ChannelOutboundBuffer$Entry: io.netty.channel.ChannelOutboundBuffer$Entry next>;
v = specialinvoke v.<io.netty.channel.ChannelOutboundBuffer: boolean isFlushedEntry(io.netty.channel.ChannelOutboundBuffer$Entry)>(v);
if v != 0 goto label;
return;
}
private boolean isFlushedEntry(io.netty.channel.ChannelOutboundBuffer$Entry)
{
io.netty.channel.ChannelOutboundBuffer v;
io.netty.channel.ChannelOutboundBuffer$Entry v, v;
boolean v;
v := @this: io.netty.channel.ChannelOutboundBuffer;
v := @parameter: io.netty.channel.ChannelOutboundBuffer$Entry;
if v == null goto label;
v = v.<io.netty.channel.ChannelOutboundBuffer: io.netty.channel.ChannelOutboundBuffer$Entry unflushedEntry>;
if v == v goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
static void <clinit>()
{
java.util.concurrent.atomic.AtomicIntegerFieldUpdater v;
java.util.concurrent.atomic.AtomicLongFieldUpdater v;
io.netty.util.internal.logging.InternalLogger v;
int v;
java.lang.Class v;
io.netty.channel.ChannelOutboundBuffer$1 v;
boolean v, v;
v = class "Lio/netty/channel/ChannelOutboundBuffer;";
v = virtualinvoke v.<java.lang.Class: boolean desiredAssertionStatus()>();
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
<io.netty.channel.ChannelOutboundBuffer: boolean $assertionsDisabled> = v;
v = staticinvoke <io.netty.util.internal.SystemPropertyUtil: int getInt(java.lang.String,int)>("io.netty.transport.outboundBufferEntrySizeOverhead", 96);
<io.netty.channel.ChannelOutboundBuffer: int CHANNEL_OUTBOUND_BUFFER_ENTRY_OVERHEAD> = v;
v = staticinvoke <io.netty.util.internal.logging.InternalLoggerFactory: io.netty.util.internal.logging.InternalLogger getInstance(java.lang.Class)>(class "Lio/netty/channel/ChannelOutboundBuffer;");
<io.netty.channel.ChannelOutboundBuffer: io.netty.util.internal.logging.InternalLogger logger> = v;
v = new io.netty.channel.ChannelOutboundBuffer$1;
specialinvoke v.<io.netty.channel.ChannelOutboundBuffer$1: void <init>()>();
<io.netty.channel.ChannelOutboundBuffer: io.netty.util.concurrent.FastThreadLocal NIO_BUFFERS> = v;
v = staticinvoke <java.util.concurrent.atomic.AtomicLongFieldUpdater: java.util.concurrent.atomic.AtomicLongFieldUpdater newUpdater(java.lang.Class,java.lang.String)>(class "Lio/netty/channel/ChannelOutboundBuffer;", "totalPendingSize");
<io.netty.channel.ChannelOutboundBuffer: java.util.concurrent.atomic.AtomicLongFieldUpdater TOTAL_PENDING_SIZE_UPDATER> = v;
v = staticinvoke <java.util.concurrent.atomic.AtomicIntegerFieldUpdater: java.util.concurrent.atomic.AtomicIntegerFieldUpdater newUpdater(java.lang.Class,java.lang.String)>(class "Lio/netty/channel/ChannelOutboundBuffer;", "unwritable");
<io.netty.channel.ChannelOutboundBuffer: java.util.concurrent.atomic.AtomicIntegerFieldUpdater UNWRITABLE_UPDATER> = v;
return;
}
}