public class com.oracle.truffle.api.test.AssumptionInvalidationTest
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.oracle.truffle.api.test.AssumptionInvalidationTest
super_class: java.lang.Object
{
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 // com.oracle.truffle.api.test.AssumptionInvalidationTest this
0: .line 58
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
return
end local 0 // com.oracle.truffle.api.test.AssumptionInvalidationTest this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/api/test/AssumptionInvalidationTest;
public void test();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=7, args_size=1
start local 0 // com.oracle.truffle.api.test.AssumptionInvalidationTest this
0: .line 62
invokestatic com.oracle.truffle.api.Truffle.getRuntime:()Lcom/oracle/truffle/api/TruffleRuntime;
astore 1 /* runtime */
start local 1 // com.oracle.truffle.api.TruffleRuntime runtime
1: .line 63
aload 1 /* runtime */
ldc "propagated assumption invalidation"
invokeinterface com.oracle.truffle.api.TruffleRuntime.createAssumption:(Ljava/lang/String;)Lcom/oracle/truffle/api/Assumption;
astore 2 /* assumption */
start local 2 // com.oracle.truffle.api.Assumption assumption
2: .line 64
new com.oracle.truffle.api.test.AssumptionInvalidationTest$CountingNode
dup
aload 2 /* assumption */
invokespecial com.oracle.truffle.api.test.AssumptionInvalidationTest$CountingNode.<init>:(Lcom/oracle/truffle/api/Assumption;)V
astore 3 /* countingNode */
start local 3 // com.oracle.truffle.api.test.AssumptionInvalidationTest$CountingNode countingNode
3: .line 65
new com.oracle.truffle.api.test.AssumptionInvalidationTest$TestRootNode
dup
aload 3 /* countingNode */
invokespecial com.oracle.truffle.api.test.AssumptionInvalidationTest$TestRootNode.<init>:(Lcom/oracle/truffle/api/test/AssumptionInvalidationTest$ValueNode;)V
astore 4 /* countingRootNode */
start local 4 // com.oracle.truffle.api.test.AssumptionInvalidationTest$TestRootNode countingRootNode
4: .line 66
aload 1 /* runtime */
aload 4 /* countingRootNode */
invokeinterface com.oracle.truffle.api.TruffleRuntime.createCallTarget:(Lcom/oracle/truffle/api/nodes/RootNode;)Lcom/oracle/truffle/api/RootCallTarget;
astore 5 /* countingTarget */
start local 5 // com.oracle.truffle.api.CallTarget countingTarget
5: .line 68
new java.lang.Thread
dup
new com.oracle.truffle.api.test.AssumptionInvalidationTest$1
dup
aload 0 /* this */
aload 5 /* countingTarget */
invokespecial com.oracle.truffle.api.test.AssumptionInvalidationTest$1.<init>:(Lcom/oracle/truffle/api/test/AssumptionInvalidationTest;Lcom/oracle/truffle/api/CallTarget;)V
invokespecial java.lang.Thread.<init>:(Ljava/lang/Runnable;)V
astore 6 /* thread */
start local 6 // java.lang.Thread thread
6: .line 73
aload 6 /* thread */
invokevirtual java.lang.Thread.start:()V
7: .line 76
goto 9
8: .line 77
StackMap locals: com.oracle.truffle.api.test.AssumptionInvalidationTest com.oracle.truffle.api.TruffleRuntime com.oracle.truffle.api.Assumption com.oracle.truffle.api.test.AssumptionInvalidationTest$CountingNode com.oracle.truffle.api.test.AssumptionInvalidationTest$TestRootNode com.oracle.truffle.api.CallTarget java.lang.Thread
StackMap stack:
ldc 100
invokestatic java.lang.Thread.sleep:(J)V
9: .line 76
StackMap locals:
StackMap stack:
aload 3 /* countingNode */
getfield com.oracle.truffle.api.test.AssumptionInvalidationTest$CountingNode.count:J
ldc 100
lcmp
iflt 8
10: .line 80
aload 2 /* assumption */
invokeinterface com.oracle.truffle.api.Assumption.invalidate:()V
11: .line 81
aload 6 /* thread */
ldc 5000
invokevirtual java.lang.Thread.join:(J)V
12: .line 82
ldc "Thread ought to be notified of invalidation in reasonable time."
iconst_0
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
aload 6 /* thread */
invokevirtual java.lang.Thread.isAlive:()Z
invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
13: .line 83
return
end local 6 // java.lang.Thread thread
end local 5 // com.oracle.truffle.api.CallTarget countingTarget
end local 4 // com.oracle.truffle.api.test.AssumptionInvalidationTest$TestRootNode countingRootNode
end local 3 // com.oracle.truffle.api.test.AssumptionInvalidationTest$CountingNode countingNode
end local 2 // com.oracle.truffle.api.Assumption assumption
end local 1 // com.oracle.truffle.api.TruffleRuntime runtime
end local 0 // com.oracle.truffle.api.test.AssumptionInvalidationTest this
LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lcom/oracle/truffle/api/test/AssumptionInvalidationTest;
1 14 1 runtime Lcom/oracle/truffle/api/TruffleRuntime;
2 14 2 assumption Lcom/oracle/truffle/api/Assumption;
3 14 3 countingNode Lcom/oracle/truffle/api/test/AssumptionInvalidationTest$CountingNode;
4 14 4 countingRootNode Lcom/oracle/truffle/api/test/AssumptionInvalidationTest$TestRootNode;
5 14 5 countingTarget Lcom/oracle/truffle/api/CallTarget;
6 14 6 thread Ljava/lang/Thread;
Exceptions:
throws java.lang.InterruptedException
RuntimeVisibleAnnotations:
org.junit.Test()
}
SourceFile: "AssumptionInvalidationTest.java"
NestMembers:
com.oracle.truffle.api.test.AssumptionInvalidationTest$1 com.oracle.truffle.api.test.AssumptionInvalidationTest$CountingNode com.oracle.truffle.api.test.AssumptionInvalidationTest$TestRootNode com.oracle.truffle.api.test.AssumptionInvalidationTest$ValueNode
InnerClasses:
com.oracle.truffle.api.test.AssumptionInvalidationTest$1
CountingNode = com.oracle.truffle.api.test.AssumptionInvalidationTest$CountingNode of com.oracle.truffle.api.test.AssumptionInvalidationTest
TestRootNode = com.oracle.truffle.api.test.AssumptionInvalidationTest$TestRootNode of com.oracle.truffle.api.test.AssumptionInvalidationTest
abstract ValueNode = com.oracle.truffle.api.test.AssumptionInvalidationTest$ValueNode of com.oracle.truffle.api.test.AssumptionInvalidationTest