public class org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest extends com.oracle.truffle.api.test.polyglot.AbstractPolyglotTest
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest
super_class: com.oracle.truffle.api.test.polyglot.AbstractPolyglotTest
{
private volatile boolean rewriting;
descriptor: Z
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokespecial com.oracle.truffle.api.test.polyglot.AbstractPolyglotTest.<init>:()V
1: aload 0
iconst_0
putfield org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest.rewriting:Z
2: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/graalvm/compiler/truffle/test/RewriteDuringCompilationTest;
public void testRootCompilation();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=2, args_size=1
start local 0 0: new org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest$DetectInvalidCodeNode
dup
invokespecial org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest$DetectInvalidCodeNode.<init>:()V
astore 1
start local 1 1: aload 0
aload 1
aconst_null
aload 1
sipush 1000
bipush 20
invokevirtual org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest.testCompilation:(Lorg/graalvm/compiler/truffle/test/RewriteDuringCompilationTest$BaseNode;Lcom/oracle/truffle/api/nodes/LoopNode;Lorg/graalvm/compiler/truffle/test/RewriteDuringCompilationTest$DetectInvalidCodeNode;II)V
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/graalvm/compiler/truffle/test/RewriteDuringCompilationTest;
1 3 1 detectInvalidCodeNode Lorg/graalvm/compiler/truffle/test/RewriteDuringCompilationTest$DetectInvalidCodeNode;
Exceptions:
throws java.io.IOException, java.lang.InterruptedException, java.util.concurrent.ExecutionException
RuntimeVisibleAnnotations:
org.junit.Test()
public void testLoopCompilation();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=3, args_size=1
start local 0 0: new org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest$DetectInvalidCodeNode
dup
invokespecial org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest$DetectInvalidCodeNode.<init>:()V
astore 1
start local 1 1: new org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest$WhileLoopNode
dup
ldc 10000000
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aload 1
invokespecial org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest$WhileLoopNode.<init>:(Ljava/lang/Object;Lorg/graalvm/compiler/truffle/test/RewriteDuringCompilationTest$BaseNode;)V
astore 2
start local 2 2: aload 0
aload 2
aload 2
getfield org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest$WhileLoopNode.loop:Lcom/oracle/truffle/api/nodes/LoopNode;
aload 1
sipush 1000
bipush 40
invokevirtual org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest.testCompilation:(Lorg/graalvm/compiler/truffle/test/RewriteDuringCompilationTest$BaseNode;Lcom/oracle/truffle/api/nodes/LoopNode;Lorg/graalvm/compiler/truffle/test/RewriteDuringCompilationTest$DetectInvalidCodeNode;II)V
3: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/graalvm/compiler/truffle/test/RewriteDuringCompilationTest;
1 4 1 detectInvalidCodeNode Lorg/graalvm/compiler/truffle/test/RewriteDuringCompilationTest$DetectInvalidCodeNode;
2 4 2 testedCode Lorg/graalvm/compiler/truffle/test/RewriteDuringCompilationTest$WhileLoopNode;
Exceptions:
throws java.io.IOException, java.lang.InterruptedException, java.util.concurrent.ExecutionException
RuntimeVisibleAnnotations:
org.junit.Test()
private void testCompilation(org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest$BaseNode, com.oracle.truffle.api.nodes.LoopNode, org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest$DetectInvalidCodeNode, int, int);
descriptor: (Lorg/graalvm/compiler/truffle/test/RewriteDuringCompilationTest$BaseNode;Lcom/oracle/truffle/api/nodes/LoopNode;Lorg/graalvm/compiler/truffle/test/RewriteDuringCompilationTest$DetectInvalidCodeNode;II)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=9, locals=15, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 0
iconst_0
anewarray java.lang.String
invokestatic org.graalvm.polyglot.Context.create:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context;
new org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest$1
dup
aload 0
aload 1
invokespecial org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest$1.<init>:(Lorg/graalvm/compiler/truffle/test/RewriteDuringCompilationTest;Lorg/graalvm/compiler/truffle/test/RewriteDuringCompilationTest$BaseNode;)V
invokevirtual org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest.setupEnv:(Lorg/graalvm/polyglot/Context;Lcom/oracle/truffle/api/test/polyglot/ProxyLanguage;)V
1: new java.util.concurrent.atomic.AtomicReference
dup
aload 3
invokespecial java.util.concurrent.atomic.AtomicReference.<init>:(Ljava/lang/Object;)V
astore 6
start local 6 2: new java.util.Random
dup
invokespecial java.util.Random.<init>:()V
astore 7
start local 7 3: new java.util.concurrent.CountDownLatch
dup
iconst_1
invokespecial java.util.concurrent.CountDownLatch.<init>:(I)V
astore 8
start local 8 4: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 9
start local 9 5: aload 0
iconst_1
putfield org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest.rewriting:Z
6: iconst_1
invokestatic java.util.concurrent.Executors.newFixedThreadPool:(I)Ljava/util/concurrent/ExecutorService;
astore 10
start local 10 7: aload 10
aload 0
iload 4
aload 7
iload 5
aload 8
aload 2
aload 9
aload 6
invokedynamic run(Lorg/graalvm/compiler/truffle/test/RewriteDuringCompilationTest;ILjava/util/Random;ILjava/util/concurrent/CountDownLatch;Lcom/oracle/truffle/api/nodes/LoopNode;Ljava/util/List;Ljava/util/concurrent/atomic/AtomicReference;)Ljava/lang/Runnable;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
()V
org/graalvm/compiler/truffle/test/RewriteDuringCompilationTest.lambda$0(ILjava/util/Random;ILjava/util/concurrent/CountDownLatch;Lcom/oracle/truffle/api/nodes/LoopNode;Ljava/util/List;Ljava/util/concurrent/atomic/AtomicReference;)V (7)
()V
invokeinterface java.util.concurrent.ExecutorService.submit:(Ljava/lang/Runnable;)Ljava/util/concurrent/Future;
astore 11
start local 11 8: ldc "proxyLanguage"
ldc ""
ldc "DummySource"
invokestatic org.graalvm.polyglot.Source.newBuilder:(Ljava/lang/String;Ljava/lang/CharSequence;Ljava/lang/String;)Lorg/graalvm/polyglot/Source$Builder;
invokevirtual org.graalvm.polyglot.Source$Builder.build:()Lorg/graalvm/polyglot/Source;
astore 12
start local 12 9: StackMap locals: org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest$BaseNode com.oracle.truffle.api.nodes.LoopNode org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest$DetectInvalidCodeNode int int java.util.concurrent.atomic.AtomicReference java.util.Random java.util.concurrent.CountDownLatch java.util.List java.util.concurrent.ExecutorService java.util.concurrent.Future org.graalvm.polyglot.Source
StackMap stack:
aload 0
getfield org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest.context:Lorg/graalvm/polyglot/Context;
aload 12
invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
pop
10: aload 8
invokevirtual java.util.concurrent.CountDownLatch.countDown:()V
11: aload 0
getfield org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest.rewriting:Z
ifne 9
12: goto 19
StackMap locals:
StackMap stack: java.lang.Throwable
13: astore 13
14: aload 0
iconst_0
putfield org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest.rewriting:Z
15: aload 11
invokeinterface java.util.concurrent.Future.get:()Ljava/lang/Object;
pop
16: aload 10
invokeinterface java.util.concurrent.ExecutorService.shutdownNow:()Ljava/util/List;
pop
17: aload 10
ldc 100
getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
invokeinterface java.util.concurrent.ExecutorService.awaitTermination:(JLjava/util/concurrent/TimeUnit;)Z
pop
18: aload 13
athrow
19: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest.rewriting:Z
20: aload 11
invokeinterface java.util.concurrent.Future.get:()Ljava/lang/Object;
pop
21: aload 10
invokeinterface java.util.concurrent.ExecutorService.shutdownNow:()Ljava/util/List;
pop
22: aload 10
ldc 100
getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
invokeinterface java.util.concurrent.ExecutorService.awaitTermination:(JLjava/util/concurrent/TimeUnit;)Z
pop
23: aload 9
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 14
goto 26
StackMap locals: org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest$BaseNode com.oracle.truffle.api.nodes.LoopNode org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest$DetectInvalidCodeNode int int java.util.concurrent.atomic.AtomicReference java.util.Random java.util.concurrent.CountDownLatch java.util.List java.util.concurrent.ExecutorService java.util.concurrent.Future org.graalvm.polyglot.Source top java.util.Iterator
StackMap stack:
24: aload 14
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
astore 13
start local 13 25: ldc "Obsolete loop call target is still valid"
aload 13
checkcast org.graalvm.compiler.truffle.runtime.OptimizedCallTarget
invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.isValid:()Z
invokestatic org.junit.Assert.assertFalse:(Ljava/lang/String;Z)V
end local 13 26: StackMap locals:
StackMap stack:
aload 14
invokeinterface java.util.Iterator.hasNext:()Z
ifne 24
27: return
end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 28 0 this Lorg/graalvm/compiler/truffle/test/RewriteDuringCompilationTest;
0 28 1 testedCode Lorg/graalvm/compiler/truffle/test/RewriteDuringCompilationTest$BaseNode;
0 28 2 loopNode Lcom/oracle/truffle/api/nodes/LoopNode;
0 28 3 nodeToRewrite Lorg/graalvm/compiler/truffle/test/RewriteDuringCompilationTest$DetectInvalidCodeNode;
0 28 4 rewriteCount I
0 28 5 maxDelayBeforeRewrite I
2 28 6 nodeToRewriteReference Ljava/util/concurrent/atomic/AtomicReference<Lorg/graalvm/compiler/truffle/test/RewriteDuringCompilationTest$DetectInvalidCodeNode;>;
3 28 7 rnd Ljava/util/Random;
4 28 8 nodeRewritingLatch Ljava/util/concurrent/CountDownLatch;
5 28 9 callTargetsToCheck Ljava/util/List<Ljava/lang/Object;>;
7 28 10 executor Ljava/util/concurrent/ExecutorService;
8 28 11 future Ljava/util/concurrent/Future<*>;
9 28 12 source Lorg/graalvm/polyglot/Source;
25 26 13 callTarget Ljava/lang/Object;
Exception table:
from to target type
9 13 13 any
Exceptions:
throws java.io.IOException, java.lang.InterruptedException, java.util.concurrent.ExecutionException
MethodParameters:
Name Flags
testedCode
loopNode
nodeToRewrite
rewriteCount
maxDelayBeforeRewrite
private void lambda$0(int, java.util.Random, int, java.util.concurrent.CountDownLatch, com.oracle.truffle.api.nodes.LoopNode, java.util.List, java.util.concurrent.atomic.AtomicReference);
descriptor: (ILjava/util/Random;ILjava/util/concurrent/CountDownLatch;Lcom/oracle/truffle/api/nodes/LoopNode;Ljava/util/List;Ljava/util/concurrent/atomic/AtomicReference;)V
flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
Code:
stack=2, locals=12, args_size=8
start local 0 0: iconst_1
istore 8
start local 8 1: goto 16
2: StackMap locals: int
StackMap stack:
aload 2
iload 3
invokevirtual java.util.Random.nextInt:(I)I
i2l
invokestatic java.lang.Thread.sleep:(J)V
3: aload 4
invokevirtual java.util.concurrent.CountDownLatch.await:()V
4: goto 6
StackMap locals:
StackMap stack: java.lang.InterruptedException
5: pop
6: StackMap locals:
StackMap stack:
aload 5
ifnull 10
7: aload 5
checkcast org.graalvm.compiler.truffle.runtime.OptimizedOSRLoopNode
invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedOSRLoopNode.getCompiledOSRLoop:()Lorg/graalvm/compiler/truffle/runtime/OptimizedCallTarget;
astore 9
start local 9 8: aload 9
ifnull 10
9: aload 6
aload 9
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 9 10: StackMap locals:
StackMap stack:
aload 7
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest$DetectInvalidCodeNode
astore 9
start local 9 11: new org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest$DetectInvalidCodeNode
dup
invokespecial org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest$DetectInvalidCodeNode.<init>:()V
astore 10
start local 10 12: aload 7
aload 10
invokevirtual java.util.concurrent.atomic.AtomicReference.set:(Ljava/lang/Object;)V
13: aload 9
aload 10
invokevirtual org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest$DetectInvalidCodeNode.replace:(Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/api/nodes/Node;
pop
14: aload 9
iconst_0
putfield org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest$DetectInvalidCodeNode.valid:Z
end local 10 end local 9 15: iinc 8 1
StackMap locals:
StackMap stack:
16: iload 8
iload 1
if_icmpgt 21
aload 0
getfield org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest.rewriting:Z
ifne 2
end local 8 17: goto 21
StackMap locals: org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest int java.util.Random int java.util.concurrent.CountDownLatch com.oracle.truffle.api.nodes.LoopNode java.util.List java.util.concurrent.atomic.AtomicReference
StackMap stack: java.lang.Throwable
18: astore 11
19: aload 0
iconst_0
putfield org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest.rewriting:Z
20: aload 11
athrow
21: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest.rewriting:Z
22: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 23 0 this Lorg/graalvm/compiler/truffle/test/RewriteDuringCompilationTest;
1 17 8 i I
8 10 9 loopNodeCallTarget Ljava/lang/Object;
11 15 9 previousNode Lorg/graalvm/compiler/truffle/test/RewriteDuringCompilationTest$DetectInvalidCodeNode;
12 15 10 newNode Lorg/graalvm/compiler/truffle/test/RewriteDuringCompilationTest$DetectInvalidCodeNode;
Exception table:
from to target type
2 4 5 Class java.lang.InterruptedException
0 18 18 any
}
SourceFile: "RewriteDuringCompilationTest.java"
NestMembers:
org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest$1 org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest$1$1 org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest$BaseNode org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest$DetectInvalidCodeNode org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest$WhileLoopNode org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest$WhileLoopNode$LoopConditionNode
InnerClasses:
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest$1
abstract BaseNode = org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest$BaseNode of org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest
final DetectInvalidCodeNode = org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest$DetectInvalidCodeNode of org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest
final WhileLoopNode = org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest$WhileLoopNode of org.graalvm.compiler.truffle.test.RewriteDuringCompilationTest
public Builder = org.graalvm.polyglot.Source$Builder of org.graalvm.polyglot.Source