public class com.google.common.testing.GcFinalizationTest extends junit.framework.TestCase
{
public void <init>()
{
com.google.common.testing.GcFinalizationTest v;
v := @this: com.google.common.testing.GcFinalizationTest;
specialinvoke v.<junit.framework.TestCase: void <init>()>();
return;
}
public void testAwait_CountDownLatch()
{
java.util.concurrent.CountDownLatch v;
com.google.common.testing.GcFinalizationTest v;
com.google.common.testing.GcFinalizationTest$1 v;
long v;
v := @this: com.google.common.testing.GcFinalizationTest;
v = new java.util.concurrent.CountDownLatch;
specialinvoke v.<java.util.concurrent.CountDownLatch: void <init>(int)>(1);
v = new com.google.common.testing.GcFinalizationTest$1;
specialinvoke v.<com.google.common.testing.GcFinalizationTest$1: void <init>(com.google.common.testing.GcFinalizationTest,java.util.concurrent.CountDownLatch)>(v, v);
staticinvoke <com.google.common.testing.GcFinalization: void await(java.util.concurrent.CountDownLatch)>(v);
v = virtualinvoke v.<java.util.concurrent.CountDownLatch: long getCount()>();
staticinvoke <com.google.common.testing.GcFinalizationTest: void assertEquals(long,long)>(0L, v);
return;
}
public void testAwaitDone_Future()
{
com.google.common.testing.GcFinalizationTest v;
com.google.common.testing.GcFinalizationTest$2 v;
com.google.common.util.concurrent.SettableFuture v;
boolean v, v;
v := @this: com.google.common.testing.GcFinalizationTest;
v = staticinvoke <com.google.common.util.concurrent.SettableFuture: com.google.common.util.concurrent.SettableFuture create()>();
v = new com.google.common.testing.GcFinalizationTest$2;
specialinvoke v.<com.google.common.testing.GcFinalizationTest$2: void <init>(com.google.common.testing.GcFinalizationTest,com.google.common.util.concurrent.SettableFuture)>(v, v);
staticinvoke <com.google.common.testing.GcFinalization: void awaitDone(java.util.concurrent.Future)>(v);
v = virtualinvoke v.<com.google.common.util.concurrent.SettableFuture: boolean isDone()>();
staticinvoke <com.google.common.testing.GcFinalizationTest: void assertTrue(boolean)>(v);
v = virtualinvoke v.<com.google.common.util.concurrent.SettableFuture: boolean isCancelled()>();
staticinvoke <com.google.common.testing.GcFinalizationTest: void assertFalse(boolean)>(v);
return;
}
public void testAwaitDone_Future_Cancel()
{
com.google.common.testing.GcFinalizationTest v;
com.google.common.util.concurrent.SettableFuture v;
com.google.common.testing.GcFinalizationTest$3 v;
boolean v, v;
v := @this: com.google.common.testing.GcFinalizationTest;
v = staticinvoke <com.google.common.util.concurrent.SettableFuture: com.google.common.util.concurrent.SettableFuture create()>();
v = new com.google.common.testing.GcFinalizationTest$3;
specialinvoke v.<com.google.common.testing.GcFinalizationTest$3: void <init>(com.google.common.testing.GcFinalizationTest,com.google.common.util.concurrent.SettableFuture)>(v, v);
staticinvoke <com.google.common.testing.GcFinalization: void awaitDone(java.util.concurrent.Future)>(v);
v = virtualinvoke v.<com.google.common.util.concurrent.SettableFuture: boolean isDone()>();
staticinvoke <com.google.common.testing.GcFinalizationTest: void assertTrue(boolean)>(v);
v = virtualinvoke v.<com.google.common.util.concurrent.SettableFuture: boolean isCancelled()>();
staticinvoke <com.google.common.testing.GcFinalizationTest: void assertTrue(boolean)>(v);
return;
}
public void testAwaitClear()
{
com.google.common.testing.GcFinalizationTest v;
java.lang.Object v, v;
java.lang.ref.WeakReference v;
v := @this: com.google.common.testing.GcFinalizationTest;
v = new java.lang.ref.WeakReference;
v = new java.lang.Object;
specialinvoke v.<java.lang.Object: void <init>()>();
specialinvoke v.<java.lang.ref.WeakReference: void <init>(java.lang.Object)>(v);
staticinvoke <com.google.common.testing.GcFinalization: void awaitClear(java.lang.ref.WeakReference)>(v);
v = virtualinvoke v.<java.lang.ref.WeakReference: java.lang.Object get()>();
staticinvoke <com.google.common.testing.GcFinalizationTest: void assertNull(java.lang.Object)>(v);
return;
}
public void testAwaitDone_FinalizationPredicate()
{
com.google.common.testing.GcFinalizationTest v;
java.lang.Boolean v;
java.lang.Object v;
java.util.WeakHashMap v;
boolean v;
com.google.common.testing.GcFinalizationTest$4 v;
v := @this: com.google.common.testing.GcFinalizationTest;
v = new java.util.WeakHashMap;
specialinvoke v.<java.util.WeakHashMap: void <init>()>();
v = new java.lang.Object;
specialinvoke v.<java.lang.Object: void <init>()>();
v = <java.lang.Boolean: java.lang.Boolean TRUE>;
virtualinvoke v.<java.util.WeakHashMap: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
v = new com.google.common.testing.GcFinalizationTest$4;
specialinvoke v.<com.google.common.testing.GcFinalizationTest$4: void <init>(com.google.common.testing.GcFinalizationTest,java.util.WeakHashMap)>(v, v);
staticinvoke <com.google.common.testing.GcFinalization: void awaitDone(com.google.common.testing.GcFinalization$FinalizationPredicate)>(v);
v = virtualinvoke v.<java.util.WeakHashMap: boolean isEmpty()>();
staticinvoke <com.google.common.testing.GcFinalizationTest: void assertTrue(boolean)>(v);
return;
}
void assertWrapsInterruptedException(java.lang.RuntimeException)
{
com.google.common.testing.GcFinalizationTest v;
java.lang.RuntimeException v;
com.google.common.truth.StringSubject v;
com.google.common.truth.ThrowableSubject v, v, v;
v := @this: com.google.common.testing.GcFinalizationTest;
v := @parameter: java.lang.RuntimeException;
v = staticinvoke <com.google.common.truth.Truth: com.google.common.truth.ThrowableSubject assertThat(java.lang.Throwable)>(v);
v = virtualinvoke v.<com.google.common.truth.ThrowableSubject: com.google.common.truth.StringSubject hasMessageThat()>();
virtualinvoke v.<com.google.common.truth.StringSubject: void contains(java.lang.CharSequence)>("Unexpected interrupt");
v = staticinvoke <com.google.common.truth.Truth: com.google.common.truth.ThrowableSubject assertThat(java.lang.Throwable)>(v);
v = virtualinvoke v.<com.google.common.truth.ThrowableSubject: com.google.common.truth.ThrowableSubject hasCauseThat()>();
virtualinvoke v.<com.google.common.truth.ThrowableSubject: void isInstanceOf(java.lang.Class)>(class "Ljava/lang/InterruptedException;");
return;
}
public void testAwait_CountDownLatch_Interrupted()
{
java.lang.Throwable v;
java.util.concurrent.CountDownLatch v;
com.google.common.testing.GcFinalizationTest v;
java.lang.Thread v;
java.lang.RuntimeException v;
com.google.common.testing.GcFinalizationTest$Interruptenator v;
v := @this: com.google.common.testing.GcFinalizationTest;
v = new com.google.common.testing.GcFinalizationTest$Interruptenator;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
specialinvoke v.<com.google.common.testing.GcFinalizationTest$Interruptenator: void <init>(com.google.common.testing.GcFinalizationTest,java.lang.Thread)>(v, v);
label:
v = new java.util.concurrent.CountDownLatch;
specialinvoke v.<java.util.concurrent.CountDownLatch: void <init>(int)>(1);
label:
staticinvoke <com.google.common.testing.GcFinalization: void await(java.util.concurrent.CountDownLatch)>(v);
staticinvoke <com.google.common.testing.GcFinalizationTest: void fail(java.lang.String)>("should throw");
label:
goto label;
label:
v := @caughtexception;
virtualinvoke v.<com.google.common.testing.GcFinalizationTest: void assertWrapsInterruptedException(java.lang.RuntimeException)>(v);
label:
virtualinvoke v.<com.google.common.testing.GcFinalizationTest$Interruptenator: void shutdown()>();
staticinvoke <java.lang.Thread: boolean interrupted()>();
goto label;
label:
v := @caughtexception;
virtualinvoke v.<com.google.common.testing.GcFinalizationTest$Interruptenator: void shutdown()>();
staticinvoke <java.lang.Thread: boolean interrupted()>();
throw v;
label:
return;
catch java.lang.RuntimeException from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public void testAwaitDone_Future_Interrupted_Interrupted()
{
java.lang.Throwable v;
com.google.common.testing.GcFinalizationTest v;
java.lang.Thread v;
java.lang.RuntimeException v;
com.google.common.testing.GcFinalizationTest$Interruptenator v;
com.google.common.util.concurrent.SettableFuture v;
v := @this: com.google.common.testing.GcFinalizationTest;
v = new com.google.common.testing.GcFinalizationTest$Interruptenator;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
specialinvoke v.<com.google.common.testing.GcFinalizationTest$Interruptenator: void <init>(com.google.common.testing.GcFinalizationTest,java.lang.Thread)>(v, v);
label:
v = staticinvoke <com.google.common.util.concurrent.SettableFuture: com.google.common.util.concurrent.SettableFuture create()>();
label:
staticinvoke <com.google.common.testing.GcFinalization: void awaitDone(java.util.concurrent.Future)>(v);
staticinvoke <com.google.common.testing.GcFinalizationTest: void fail(java.lang.String)>("should throw");
label:
goto label;
label:
v := @caughtexception;
virtualinvoke v.<com.google.common.testing.GcFinalizationTest: void assertWrapsInterruptedException(java.lang.RuntimeException)>(v);
label:
virtualinvoke v.<com.google.common.testing.GcFinalizationTest$Interruptenator: void shutdown()>();
staticinvoke <java.lang.Thread: boolean interrupted()>();
goto label;
label:
v := @caughtexception;
virtualinvoke v.<com.google.common.testing.GcFinalizationTest$Interruptenator: void shutdown()>();
staticinvoke <java.lang.Thread: boolean interrupted()>();
throw v;
label:
return;
catch java.lang.RuntimeException from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public void testAwaitClear_Interrupted()
{
java.lang.Throwable v;
com.google.common.testing.GcFinalizationTest v;
java.lang.Thread v;
java.lang.Boolean v;
java.lang.RuntimeException v;
com.google.common.testing.GcFinalizationTest$Interruptenator v;
java.lang.ref.WeakReference v;
v := @this: com.google.common.testing.GcFinalizationTest;
v = new com.google.common.testing.GcFinalizationTest$Interruptenator;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
specialinvoke v.<com.google.common.testing.GcFinalizationTest$Interruptenator: void <init>(com.google.common.testing.GcFinalizationTest,java.lang.Thread)>(v, v);
label:
v = new java.lang.ref.WeakReference;
v = <java.lang.Boolean: java.lang.Boolean TRUE>;
specialinvoke v.<java.lang.ref.WeakReference: void <init>(java.lang.Object)>(v);
label:
staticinvoke <com.google.common.testing.GcFinalization: void awaitClear(java.lang.ref.WeakReference)>(v);
staticinvoke <com.google.common.testing.GcFinalizationTest: void fail(java.lang.String)>("should throw");
label:
goto label;
label:
v := @caughtexception;
virtualinvoke v.<com.google.common.testing.GcFinalizationTest: void assertWrapsInterruptedException(java.lang.RuntimeException)>(v);
label:
virtualinvoke v.<com.google.common.testing.GcFinalizationTest$Interruptenator: void shutdown()>();
staticinvoke <java.lang.Thread: boolean interrupted()>();
goto label;
label:
v := @caughtexception;
virtualinvoke v.<com.google.common.testing.GcFinalizationTest$Interruptenator: void shutdown()>();
staticinvoke <java.lang.Thread: boolean interrupted()>();
throw v;
label:
return;
catch java.lang.RuntimeException from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public void testAwaitDone_FinalizationPredicate_Interrupted()
{
java.lang.Throwable v;
com.google.common.testing.GcFinalizationTest v;
java.lang.Thread v;
java.lang.RuntimeException v;
com.google.common.testing.GcFinalizationTest$5 v;
com.google.common.testing.GcFinalizationTest$Interruptenator v;
v := @this: com.google.common.testing.GcFinalizationTest;
v = new com.google.common.testing.GcFinalizationTest$Interruptenator;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
specialinvoke v.<com.google.common.testing.GcFinalizationTest$Interruptenator: void <init>(com.google.common.testing.GcFinalizationTest,java.lang.Thread)>(v, v);
label:
v = new com.google.common.testing.GcFinalizationTest$5;
specialinvoke v.<com.google.common.testing.GcFinalizationTest$5: void <init>(com.google.common.testing.GcFinalizationTest)>(v);
staticinvoke <com.google.common.testing.GcFinalization: void awaitDone(com.google.common.testing.GcFinalization$FinalizationPredicate)>(v);
staticinvoke <com.google.common.testing.GcFinalizationTest: void fail(java.lang.String)>("should throw");
label:
goto label;
label:
v := @caughtexception;
virtualinvoke v.<com.google.common.testing.GcFinalizationTest: void assertWrapsInterruptedException(java.lang.RuntimeException)>(v);
label:
virtualinvoke v.<com.google.common.testing.GcFinalizationTest$Interruptenator: void shutdown()>();
staticinvoke <java.lang.Thread: boolean interrupted()>();
goto label;
label:
v := @caughtexception;
virtualinvoke v.<com.google.common.testing.GcFinalizationTest$Interruptenator: void shutdown()>();
staticinvoke <java.lang.Thread: boolean interrupted()>();
throw v;
label:
return;
catch java.lang.RuntimeException from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public void testAwaitFullGc()
{
java.util.concurrent.CountDownLatch v;
com.google.common.testing.GcFinalizationTest v;
java.lang.Object v;
long v;
java.lang.ref.WeakReference v;
com.google.common.testing.GcFinalizationTest$6 v;
v := @this: com.google.common.testing.GcFinalizationTest;
v = new java.util.concurrent.CountDownLatch;
specialinvoke v.<java.util.concurrent.CountDownLatch: void <init>(int)>(1);
v = new java.lang.ref.WeakReference;
v = new com.google.common.testing.GcFinalizationTest$6;
specialinvoke v.<com.google.common.testing.GcFinalizationTest$6: void <init>(com.google.common.testing.GcFinalizationTest,java.util.concurrent.CountDownLatch)>(v, v);
specialinvoke v.<java.lang.ref.WeakReference: void <init>(java.lang.Object)>(v);
staticinvoke <com.google.common.testing.GcFinalization: void awaitFullGc()>();
v = virtualinvoke v.<java.util.concurrent.CountDownLatch: long getCount()>();
staticinvoke <com.google.common.testing.GcFinalizationTest: void assertEquals(long,long)>(0L, v);
v = virtualinvoke v.<java.lang.ref.WeakReference: java.lang.Object get()>();
staticinvoke <com.google.common.testing.GcFinalizationTest: void assertNull(java.lang.Object)>(v);
return;
}
}