public abstract class oadd.com.google.common.util.concurrent.AbstractFuture extends oadd.com.google.common.util.concurrent.internal.InternalFutureFailureAccess implements oadd.com.google.common.util.concurrent.ListenableFuture
{
private static final boolean GENERATE_CANCELLATION_CAUSES;
private static final java.util.logging.Logger log;
private static final long SPIN_THRESHOLD_NANOS;
private static final oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper ATOMIC_HELPER;
private static final java.lang.Object NULL;
private volatile java.lang.Object value;
private volatile oadd.com.google.common.util.concurrent.AbstractFuture$Listener listeners;
private volatile oadd.com.google.common.util.concurrent.AbstractFuture$Waiter waiters;
private void removeWaiter(oadd.com.google.common.util.concurrent.AbstractFuture$Waiter)
{
java.lang.Thread v, v;
oadd.com.google.common.util.concurrent.AbstractFuture v;
oadd.com.google.common.util.concurrent.AbstractFuture$Waiter v, v, v, v, v;
oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper v;
boolean v;
v := @this: oadd.com.google.common.util.concurrent.AbstractFuture;
v := @parameter: oadd.com.google.common.util.concurrent.AbstractFuture$Waiter;
v.<oadd.com.google.common.util.concurrent.AbstractFuture$Waiter: java.lang.Thread thread> = null;
label:
v = null;
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture: oadd.com.google.common.util.concurrent.AbstractFuture$Waiter waiters>;
v = <oadd.com.google.common.util.concurrent.AbstractFuture$Waiter: oadd.com.google.common.util.concurrent.AbstractFuture$Waiter TOMBSTONE>;
if v != v goto label;
return;
label:
if v == null goto label;
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture$Waiter: oadd.com.google.common.util.concurrent.AbstractFuture$Waiter next>;
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture$Waiter: java.lang.Thread thread>;
if v == null goto label;
v = v;
goto label;
label:
if v == null goto label;
v.<oadd.com.google.common.util.concurrent.AbstractFuture$Waiter: oadd.com.google.common.util.concurrent.AbstractFuture$Waiter next> = v;
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture$Waiter: java.lang.Thread thread>;
if v != null goto label;
goto label;
label:
v = <oadd.com.google.common.util.concurrent.AbstractFuture: oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper ATOMIC_HELPER>;
v = virtualinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper: boolean casWaiters(oadd.com.google.common.util.concurrent.AbstractFuture,oadd.com.google.common.util.concurrent.AbstractFuture$Waiter,oadd.com.google.common.util.concurrent.AbstractFuture$Waiter)>(v, v, v);
if v == 0 goto label;
label:
v = v;
goto label;
label:
return;
}
protected void <init>()
{
oadd.com.google.common.util.concurrent.AbstractFuture v;
v := @this: oadd.com.google.common.util.concurrent.AbstractFuture;
specialinvoke v.<oadd.com.google.common.util.concurrent.internal.InternalFutureFailureAccess: void <init>()>();
return;
}
public java.lang.Object get(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException, java.util.concurrent.TimeoutException, java.util.concurrent.ExecutionException
{
byte v, v, v, v, v, v, v, v;
java.lang.StringBuilder v, v, v, v;
oadd.com.google.common.util.concurrent.AbstractFuture$Waiter v, v, v, v;
long v, v, v, v, v, v, v, v, v, v, v, v, v;
java.lang.String v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
oadd.com.google.common.util.concurrent.AbstractFuture v;
java.util.concurrent.TimeoutException v, v;
java.util.Locale v, v;
boolean v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
int v, v, v, v, v, v, v, v, v, v, v, v;
oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper v;
java.util.concurrent.TimeUnit v, v;
java.lang.InterruptedException v, v, v;
java.lang.Object v, v, v, v, v, v, v, v;
v := @this: oadd.com.google.common.util.concurrent.AbstractFuture;
v := @parameter: long;
v := @parameter: java.util.concurrent.TimeUnit;
v = virtualinvoke v.<java.util.concurrent.TimeUnit: long toNanos(long)>(v);
v = v;
v = staticinvoke <java.lang.Thread: boolean interrupted()>();
if v == 0 goto label;
v = new java.lang.InterruptedException;
specialinvoke v.<java.lang.InterruptedException: void <init>()>();
throw v;
label:
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object value>;
if v == null goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v instanceof oadd.com.google.common.util.concurrent.AbstractFuture$SetFuture;
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v & v;
if v == 0 goto label;
v = specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object getDoneValue(java.lang.Object)>(v);
return v;
label:
v = v cmp 0L;
if v <= 0 goto label;
v = staticinvoke <java.lang.System: long nanoTime()>();
v = v + v;
goto label;
label:
v = 0L;
label:
v = v;
v = v cmp 1000L;
if v < 0 goto label;
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture: oadd.com.google.common.util.concurrent.AbstractFuture$Waiter waiters>;
v = <oadd.com.google.common.util.concurrent.AbstractFuture$Waiter: oadd.com.google.common.util.concurrent.AbstractFuture$Waiter TOMBSTONE>;
if v == v goto label;
v = new oadd.com.google.common.util.concurrent.AbstractFuture$Waiter;
specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$Waiter: void <init>()>();
label:
virtualinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$Waiter: void setNext(oadd.com.google.common.util.concurrent.AbstractFuture$Waiter)>(v);
v = <oadd.com.google.common.util.concurrent.AbstractFuture: oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper ATOMIC_HELPER>;
v = virtualinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper: boolean casWaiters(oadd.com.google.common.util.concurrent.AbstractFuture,oadd.com.google.common.util.concurrent.AbstractFuture$Waiter,oadd.com.google.common.util.concurrent.AbstractFuture$Waiter)>(v, v, v);
if v == 0 goto label;
label:
staticinvoke <oadd.com.google.common.util.concurrent.OverflowAvoidingLockSupport: void parkNanos(java.lang.Object,long)>(v, v);
v = staticinvoke <java.lang.Thread: boolean interrupted()>();
if v == 0 goto label;
specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture: void removeWaiter(oadd.com.google.common.util.concurrent.AbstractFuture$Waiter)>(v);
v = new java.lang.InterruptedException;
specialinvoke v.<java.lang.InterruptedException: void <init>()>();
throw v;
label:
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object value>;
if v == null goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v instanceof oadd.com.google.common.util.concurrent.AbstractFuture$SetFuture;
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v & v;
if v == 0 goto label;
v = specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object getDoneValue(java.lang.Object)>(v);
return v;
label:
v = staticinvoke <java.lang.System: long nanoTime()>();
v = v - v;
v = v cmp 1000L;
if v >= 0 goto label;
specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture: void removeWaiter(oadd.com.google.common.util.concurrent.AbstractFuture$Waiter)>(v);
goto label;
label:
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture: oadd.com.google.common.util.concurrent.AbstractFuture$Waiter waiters>;
v = <oadd.com.google.common.util.concurrent.AbstractFuture$Waiter: oadd.com.google.common.util.concurrent.AbstractFuture$Waiter TOMBSTONE>;
if v != v goto label;
label:
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object value>;
v = specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object getDoneValue(java.lang.Object)>(v);
return v;
label:
v = v cmp 0L;
if v <= 0 goto label;
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object value>;
if v == null goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v instanceof oadd.com.google.common.util.concurrent.AbstractFuture$SetFuture;
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v & v;
if v == 0 goto label;
v = specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object getDoneValue(java.lang.Object)>(v);
return v;
label:
v = staticinvoke <java.lang.Thread: boolean interrupted()>();
if v == 0 goto label;
v = new java.lang.InterruptedException;
specialinvoke v.<java.lang.InterruptedException: void <init>()>();
throw v;
label:
v = staticinvoke <java.lang.System: long nanoTime()>();
v = v - v;
goto label;
label:
v = virtualinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.String toString()>();
v = virtualinvoke v.<java.util.concurrent.TimeUnit: java.lang.String toString()>();
v = <java.util.Locale: java.util.Locale ROOT>;
v = virtualinvoke v.<java.lang.String: java.lang.String toLowerCase(java.util.Locale)>(v);
v = virtualinvoke v.<java.util.concurrent.TimeUnit: java.lang.String toString()>();
v = <java.util.Locale: java.util.Locale ROOT>;
v = virtualinvoke v.<java.lang.String: java.lang.String toLowerCase(java.util.Locale)>(v);
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
v = virtualinvoke v.<java.lang.String: int length()>();
v = 28 + v;
specialinvoke v.<java.lang.StringBuilder: void <init>(int)>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (long,java.lang.String)>(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[])>("Waited \u \u0001");
v = v + 1000L;
v = v cmp 0L;
if v >= 0 goto label;
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
v = virtualinvoke v.<java.lang.String: java.lang.String concat(java.lang.String)>(" (plus ");
v = neg v;
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit NANOSECONDS>;
v = virtualinvoke v.<java.util.concurrent.TimeUnit: long convert(long,java.util.concurrent.TimeUnit)>(v, v);
v = virtualinvoke v.<java.util.concurrent.TimeUnit: long toNanos(long)>(v);
v = v - v;
v = v cmp 0L;
if v == 0 goto label;
v = v cmp 1000L;
if v <= 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
v = v;
v = v cmp 0L;
if v <= 0 goto label;
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
v = virtualinvoke v.<java.lang.String: int length()>();
v = 21 + v;
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
v = virtualinvoke v.<java.lang.String: int length()>();
v = v + v;
specialinvoke v.<java.lang.StringBuilder: void <init>(int)>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,long,java.lang.String)>(v, 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[])>("\u0001\u \u0001");
if v == 0 goto label;
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
v = virtualinvoke v.<java.lang.String: java.lang.String concat(java.lang.String)>(",");
label:
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
v = virtualinvoke v.<java.lang.String: java.lang.String concat(java.lang.String)>(" ");
label:
if v == 0 goto label;
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
v = virtualinvoke v.<java.lang.String: int length()>();
v = 33 + v;
specialinvoke v.<java.lang.StringBuilder: void <init>(int)>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,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[])>("\u0001\u nanoseconds ");
label:
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
v = virtualinvoke v.<java.lang.String: java.lang.String concat(java.lang.String)>("delay)");
label:
v = virtualinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture: boolean isDone()>();
if v == 0 goto label;
v = new java.util.concurrent.TimeoutException;
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
v = virtualinvoke v.<java.lang.String: java.lang.String concat(java.lang.String)>(" but future completed as timeout expired");
specialinvoke v.<java.util.concurrent.TimeoutException: void <init>(java.lang.String)>(v);
throw v;
label:
v = new java.util.concurrent.TimeoutException;
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
v = virtualinvoke v.<java.lang.String: int length()>();
v = 5 + v;
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
v = virtualinvoke v.<java.lang.String: int length()>();
v = v + v;
specialinvoke v.<java.lang.StringBuilder: void <init>(int)>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(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[])>("\u for \u0001");
specialinvoke v.<java.util.concurrent.TimeoutException: void <init>(java.lang.String)>(v);
throw v;
}
public java.lang.Object get() throws java.lang.InterruptedException, java.util.concurrent.ExecutionException
{
oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper v;
boolean v, v, v, v, v, v, v, v, v, v, v;
java.lang.InterruptedException v, v;
oadd.com.google.common.util.concurrent.AbstractFuture v;
java.lang.Object v, v, v, v, v, v;
oadd.com.google.common.util.concurrent.AbstractFuture$Waiter v, v, v, v;
v := @this: oadd.com.google.common.util.concurrent.AbstractFuture;
v = staticinvoke <java.lang.Thread: boolean interrupted()>();
if v == 0 goto label;
v = new java.lang.InterruptedException;
specialinvoke v.<java.lang.InterruptedException: void <init>()>();
throw v;
label:
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object value>;
if v == null goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v instanceof oadd.com.google.common.util.concurrent.AbstractFuture$SetFuture;
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v & v;
if v == 0 goto label;
v = specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object getDoneValue(java.lang.Object)>(v);
return v;
label:
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture: oadd.com.google.common.util.concurrent.AbstractFuture$Waiter waiters>;
v = <oadd.com.google.common.util.concurrent.AbstractFuture$Waiter: oadd.com.google.common.util.concurrent.AbstractFuture$Waiter TOMBSTONE>;
if v == v goto label;
v = new oadd.com.google.common.util.concurrent.AbstractFuture$Waiter;
specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$Waiter: void <init>()>();
label:
virtualinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$Waiter: void setNext(oadd.com.google.common.util.concurrent.AbstractFuture$Waiter)>(v);
v = <oadd.com.google.common.util.concurrent.AbstractFuture: oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper ATOMIC_HELPER>;
v = virtualinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper: boolean casWaiters(oadd.com.google.common.util.concurrent.AbstractFuture,oadd.com.google.common.util.concurrent.AbstractFuture$Waiter,oadd.com.google.common.util.concurrent.AbstractFuture$Waiter)>(v, v, v);
if v == 0 goto label;
label:
staticinvoke <java.util.concurrent.locks.LockSupport: void park(java.lang.Object)>(v);
v = staticinvoke <java.lang.Thread: boolean interrupted()>();
if v == 0 goto label;
specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture: void removeWaiter(oadd.com.google.common.util.concurrent.AbstractFuture$Waiter)>(v);
v = new java.lang.InterruptedException;
specialinvoke v.<java.lang.InterruptedException: void <init>()>();
throw v;
label:
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object value>;
if v == null goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v instanceof oadd.com.google.common.util.concurrent.AbstractFuture$SetFuture;
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v & v;
if v == 0 goto label;
v = specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object getDoneValue(java.lang.Object)>(v);
return v;
label:
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture: oadd.com.google.common.util.concurrent.AbstractFuture$Waiter waiters>;
v = <oadd.com.google.common.util.concurrent.AbstractFuture$Waiter: oadd.com.google.common.util.concurrent.AbstractFuture$Waiter TOMBSTONE>;
if v != v goto label;
label:
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object value>;
v = specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object getDoneValue(java.lang.Object)>(v);
return v;
}
private java.lang.Object getDoneValue(java.lang.Object) throws java.util.concurrent.ExecutionException
{
java.lang.Throwable v, v;
java.util.concurrent.CancellationException v;
java.util.concurrent.ExecutionException v;
oadd.com.google.common.util.concurrent.AbstractFuture v;
java.lang.Object v, v;
boolean v, v;
v := @this: oadd.com.google.common.util.concurrent.AbstractFuture;
v := @parameter: java.lang.Object;
v = v instanceof oadd.com.google.common.util.concurrent.AbstractFuture$Cancellation;
if v == 0 goto label;
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture$Cancellation: java.lang.Throwable cause>;
v = staticinvoke <oadd.com.google.common.util.concurrent.AbstractFuture: java.util.concurrent.CancellationException cancellationExceptionWithCause(java.lang.String,java.lang.Throwable)>("Task was cancelled.", v);
throw v;
label:
v = v instanceof oadd.com.google.common.util.concurrent.AbstractFuture$Failure;
if v == 0 goto label;
v = new java.util.concurrent.ExecutionException;
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture$Failure: java.lang.Throwable exception>;
specialinvoke v.<java.util.concurrent.ExecutionException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
v = <oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object NULL>;
if v != v goto label;
return null;
label:
return v;
}
public boolean isDone()
{
oadd.com.google.common.util.concurrent.AbstractFuture v;
java.lang.Object v;
boolean v, v, v, v;
v := @this: oadd.com.google.common.util.concurrent.AbstractFuture;
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object value>;
if v == null goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v instanceof oadd.com.google.common.util.concurrent.AbstractFuture$SetFuture;
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v & v;
return v;
}
public boolean isCancelled()
{
java.lang.Object v;
boolean v;
oadd.com.google.common.util.concurrent.AbstractFuture v;
v := @this: oadd.com.google.common.util.concurrent.AbstractFuture;
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object value>;
v = v instanceof oadd.com.google.common.util.concurrent.AbstractFuture$Cancellation;
return v;
}
public boolean cancel(boolean)
{
oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper v;
boolean v, v, v, v, v, v, v, v, v, v, v, v, v;
java.util.concurrent.CancellationException v;
oadd.com.google.common.util.concurrent.AbstractFuture$Cancellation v, v, v;
oadd.com.google.common.util.concurrent.ListenableFuture v;
oadd.com.google.common.util.concurrent.AbstractFuture v, v;
java.lang.Object v;
v := @this: oadd.com.google.common.util.concurrent.AbstractFuture;
v := @parameter: boolean;
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object value>;
v = 0;
if v != null goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v instanceof oadd.com.google.common.util.concurrent.AbstractFuture$SetFuture;
v = v | v;
if v == 0 goto label;
v = <oadd.com.google.common.util.concurrent.AbstractFuture: boolean GENERATE_CANCELLATION_CAUSES>;
if v == 0 goto label;
v = new oadd.com.google.common.util.concurrent.AbstractFuture$Cancellation;
v = v;
v = new java.util.concurrent.CancellationException;
specialinvoke v.<java.util.concurrent.CancellationException: void <init>(java.lang.String)>("Future.cancel() was called.");
specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$Cancellation: void <init>(boolean,java.lang.Throwable)>(v, v);
goto label;
label:
if v == 0 goto label;
v = <oadd.com.google.common.util.concurrent.AbstractFuture$Cancellation: oadd.com.google.common.util.concurrent.AbstractFuture$Cancellation CAUSELESS_INTERRUPTED>;
goto label;
label:
v = <oadd.com.google.common.util.concurrent.AbstractFuture$Cancellation: oadd.com.google.common.util.concurrent.AbstractFuture$Cancellation CAUSELESS_CANCELLED>;
label:
v = v;
v = v;
label:
v = <oadd.com.google.common.util.concurrent.AbstractFuture: oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper ATOMIC_HELPER>;
v = virtualinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper: boolean casValue(oadd.com.google.common.util.concurrent.AbstractFuture,java.lang.Object,java.lang.Object)>(v, v, v);
if v == 0 goto label;
v = 1;
if v == 0 goto label;
virtualinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture: void interruptTask()>();
label:
staticinvoke <oadd.com.google.common.util.concurrent.AbstractFuture: void complete(oadd.com.google.common.util.concurrent.AbstractFuture)>(v);
v = v instanceof oadd.com.google.common.util.concurrent.AbstractFuture$SetFuture;
if v == 0 goto label;
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture$SetFuture: oadd.com.google.common.util.concurrent.ListenableFuture future>;
v = v instanceof oadd.com.google.common.util.concurrent.AbstractFuture$Trusted;
if v == 0 goto label;
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object value>;
if v != null goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v instanceof oadd.com.google.common.util.concurrent.AbstractFuture$SetFuture;
v = v | v;
if v == 0 goto label;
v = v;
goto label;
label:
interfaceinvoke v.<oadd.com.google.common.util.concurrent.ListenableFuture: boolean cancel(boolean)>(v);
goto label;
label:
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object value>;
v = v instanceof oadd.com.google.common.util.concurrent.AbstractFuture$SetFuture;
if v != 0 goto label;
label:
return v;
}
protected void interruptTask()
{
oadd.com.google.common.util.concurrent.AbstractFuture v;
v := @this: oadd.com.google.common.util.concurrent.AbstractFuture;
return;
}
protected final boolean wasInterrupted()
{
oadd.com.google.common.util.concurrent.AbstractFuture v;
java.lang.Object v;
boolean v, v, v;
v := @this: oadd.com.google.common.util.concurrent.AbstractFuture;
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object value>;
v = v instanceof oadd.com.google.common.util.concurrent.AbstractFuture$Cancellation;
if v == 0 goto label;
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture$Cancellation: boolean wasInterrupted>;
if v == 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public void addListener(java.lang.Runnable, java.util.concurrent.Executor)
{
java.util.concurrent.Executor v;
oadd.com.google.common.util.concurrent.AbstractFuture$Listener v, v, v, v;
java.lang.Runnable v;
oadd.com.google.common.util.concurrent.AbstractFuture v;
oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper v;
boolean v, v;
v := @this: oadd.com.google.common.util.concurrent.AbstractFuture;
v := @parameter: java.lang.Runnable;
v := @parameter: java.util.concurrent.Executor;
staticinvoke <oadd.com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object,java.lang.Object)>(v, "Runnable was null.");
staticinvoke <oadd.com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object,java.lang.Object)>(v, "Executor was null.");
v = virtualinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture: boolean isDone()>();
if v != 0 goto label;
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture: oadd.com.google.common.util.concurrent.AbstractFuture$Listener listeners>;
v = <oadd.com.google.common.util.concurrent.AbstractFuture$Listener: oadd.com.google.common.util.concurrent.AbstractFuture$Listener TOMBSTONE>;
if v == v goto label;
v = new oadd.com.google.common.util.concurrent.AbstractFuture$Listener;
specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$Listener: void <init>(java.lang.Runnable,java.util.concurrent.Executor)>(v, v);
label:
v.<oadd.com.google.common.util.concurrent.AbstractFuture$Listener: oadd.com.google.common.util.concurrent.AbstractFuture$Listener next> = v;
v = <oadd.com.google.common.util.concurrent.AbstractFuture: oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper ATOMIC_HELPER>;
v = virtualinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper: boolean casListeners(oadd.com.google.common.util.concurrent.AbstractFuture,oadd.com.google.common.util.concurrent.AbstractFuture$Listener,oadd.com.google.common.util.concurrent.AbstractFuture$Listener)>(v, v, v);
if v == 0 goto label;
return;
label:
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture: oadd.com.google.common.util.concurrent.AbstractFuture$Listener listeners>;
v = <oadd.com.google.common.util.concurrent.AbstractFuture$Listener: oadd.com.google.common.util.concurrent.AbstractFuture$Listener TOMBSTONE>;
if v != v goto label;
label:
staticinvoke <oadd.com.google.common.util.concurrent.AbstractFuture: void executeListener(java.lang.Runnable,java.util.concurrent.Executor)>(v, v);
return;
}
protected boolean set(java.lang.Object)
{
oadd.com.google.common.util.concurrent.AbstractFuture v;
java.lang.Object v, v;
oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper v;
boolean v;
v := @this: oadd.com.google.common.util.concurrent.AbstractFuture;
v := @parameter: java.lang.Object;
if v != null goto label;
v = <oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object NULL>;
goto label;
label:
v = v;
label:
v = <oadd.com.google.common.util.concurrent.AbstractFuture: oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper ATOMIC_HELPER>;
v = virtualinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper: boolean casValue(oadd.com.google.common.util.concurrent.AbstractFuture,java.lang.Object,java.lang.Object)>(v, null, v);
if v == 0 goto label;
staticinvoke <oadd.com.google.common.util.concurrent.AbstractFuture: void complete(oadd.com.google.common.util.concurrent.AbstractFuture)>(v);
return 1;
label:
return 0;
}
protected boolean setException(java.lang.Throwable)
{
java.lang.Throwable v;
oadd.com.google.common.util.concurrent.AbstractFuture v;
java.lang.Object v;
oadd.com.google.common.util.concurrent.AbstractFuture$Failure v;
oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper v;
boolean v;
v := @this: oadd.com.google.common.util.concurrent.AbstractFuture;
v := @parameter: java.lang.Throwable;
v = new oadd.com.google.common.util.concurrent.AbstractFuture$Failure;
v = staticinvoke <oadd.com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object)>(v);
specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$Failure: void <init>(java.lang.Throwable)>(v);
v = <oadd.com.google.common.util.concurrent.AbstractFuture: oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper ATOMIC_HELPER>;
v = virtualinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper: boolean casValue(oadd.com.google.common.util.concurrent.AbstractFuture,java.lang.Object,java.lang.Object)>(v, null, v);
if v == 0 goto label;
staticinvoke <oadd.com.google.common.util.concurrent.AbstractFuture: void complete(oadd.com.google.common.util.concurrent.AbstractFuture)>(v);
return 1;
label:
return 0;
}
protected boolean setFuture(oadd.com.google.common.util.concurrent.ListenableFuture)
{
java.lang.Throwable v, v;
oadd.com.google.common.util.concurrent.AbstractFuture$Failure v, v;
oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper v, v, v;
boolean v, v, v, v, v;
oadd.com.google.common.util.concurrent.AbstractFuture$SetFuture v;
oadd.com.google.common.util.concurrent.DirectExecutor v;
oadd.com.google.common.util.concurrent.ListenableFuture v;
oadd.com.google.common.util.concurrent.AbstractFuture v;
java.lang.Object v, v;
v := @this: oadd.com.google.common.util.concurrent.AbstractFuture;
v := @parameter: oadd.com.google.common.util.concurrent.ListenableFuture;
staticinvoke <oadd.com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object)>(v);
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object value>;
if v != null goto label;
v = interfaceinvoke v.<oadd.com.google.common.util.concurrent.ListenableFuture: boolean isDone()>();
if v == 0 goto label;
v = staticinvoke <oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object getFutureValue(oadd.com.google.common.util.concurrent.ListenableFuture)>(v);
v = <oadd.com.google.common.util.concurrent.AbstractFuture: oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper ATOMIC_HELPER>;
v = virtualinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper: boolean casValue(oadd.com.google.common.util.concurrent.AbstractFuture,java.lang.Object,java.lang.Object)>(v, null, v);
if v == 0 goto label;
staticinvoke <oadd.com.google.common.util.concurrent.AbstractFuture: void complete(oadd.com.google.common.util.concurrent.AbstractFuture)>(v);
return 1;
label:
return 0;
label:
v = new oadd.com.google.common.util.concurrent.AbstractFuture$SetFuture;
specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$SetFuture: void <init>(oadd.com.google.common.util.concurrent.AbstractFuture,oadd.com.google.common.util.concurrent.ListenableFuture)>(v, v);
v = <oadd.com.google.common.util.concurrent.AbstractFuture: oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper ATOMIC_HELPER>;
v = virtualinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper: boolean casValue(oadd.com.google.common.util.concurrent.AbstractFuture,java.lang.Object,java.lang.Object)>(v, null, v);
if v == 0 goto label;
label:
v = <oadd.com.google.common.util.concurrent.DirectExecutor: oadd.com.google.common.util.concurrent.DirectExecutor INSTANCE>;
interfaceinvoke v.<oadd.com.google.common.util.concurrent.ListenableFuture: void addListener(java.lang.Runnable,java.util.concurrent.Executor)>(v, v);
label:
goto label;
label:
v := @caughtexception;
label:
v = new oadd.com.google.common.util.concurrent.AbstractFuture$Failure;
specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$Failure: void <init>(java.lang.Throwable)>(v);
v = v;
label:
goto label;
label:
v := @caughtexception;
v = <oadd.com.google.common.util.concurrent.AbstractFuture$Failure: oadd.com.google.common.util.concurrent.AbstractFuture$Failure FALLBACK_INSTANCE>;
label:
v = <oadd.com.google.common.util.concurrent.AbstractFuture: oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper ATOMIC_HELPER>;
virtualinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper: boolean casValue(oadd.com.google.common.util.concurrent.AbstractFuture,java.lang.Object,java.lang.Object)>(v, v, v);
label:
return 1;
label:
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object value>;
label:
v = v instanceof oadd.com.google.common.util.concurrent.AbstractFuture$Cancellation;
if v == 0 goto label;
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture$Cancellation: boolean wasInterrupted>;
interfaceinvoke v.<oadd.com.google.common.util.concurrent.ListenableFuture: boolean cancel(boolean)>(v);
label:
return 0;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private static java.lang.Object getFutureValue(oadd.com.google.common.util.concurrent.ListenableFuture)
{
oadd.com.google.common.util.concurrent.AbstractFuture$Failure v, v, v, v;
boolean v, v, v, v, v, v, v, v;
java.util.concurrent.CancellationException v;
oadd.com.google.common.util.concurrent.AbstractFuture$Cancellation v, v, v, v, v;
java.lang.StringBuilder v, v, v;
java.lang.Throwable v, v, v, v, v;
int v, v, v, v, v, v;
java.lang.String v, v, v, v, v, v, v, v, v;
java.lang.IllegalArgumentException v, v, v;
java.util.concurrent.ExecutionException v;
oadd.com.google.common.util.concurrent.ListenableFuture v;
java.lang.Object v, v, v;
v := @parameter: oadd.com.google.common.util.concurrent.ListenableFuture;
v = v instanceof oadd.com.google.common.util.concurrent.AbstractFuture$Trusted;
if v == 0 goto label;
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object value>;
v = v instanceof oadd.com.google.common.util.concurrent.AbstractFuture$Cancellation;
if v == 0 goto label;
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture$Cancellation: boolean wasInterrupted>;
if v == 0 goto label;
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture$Cancellation: java.lang.Throwable cause>;
if v == null goto label;
v = new oadd.com.google.common.util.concurrent.AbstractFuture$Cancellation;
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture$Cancellation: java.lang.Throwable cause>;
specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$Cancellation: void <init>(boolean,java.lang.Throwable)>(0, v);
goto label;
label:
v = <oadd.com.google.common.util.concurrent.AbstractFuture$Cancellation: oadd.com.google.common.util.concurrent.AbstractFuture$Cancellation CAUSELESS_CANCELLED>;
label:
v = v;
label:
return v;
label:
v = v instanceof oadd.com.google.common.util.concurrent.internal.InternalFutureFailureAccess;
if v == 0 goto label;
v = staticinvoke <oadd.com.google.common.util.concurrent.internal.InternalFutures: java.lang.Throwable tryInternalFastPathGetFailure(oadd.com.google.common.util.concurrent.internal.InternalFutureFailureAccess)>(v);
if v == null goto label;
v = new oadd.com.google.common.util.concurrent.AbstractFuture$Failure;
specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$Failure: void <init>(java.lang.Throwable)>(v);
return v;
label:
v = interfaceinvoke v.<oadd.com.google.common.util.concurrent.ListenableFuture: boolean isCancelled()>();
v = <oadd.com.google.common.util.concurrent.AbstractFuture: boolean GENERATE_CANCELLATION_CAUSES>;
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v & v;
if v == 0 goto label;
v = <oadd.com.google.common.util.concurrent.AbstractFuture$Cancellation: oadd.com.google.common.util.concurrent.AbstractFuture$Cancellation CAUSELESS_CANCELLED>;
return v;
label:
v = staticinvoke <oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object getUninterruptibly(java.util.concurrent.Future)>(v);
if v == 0 goto label;
v = new oadd.com.google.common.util.concurrent.AbstractFuture$Cancellation;
v = new java.lang.IllegalArgumentException;
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
v = virtualinvoke v.<java.lang.String: int length()>();
v = 84 + v;
specialinvoke v.<java.lang.StringBuilder: void <init>(int)>(v);
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[])>("get() did not throw CancellationException, despite reporting isCancelled() == true: \u0001");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$Cancellation: void <init>(boolean,java.lang.Throwable)>(0, v);
label:
return v;
label:
if v != null goto label;
v = <oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object NULL>;
goto label;
label:
v = v;
label:
return v;
label:
v := @caughtexception;
if v == 0 goto label;
v = new oadd.com.google.common.util.concurrent.AbstractFuture$Cancellation;
v = new java.lang.IllegalArgumentException;
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
v = virtualinvoke v.<java.lang.String: int length()>();
v = 84 + v;
specialinvoke v.<java.lang.StringBuilder: void <init>(int)>(v);
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[])>("get() did not throw CancellationException, despite reporting isCancelled() == true: \u0001");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String,java.lang.Throwable)>(v, v);
specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$Cancellation: void <init>(boolean,java.lang.Throwable)>(0, v);
return v;
label:
v = new oadd.com.google.common.util.concurrent.AbstractFuture$Failure;
v = virtualinvoke v.<java.util.concurrent.ExecutionException: java.lang.Throwable getCause()>();
specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$Failure: void <init>(java.lang.Throwable)>(v);
return v;
label:
v := @caughtexception;
if v != 0 goto label;
v = new oadd.com.google.common.util.concurrent.AbstractFuture$Failure;
v = new java.lang.IllegalArgumentException;
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
v = virtualinvoke v.<java.lang.String: int length()>();
v = 77 + v;
specialinvoke v.<java.lang.StringBuilder: void <init>(int)>(v);
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[])>("get() threw CancellationException, despite reporting isCancelled() == false: \u0001");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String,java.lang.Throwable)>(v, v);
specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$Failure: void <init>(java.lang.Throwable)>(v);
return v;
label:
v = new oadd.com.google.common.util.concurrent.AbstractFuture$Cancellation;
specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$Cancellation: void <init>(boolean,java.lang.Throwable)>(0, v);
return v;
label:
v := @caughtexception;
v = new oadd.com.google.common.util.concurrent.AbstractFuture$Failure;
specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$Failure: void <init>(java.lang.Throwable)>(v);
return v;
catch java.util.concurrent.ExecutionException from label to label with label;
catch java.util.concurrent.ExecutionException from label to label with label;
catch java.util.concurrent.CancellationException from label to label with label;
catch java.util.concurrent.CancellationException from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private static java.lang.Object getUninterruptibly(java.util.concurrent.Future) throws java.util.concurrent.ExecutionException
{
java.lang.Throwable v;
java.util.concurrent.Future v;
java.lang.InterruptedException v;
java.lang.Thread v, v;
java.lang.Object v;
boolean v;
v := @parameter: java.util.concurrent.Future;
v = 0;
label:
v = interfaceinvoke v.<java.util.concurrent.Future: java.lang.Object get()>();
label:
if v == 0 goto label;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
virtualinvoke v.<java.lang.Thread: void interrupt()>();
label:
return v;
label:
v := @caughtexception;
v = 1;
goto label;
label:
v := @caughtexception;
if v == 0 goto label;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
virtualinvoke v.<java.lang.Thread: void interrupt()>();
label:
throw v;
catch java.lang.InterruptedException from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private static void complete(oadd.com.google.common.util.concurrent.AbstractFuture)
{
java.util.concurrent.Executor v;
oadd.com.google.common.util.concurrent.AbstractFuture$Listener v, v;
java.lang.Runnable v;
oadd.com.google.common.util.concurrent.ListenableFuture v;
oadd.com.google.common.util.concurrent.AbstractFuture v;
java.lang.Object v, v;
oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper v;
boolean v, v;
v := @parameter: oadd.com.google.common.util.concurrent.AbstractFuture;
v = null;
label:
specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture: void releaseWaiters()>();
virtualinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture: void afterDone()>();
v = specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture: oadd.com.google.common.util.concurrent.AbstractFuture$Listener clearListeners(oadd.com.google.common.util.concurrent.AbstractFuture$Listener)>(v);
label:
if v == null goto label;
v = v;
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture$Listener: oadd.com.google.common.util.concurrent.AbstractFuture$Listener next>;
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture$Listener: java.lang.Runnable task>;
v = v instanceof oadd.com.google.common.util.concurrent.AbstractFuture$SetFuture;
if v == 0 goto label;
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture$SetFuture: oadd.com.google.common.util.concurrent.AbstractFuture owner>;
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object value>;
if v != v goto label;
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture$SetFuture: oadd.com.google.common.util.concurrent.ListenableFuture future>;
v = staticinvoke <oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object getFutureValue(oadd.com.google.common.util.concurrent.ListenableFuture)>(v);
v = <oadd.com.google.common.util.concurrent.AbstractFuture: oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper ATOMIC_HELPER>;
v = virtualinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper: boolean casValue(oadd.com.google.common.util.concurrent.AbstractFuture,java.lang.Object,java.lang.Object)>(v, v, v);
if v != 0 goto label;
goto label;
label:
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture$Listener: java.util.concurrent.Executor executor>;
staticinvoke <oadd.com.google.common.util.concurrent.AbstractFuture: void executeListener(java.lang.Runnable,java.util.concurrent.Executor)>(v, v);
goto label;
label:
return;
}
protected void afterDone()
{
oadd.com.google.common.util.concurrent.AbstractFuture v;
v := @this: oadd.com.google.common.util.concurrent.AbstractFuture;
return;
}
protected final java.lang.Throwable tryInternalFastPathGetFailure()
{
java.lang.Throwable v;
oadd.com.google.common.util.concurrent.AbstractFuture v;
java.lang.Object v;
boolean v, v;
v := @this: oadd.com.google.common.util.concurrent.AbstractFuture;
v = v instanceof oadd.com.google.common.util.concurrent.AbstractFuture$Trusted;
if v == 0 goto label;
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object value>;
v = v instanceof oadd.com.google.common.util.concurrent.AbstractFuture$Failure;
if v == 0 goto label;
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture$Failure: java.lang.Throwable exception>;
return v;
label:
return null;
}
final void maybePropagateCancellationTo(java.util.concurrent.Future)
{
java.util.concurrent.Future v;
oadd.com.google.common.util.concurrent.AbstractFuture v;
boolean v, v, v, v;
v := @this: oadd.com.google.common.util.concurrent.AbstractFuture;
v := @parameter: java.util.concurrent.Future;
if v == null goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = virtualinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture: boolean isCancelled()>();
v = v & v;
if v == 0 goto label;
v = virtualinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture: boolean wasInterrupted()>();
interfaceinvoke v.<java.util.concurrent.Future: boolean cancel(boolean)>(v);
label:
return;
}
private void releaseWaiters()
{
oadd.com.google.common.util.concurrent.AbstractFuture v;
oadd.com.google.common.util.concurrent.AbstractFuture$Waiter v, v, v;
oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper v;
boolean v;
v := @this: oadd.com.google.common.util.concurrent.AbstractFuture;
label:
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture: oadd.com.google.common.util.concurrent.AbstractFuture$Waiter waiters>;
v = <oadd.com.google.common.util.concurrent.AbstractFuture: oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper ATOMIC_HELPER>;
v = <oadd.com.google.common.util.concurrent.AbstractFuture$Waiter: oadd.com.google.common.util.concurrent.AbstractFuture$Waiter TOMBSTONE>;
v = virtualinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper: boolean casWaiters(oadd.com.google.common.util.concurrent.AbstractFuture,oadd.com.google.common.util.concurrent.AbstractFuture$Waiter,oadd.com.google.common.util.concurrent.AbstractFuture$Waiter)>(v, v, v);
if v == 0 goto label;
v = v;
label:
if v == null goto label;
virtualinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$Waiter: void unpark()>();
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture$Waiter: oadd.com.google.common.util.concurrent.AbstractFuture$Waiter next>;
goto label;
label:
return;
}
private oadd.com.google.common.util.concurrent.AbstractFuture$Listener clearListeners(oadd.com.google.common.util.concurrent.AbstractFuture$Listener)
{
oadd.com.google.common.util.concurrent.AbstractFuture$Listener v, v, v, v, v;
oadd.com.google.common.util.concurrent.AbstractFuture v;
oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper v;
boolean v;
v := @this: oadd.com.google.common.util.concurrent.AbstractFuture;
v := @parameter: oadd.com.google.common.util.concurrent.AbstractFuture$Listener;
label:
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture: oadd.com.google.common.util.concurrent.AbstractFuture$Listener listeners>;
v = <oadd.com.google.common.util.concurrent.AbstractFuture: oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper ATOMIC_HELPER>;
v = <oadd.com.google.common.util.concurrent.AbstractFuture$Listener: oadd.com.google.common.util.concurrent.AbstractFuture$Listener TOMBSTONE>;
v = virtualinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper: boolean casListeners(oadd.com.google.common.util.concurrent.AbstractFuture,oadd.com.google.common.util.concurrent.AbstractFuture$Listener,oadd.com.google.common.util.concurrent.AbstractFuture$Listener)>(v, v, v);
if v == 0 goto label;
v = v;
label:
if v == null goto label;
v = v;
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture$Listener: oadd.com.google.common.util.concurrent.AbstractFuture$Listener next>;
v.<oadd.com.google.common.util.concurrent.AbstractFuture$Listener: oadd.com.google.common.util.concurrent.AbstractFuture$Listener next> = v;
v = v;
goto label;
label:
return v;
}
public java.lang.String toString()
{
int v;
java.lang.String v, v, v, v, v;
boolean v, v, v;
oadd.com.google.common.util.concurrent.AbstractFuture v;
java.lang.Class v, v, v;
java.lang.StringBuilder v, v, v, v;
v := @this: oadd.com.google.common.util.concurrent.AbstractFuture;
v = new java.lang.StringBuilder;
specialinvoke v.<java.lang.StringBuilder: void <init>()>();
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("oadd.com.google.common.util.concurrent.");
if v == 0 goto label;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getSimpleName()>();
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
goto label;
label:
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
label:
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(char)>(64);
v = staticinvoke <java.lang.System: int identityHashCode(java.lang.Object)>(v);
v = staticinvoke <java.lang.Integer: java.lang.String toHexString(int)>(v);
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("[status=");
v = virtualinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture: boolean isCancelled()>();
if v == 0 goto label;
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("CANCELLED");
goto label;
label:
v = virtualinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture: boolean isDone()>();
if v == 0 goto label;
specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture: void addDoneString(java.lang.StringBuilder)>(v);
goto label;
label:
specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture: void addPendingString(java.lang.StringBuilder)>(v);
label:
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("]");
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.String toString()>();
return v;
}
protected java.lang.String pendingToString()
{
java.util.concurrent.TimeUnit v;
oadd.com.google.common.util.concurrent.AbstractFuture v;
java.lang.StringBuilder v;
long v;
java.lang.String v;
boolean v;
v := @this: oadd.com.google.common.util.concurrent.AbstractFuture;
v = v instanceof java.util.concurrent.ScheduledFuture;
if v == 0 goto label;
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit MILLISECONDS>;
v = interfaceinvoke v.<java.util.concurrent.ScheduledFuture: long getDelay(java.util.concurrent.TimeUnit)>(v);
specialinvoke v.<java.lang.StringBuilder: void <init>(int)>(41);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (long)>(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[])>("remaining delay=[\u ms]");
return v;
label:
return null;
}
private void addPendingString(java.lang.StringBuilder)
{
java.lang.Throwable v;
int v, v, v, v;
java.lang.String v, v, v, v;
boolean v, v;
oadd.com.google.common.util.concurrent.ListenableFuture v;
oadd.com.google.common.util.concurrent.AbstractFuture v;
java.lang.Class v;
java.lang.Object v;
java.lang.StringBuilder v, v, v, v;
v := @this: oadd.com.google.common.util.concurrent.AbstractFuture;
v := @parameter: java.lang.StringBuilder;
v = virtualinvoke v.<java.lang.StringBuilder: int length()>();
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("PENDING");
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object value>;
v = v instanceof oadd.com.google.common.util.concurrent.AbstractFuture$SetFuture;
if v == 0 goto label;
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(", setFuture=[");
v = v.<oadd.com.google.common.util.concurrent.AbstractFuture$SetFuture: oadd.com.google.common.util.concurrent.ListenableFuture future>;
specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture: void appendUserObject(java.lang.StringBuilder,java.lang.Object)>(v, v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("]");
goto label;
label:
v = virtualinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.String pendingToString()>();
v = staticinvoke <oadd.com.google.common.base.Strings: java.lang.String emptyToNull(java.lang.String)>(v);
label:
goto label;
label:
v := @caughtexception;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
v = virtualinvoke v.<java.lang.String: int length()>();
v = 38 + v;
specialinvoke v.<java.lang.StringBuilder: void <init>(int)>(v);
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[])>("Exception thrown from implementation: \u0001");
label:
if v == null goto label;
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(", info=[");
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("]");
label:
v = virtualinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture: boolean isDone()>();
if v == 0 goto label;
v = virtualinvoke v.<java.lang.StringBuilder: int length()>();
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder delete(int,int)>(v, v);
specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture: void addDoneString(java.lang.StringBuilder)>(v);
label:
return;
catch java.lang.RuntimeException from label to label with label;
catch java.lang.StackOverflowError from label to label with label;
}
private void addDoneString(java.lang.StringBuilder)
{
java.lang.Throwable v;
java.util.concurrent.CancellationException v;
java.lang.RuntimeException v;
java.util.concurrent.ExecutionException v;
oadd.com.google.common.util.concurrent.AbstractFuture v;
java.lang.Class v;
java.lang.Object v;
java.lang.StringBuilder v, v, v, v, v;
v := @this: oadd.com.google.common.util.concurrent.AbstractFuture;
v := @parameter: java.lang.StringBuilder;
label:
v = staticinvoke <oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object getUninterruptibly(java.util.concurrent.Future)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("SUCCESS, result=[");
specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture: void appendResultObject(java.lang.StringBuilder,java.lang.Object)>(v, v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("]");
label:
goto label;
label:
v := @caughtexception;
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("FAILURE, cause=[");
v = virtualinvoke v.<java.util.concurrent.ExecutionException: java.lang.Throwable getCause()>();
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.Object)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("]");
goto label;
label:
v := @caughtexception;
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("CANCELLED");
goto label;
label:
v := @caughtexception;
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("UNKNOWN, cause=[");
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.Object)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(" thrown from get()]");
label:
return;
catch java.util.concurrent.ExecutionException from label to label with label;
catch java.util.concurrent.CancellationException from label to label with label;
catch java.lang.RuntimeException from label to label with label;
}
private void appendResultObject(java.lang.StringBuilder, java.lang.Object)
{
oadd.com.google.common.util.concurrent.AbstractFuture v;
int v;
java.lang.Class v;
java.lang.Object v;
java.lang.StringBuilder v, v, v;
java.lang.String v, v;
v := @this: oadd.com.google.common.util.concurrent.AbstractFuture;
v := @parameter: java.lang.StringBuilder;
v := @parameter: java.lang.Object;
if v != null goto label;
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("null");
goto label;
label:
if v != v goto label;
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("this future");
goto label;
label:
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("@");
v = staticinvoke <java.lang.System: int identityHashCode(java.lang.Object)>(v);
v = staticinvoke <java.lang.Integer: java.lang.String toHexString(int)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
label:
return;
}
private void appendUserObject(java.lang.StringBuilder, java.lang.Object)
{
java.lang.Throwable v;
oadd.com.google.common.util.concurrent.AbstractFuture v;
java.lang.Class v;
java.lang.Object v;
java.lang.StringBuilder v, v;
v := @this: oadd.com.google.common.util.concurrent.AbstractFuture;
v := @parameter: java.lang.StringBuilder;
v := @parameter: java.lang.Object;
label:
if v != v goto label;
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("this future");
goto label;
label:
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.Object)>(v);
label:
goto label;
label:
v := @caughtexception;
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("Exception thrown from implementation: ");
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.Object)>(v);
label:
return;
catch java.lang.RuntimeException from label to label with label;
catch java.lang.StackOverflowError from label to label with label;
}
private static void executeListener(java.lang.Runnable, java.util.concurrent.Executor)
{
java.util.concurrent.Executor v;
java.lang.RuntimeException v;
java.util.logging.Logger v;
java.lang.Runnable v;
java.util.logging.Level v;
int v, v, v, v;
java.lang.StringBuilder v;
java.lang.String v, v, v, v, v;
v := @parameter: java.lang.Runnable;
v := @parameter: java.util.concurrent.Executor;
label:
interfaceinvoke v.<java.util.concurrent.Executor: void execute(java.lang.Runnable)>(v);
label:
goto label;
label:
v := @caughtexception;
v = <oadd.com.google.common.util.concurrent.AbstractFuture: java.util.logging.Logger log>;
v = <java.util.logging.Level: java.util.logging.Level SEVERE>;
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
v = virtualinvoke v.<java.lang.String: int length()>();
v = 57 + v;
v = staticinvoke <java.lang.String: java.lang.String valueOf(java.lang.Object)>(v);
v = virtualinvoke v.<java.lang.String: int length()>();
v = v + v;
specialinvoke v.<java.lang.StringBuilder: void <init>(int)>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(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[])>("RuntimeException while executing runnable \u with executor \u0001");
virtualinvoke v.<java.util.logging.Logger: void log(java.util.logging.Level,java.lang.String,java.lang.Throwable)>(v, v, v);
label:
return;
catch java.lang.RuntimeException from label to label with label;
}
private static java.util.concurrent.CancellationException cancellationExceptionWithCause(java.lang.String, java.lang.Throwable)
{
java.lang.Throwable v;
java.lang.String v;
java.util.concurrent.CancellationException v;
v := @parameter: java.lang.String;
v := @parameter: java.lang.Throwable;
v = new java.util.concurrent.CancellationException;
specialinvoke v.<java.util.concurrent.CancellationException: void <init>(java.lang.String)>(v);
virtualinvoke v.<java.util.concurrent.CancellationException: java.lang.Throwable initCause(java.lang.Throwable)>(v);
return v;
}
static void <clinit>()
{
java.lang.Throwable v, v, v, v;
java.util.logging.Level v, v;
oadd.com.google.common.util.concurrent.AbstractFuture$SafeAtomicHelper v;
java.lang.SecurityException v;
java.lang.String v, v;
oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper v;
boolean v;
java.util.concurrent.atomic.AtomicReferenceFieldUpdater v, v, v, v, v;
java.util.logging.Logger v, v, v;
java.lang.Class v;
java.lang.Object v;
oadd.com.google.common.util.concurrent.AbstractFuture$UnsafeAtomicHelper v;
oadd.com.google.common.util.concurrent.AbstractFuture$SynchronizedHelper v;
label:
v = staticinvoke <java.lang.System: java.lang.String getProperty(java.lang.String,java.lang.String)>("guava.concurrent.generate_cancellation_cause", "false");
v = staticinvoke <java.lang.Boolean: boolean parseBoolean(java.lang.String)>(v);
label:
goto label;
label:
v := @caughtexception;
v = 0;
label:
<oadd.com.google.common.util.concurrent.AbstractFuture: boolean GENERATE_CANCELLATION_CAUSES> = v;
v = class "Loadd/com/google/common/util/concurrent/AbstractFuture;";
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = staticinvoke <java.util.logging.Logger: java.util.logging.Logger getLogger(java.lang.String)>(v);
<oadd.com.google.common.util.concurrent.AbstractFuture: java.util.logging.Logger log> = v;
v = null;
v = null;
label:
v = new oadd.com.google.common.util.concurrent.AbstractFuture$UnsafeAtomicHelper;
specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$UnsafeAtomicHelper: void <init>()>();
v = v;
label:
goto label;
label:
v := @caughtexception;
v = v;
label:
v = new oadd.com.google.common.util.concurrent.AbstractFuture$SafeAtomicHelper;
v = staticinvoke <java.util.concurrent.atomic.AtomicReferenceFieldUpdater: java.util.concurrent.atomic.AtomicReferenceFieldUpdater newUpdater(java.lang.Class,java.lang.Class,java.lang.String)>(class "Loadd/com/google/common/util/concurrent/AbstractFuture$Waiter;", class "Ljava/lang/Thread;", "thread");
v = staticinvoke <java.util.concurrent.atomic.AtomicReferenceFieldUpdater: java.util.concurrent.atomic.AtomicReferenceFieldUpdater newUpdater(java.lang.Class,java.lang.Class,java.lang.String)>(class "Loadd/com/google/common/util/concurrent/AbstractFuture$Waiter;", class "Loadd/com/google/common/util/concurrent/AbstractFuture$Waiter;", "next");
v = staticinvoke <java.util.concurrent.atomic.AtomicReferenceFieldUpdater: java.util.concurrent.atomic.AtomicReferenceFieldUpdater newUpdater(java.lang.Class,java.lang.Class,java.lang.String)>(class "Loadd/com/google/common/util/concurrent/AbstractFuture;", class "Loadd/com/google/common/util/concurrent/AbstractFuture$Waiter;", "waiters");
v = staticinvoke <java.util.concurrent.atomic.AtomicReferenceFieldUpdater: java.util.concurrent.atomic.AtomicReferenceFieldUpdater newUpdater(java.lang.Class,java.lang.Class,java.lang.String)>(class "Loadd/com/google/common/util/concurrent/AbstractFuture;", class "Loadd/com/google/common/util/concurrent/AbstractFuture$Listener;", "listeners");
v = staticinvoke <java.util.concurrent.atomic.AtomicReferenceFieldUpdater: java.util.concurrent.atomic.AtomicReferenceFieldUpdater newUpdater(java.lang.Class,java.lang.Class,java.lang.String)>(class "Loadd/com/google/common/util/concurrent/AbstractFuture;", class "Ljava/lang/Object;", "value");
specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$SafeAtomicHelper: void <init>(java.util.concurrent.atomic.AtomicReferenceFieldUpdater,java.util.concurrent.atomic.AtomicReferenceFieldUpdater,java.util.concurrent.atomic.AtomicReferenceFieldUpdater,java.util.concurrent.atomic.AtomicReferenceFieldUpdater,java.util.concurrent.atomic.AtomicReferenceFieldUpdater)>(v, v, v, v, v);
v = v;
label:
goto label;
label:
v := @caughtexception;
v = v;
v = new oadd.com.google.common.util.concurrent.AbstractFuture$SynchronizedHelper;
specialinvoke v.<oadd.com.google.common.util.concurrent.AbstractFuture$SynchronizedHelper: void <init>()>();
v = v;
label:
<oadd.com.google.common.util.concurrent.AbstractFuture: oadd.com.google.common.util.concurrent.AbstractFuture$AtomicHelper ATOMIC_HELPER> = v;
if v == null goto label;
v = <oadd.com.google.common.util.concurrent.AbstractFuture: java.util.logging.Logger log>;
v = <java.util.logging.Level: java.util.logging.Level SEVERE>;
virtualinvoke v.<java.util.logging.Logger: void log(java.util.logging.Level,java.lang.String,java.lang.Throwable)>(v, "UnsafeAtomicHelper is broken!", v);
v = <oadd.com.google.common.util.concurrent.AbstractFuture: java.util.logging.Logger log>;
v = <java.util.logging.Level: java.util.logging.Level SEVERE>;
virtualinvoke v.<java.util.logging.Logger: void log(java.util.logging.Level,java.lang.String,java.lang.Throwable)>(v, "SafeAtomicHelper is broken!", v);
label:
v = new java.lang.Object;
specialinvoke v.<java.lang.Object: void <init>()>();
<oadd.com.google.common.util.concurrent.AbstractFuture: java.lang.Object NULL> = v;
return;
catch java.lang.SecurityException from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
}