public class com.oracle.truffle.api.dsl.test.SpecializationStatisticsTest
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.oracle.truffle.api.dsl.test.SpecializationStatisticsTest
super_class: java.lang.Object
{
private static final java.lang.String EXPECTED;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: " ----------------------------------------------------------------------------------------------------------------------------------------------%n| Name Instances Executions Executions per instance %n ----------------------------------------------------------------------------------------------------------------------------------------------%n| SpecializationStatisticTestNodeGen.Uncached 1 (33%) 1 (9%) Min= 1 Avg= 1.00 Max= 1 MaxNode= N/A %n| s0 0 (0%) 0 (0%) Min= 0 Avg= 0.00 Max= 0 MaxNode= - %n| s1 0 (0%) 0 (0%) Min= 0 Avg= 0.00 Max= 0 MaxNode= - %n| s2 0 (0%) 0 (0%) Min= 0 Avg= 0.00 Max= 0 MaxNode= - %n| s3 <String> 1 (100%) 1 (100%) Min= 1 Avg= 1.00 Max= 1 MaxNode= N/A %n| -------------------------------------------------------------------------------------------------------------------------------------------%n| [s3] 1 (100%) 1 (100%) Min= 1 Avg= 1.00 Max= 1 MaxNode= N/A %n ----------------------------------------------------------------------------------------------------------------------------------------------%n| Name Instances Executions Executions per instance %n ----------------------------------------------------------------------------------------------------------------------------------------------%n| SpecializationStatisticTestNodeGen 2 (67%) 10 (91%) Min= 3 Avg= 5.00 Max= 7 MaxNode= testLangFile0.file~1:0 %n| s0 <int> 1 (50%) 3 (30%) Min= 3 Avg= 3.00 Max= 3 MaxNode= testLangFile0.file~1:0 %n| s1 <int> 1 (50%) 1 (10%) Min= 1 Avg= 1.00 Max= 1 MaxNode= testLangFile0.file~1:0 %n| s2 <String> 2 (100%) 4 (40%) Min= 1 Avg= 2.00 Max= 3 MaxNode= testLangFile1.file~1:0 %n| s3 1 (50%) 2 (20%) Min= 2 Avg= 2.00 Max= 2 MaxNode= testLangFile0.file~1:0 %n| <String> 1 (100%) 1 (50%) Min= 1 Avg= 1.00 Max= 1 MaxNode= testLangFile0.file~1:0 %n| <StringBuilder> 1 (100%) 1 (50%) Min= 1 Avg= 1.00 Max= 1 MaxNode= testLangFile0.file~1:0 %n| -------------------------------------------------------------------------------------------------------------------------------------------%n| [s0, s1, s2, s3] 1 (50%) 7 (70%) Min= 7 Avg= 7.00 Max= 7 MaxNode= testLangFile0.file~1:0 %n| s0 1 (100%) 3 (43%) Min= 3 Avg= 3.00 Max= 3 MaxNode= testLangFile0.file~1:0 %n| s1 1 (100%) 1 (14%) Min= 1 Avg= 1.00 Max= 1 MaxNode= testLangFile0.file~1:0 %n| s2 1 (100%) 1 (14%) Min= 1 Avg= 1.00 Max= 1 MaxNode= testLangFile0.file~1:0 %n| s3 1 (100%) 2 (29%) Min= 2 Avg= 2.00 Max= 2 MaxNode= testLangFile0.file~1:0 %n| [s2] 1 (50%) 3 (30%) Min= 3 Avg= 3.00 Max= 3 MaxNode= testLangFile1.file~1:0 %n ----------------------------------------------------------------------------------------------------------------------------------------------%n"
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/api/dsl/test/SpecializationStatisticsTest;
public void testCustomEnterLeave();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=5, args_size=1
start local 0 0: invokestatic com.oracle.truffle.api.dsl.SpecializationStatistics.create:()Lcom/oracle/truffle/api/dsl/SpecializationStatistics;
astore 1
start local 1 1: aload 1
invokevirtual com.oracle.truffle.api.dsl.SpecializationStatistics.enter:()Lcom/oracle/truffle/api/dsl/SpecializationStatistics;
astore 2
start local 2 2: invokestatic com.oracle.truffle.api.dsl.test.SpecializationStatisticsTest.createAndExecuteNodes:()V
3: new java.io.StringWriter
dup
invokespecial java.io.StringWriter.<init>:()V
astore 3
start local 3 4: aload 1
new java.io.PrintWriter
dup
aload 3
invokespecial java.io.PrintWriter.<init>:(Ljava/io/Writer;)V
invokevirtual com.oracle.truffle.api.dsl.SpecializationStatistics.printHistogram:(Ljava/io/PrintWriter;)V
5: invokestatic com.oracle.truffle.api.dsl.test.SpecializationStatisticsTest.readExpectedOutput:()Ljava/lang/String;
astore 4
start local 4 6: aload 4
aload 3
invokevirtual java.io.StringWriter.toString:()Ljava/lang/String;
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
7: aload 1
aload 2
invokevirtual com.oracle.truffle.api.dsl.SpecializationStatistics.leave:(Lcom/oracle/truffle/api/dsl/SpecializationStatistics;)V
8: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lcom/oracle/truffle/api/dsl/test/SpecializationStatisticsTest;
1 9 1 statistics Lcom/oracle/truffle/api/dsl/SpecializationStatistics;
2 9 2 prev Lcom/oracle/truffle/api/dsl/SpecializationStatistics;
4 9 3 writer Ljava/io/StringWriter;
6 9 4 contents Ljava/lang/String;
RuntimeVisibleAnnotations:
org.junit.Test()
private static java.lang.String readExpectedOutput();
descriptor: ()Ljava/lang/String;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=0, args_size=0
0: ldc " ----------------------------------------------------------------------------------------------------------------------------------------------%n| Name Instances Executions Executions per instance %n ----------------------------------------------------------------------------------------------------------------------------------------------%n| SpecializationStatisticTestNodeGen.Uncached 1 (33%) 1 (9%) Min= 1 Avg= 1.00 Max= 1 MaxNode= N/A %n| s0 0 (0%) 0 (0%) Min= 0 Avg= 0.00 Max= 0 MaxNode= - %n| s1 0 (0%) 0 (0%) Min= 0 Avg= 0.00 Max= 0 MaxNode= - %n| s2 0 (0%) 0 (0%) Min= 0 Avg= 0.00 Max= 0 MaxNode= - %n| s3 <String> 1 (100%) 1 (100%) Min= 1 Avg= 1.00 Max= 1 MaxNode= N/A %n| -------------------------------------------------------------------------------------------------------------------------------------------%n| [s3] 1 (100%) 1 (100%) Min= 1 Avg= 1.00 Max= 1 MaxNode= N/A %n ----------------------------------------------------------------------------------------------------------------------------------------------%n| Name Instances Executions Executions per instance %n ----------------------------------------------------------------------------------------------------------------------------------------------%n| SpecializationStatisticTestNodeGen 2 (67%) 10 (91%) Min= 3 Avg= 5.00 Max= 7 MaxNode= testLangFile0.file~1:0 %n| s0 <int> 1 (50%) 3 (30%) Min= 3 Avg= 3.00 Max= 3 MaxNode= testLangFile0.file~1:0 %n| s1 <int> 1 (50%) 1 (10%) Min= 1 Avg= 1.00 Max= 1 MaxNode= testLangFile0.file~1:0 %n| s2 <String> 2 (100%) 4 (40%) Min= 1 Avg= 2.00 Max= 3 MaxNode= testLangFile1.file~1:0 %n| s3 1 (50%) 2 (20%) Min= 2 Avg= 2.00 Max= 2 MaxNode= testLangFile0.file~1:0 %n| <String> 1 (100%) 1 (50%) Min= 1 Avg= 1.00 Max= 1 MaxNode= testLangFile0.file~1:0 %n| <StringBuilder> 1 (100%) 1 (50%) Min= 1 Avg= 1.00 Max= 1 MaxNode= testLangFile0.file~1:0 %n| -------------------------------------------------------------------------------------------------------------------------------------------%n| [s0, s1, s2, s3] 1 (50%) 7 (70%) Min= 7 Avg= 7.00 Max= 7 MaxNode= testLangFile0.file~1:0 %n| s0 1 (100%) 3 (43%) Min= 3 Avg= 3.00 Max= 3 MaxNode= testLangFile0.file~1:0 %n| s1 1 (100%) 1 (14%) Min= 1 Avg= 1.00 Max= 1 MaxNode= testLangFile0.file~1:0 %n| s2 1 (100%) 1 (14%) Min= 1 Avg= 1.00 Max= 1 MaxNode= testLangFile0.file~1:0 %n| s3 1 (100%) 2 (29%) Min= 2 Avg= 2.00 Max= 2 MaxNode= testLangFile0.file~1:0 %n| [s2] 1 (50%) 3 (30%) Min= 3 Avg= 3.00 Max= 3 MaxNode= testLangFile1.file~1:0 %n ----------------------------------------------------------------------------------------------------------------------------------------------%n"
ldc "%n"
invokestatic java.lang.System.lineSeparator:()Ljava/lang/String;
invokevirtual java.lang.String.replaceAll:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
areturn
LocalVariableTable:
Start End Slot Name Signature
private static void createAndExecuteNodes();
descriptor: ()V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=0, args_size=0
0: new java.lang.Error
dup
ldc "Unresolved compilation problems: \n\tSpecializationStatisticTestNodeGen cannot be resolved\n\tSpecializationStatisticTestNodeGen cannot be resolved\n\tSpecializationStatisticTestNodeGen cannot be resolved\n"
invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
athrow
LocalVariableTable:
Start End Slot Name Signature
public void testWithContextEnabled();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=5, args_size=1
start local 0 0: new java.io.ByteArrayOutputStream
dup
invokespecial java.io.ByteArrayOutputStream.<init>:()V
astore 1
start local 1 1: aconst_null
astore 2
aconst_null
astore 3
2: iconst_0
anewarray java.lang.String
invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
iconst_1
invokevirtual org.graalvm.polyglot.Context$Builder.allowExperimentalOptions:(Z)Lorg/graalvm/polyglot/Context$Builder;
ldc "engine.SpecializationStatistics"
ldc "true"
invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
aload 1
invokevirtual org.graalvm.polyglot.Context$Builder.logHandler:(Ljava/io/OutputStream;)Lorg/graalvm/polyglot/Context$Builder;
invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
astore 4
start local 4 3: aload 4
invokevirtual org.graalvm.polyglot.Context.enter:()V
4: invokestatic com.oracle.truffle.api.dsl.test.SpecializationStatisticsTest.createAndExecuteNodes:()V
5: aload 4
invokevirtual org.graalvm.polyglot.Context.leave:()V
6: aload 4
ifnull 12
aload 4
invokevirtual org.graalvm.polyglot.Context.close:()V
goto 12
StackMap locals: com.oracle.truffle.api.dsl.test.SpecializationStatisticsTest java.io.ByteArrayOutputStream java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
StackMap stack: java.lang.Throwable
7: astore 2
aload 4
ifnull 8
aload 4
invokevirtual org.graalvm.polyglot.Context.close:()V
end local 4 StackMap locals:
StackMap stack:
8: aload 2
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
9: astore 3
aload 2
ifnonnull 10
aload 3
astore 2
goto 11
StackMap locals:
StackMap stack:
10: aload 2
aload 3
if_acmpeq 11
aload 2
aload 3
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
11: aload 2
athrow
12: StackMap locals:
StackMap stack:
invokestatic com.oracle.truffle.api.dsl.test.SpecializationStatisticsTest.readExpectedOutput:()Ljava/lang/String;
invokestatic com.oracle.truffle.api.dsl.test.SpecializationStatisticsTest.createLogEntry:(Ljava/lang/String;)Ljava/lang/String;
new java.lang.String
dup
aload 1
invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
invokespecial java.lang.String.<init>:([B)V
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
13: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lcom/oracle/truffle/api/dsl/test/SpecializationStatisticsTest;
1 14 1 out Ljava/io/ByteArrayOutputStream;
3 8 4 context Lorg/graalvm/polyglot/Context;
Exception table:
from to target type
3 6 7 any
2 9 9 any
RuntimeVisibleAnnotations:
org.junit.Test()
private static java.lang.String createLogEntry(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/lang/String;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=1, args_size=1
start local 0 0: ldc "[engine] Specialization histogram: %n%s%n"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 0
aastore
invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 logMessage Ljava/lang/String;
MethodParameters:
Name Flags
logMessage
public void testWithContextDisabled();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=5, args_size=1
start local 0 0: new java.io.ByteArrayOutputStream
dup
invokespecial java.io.ByteArrayOutputStream.<init>:()V
astore 1
start local 1 1: aconst_null
astore 2
aconst_null
astore 3
2: iconst_0
anewarray java.lang.String
invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
iconst_1
invokevirtual org.graalvm.polyglot.Context$Builder.allowExperimentalOptions:(Z)Lorg/graalvm/polyglot/Context$Builder;
ldc "engine.SpecializationStatistics"
ldc "false"
invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
aload 1
invokevirtual org.graalvm.polyglot.Context$Builder.logHandler:(Ljava/io/OutputStream;)Lorg/graalvm/polyglot/Context$Builder;
invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
astore 4
start local 4 3: aload 4
invokevirtual org.graalvm.polyglot.Context.enter:()V
4: invokestatic com.oracle.truffle.api.dsl.test.SpecializationStatisticsTest.createAndExecuteNodes:()V
5: aload 4
invokevirtual org.graalvm.polyglot.Context.leave:()V
6: aload 4
ifnull 12
aload 4
invokevirtual org.graalvm.polyglot.Context.close:()V
goto 12
StackMap locals: com.oracle.truffle.api.dsl.test.SpecializationStatisticsTest java.io.ByteArrayOutputStream java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
StackMap stack: java.lang.Throwable
7: astore 2
aload 4
ifnull 8
aload 4
invokevirtual org.graalvm.polyglot.Context.close:()V
end local 4 StackMap locals:
StackMap stack:
8: aload 2
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
9: astore 3
aload 2
ifnonnull 10
aload 3
astore 2
goto 11
StackMap locals:
StackMap stack:
10: aload 2
aload 3
if_acmpeq 11
aload 2
aload 3
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
11: aload 2
athrow
12: StackMap locals:
StackMap stack:
ldc ""
new java.lang.String
dup
aload 1
invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
invokespecial java.lang.String.<init>:([B)V
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
13: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lcom/oracle/truffle/api/dsl/test/SpecializationStatisticsTest;
1 14 1 out Ljava/io/ByteArrayOutputStream;
3 8 4 context Lorg/graalvm/polyglot/Context;
Exception table:
from to target type
3 6 7 any
2 9 9 any
RuntimeVisibleAnnotations:
org.junit.Test()
public void testWithContextNoExecute();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=5, args_size=1
start local 0 0: new java.io.ByteArrayOutputStream
dup
invokespecial java.io.ByteArrayOutputStream.<init>:()V
astore 1
start local 1 1: aconst_null
astore 2
aconst_null
astore 3
2: iconst_0
anewarray java.lang.String
invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
iconst_1
invokevirtual org.graalvm.polyglot.Context$Builder.allowExperimentalOptions:(Z)Lorg/graalvm/polyglot/Context$Builder;
ldc "engine.SpecializationStatistics"
ldc "true"
invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
aload 1
invokevirtual org.graalvm.polyglot.Context$Builder.logHandler:(Ljava/io/OutputStream;)Lorg/graalvm/polyglot/Context$Builder;
invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
astore 4
start local 4 3: aload 4
invokevirtual org.graalvm.polyglot.Context.enter:()V
4: aload 4
invokevirtual org.graalvm.polyglot.Context.leave:()V
5: aload 4
ifnull 11
aload 4
invokevirtual org.graalvm.polyglot.Context.close:()V
goto 11
StackMap locals: com.oracle.truffle.api.dsl.test.SpecializationStatisticsTest java.io.ByteArrayOutputStream java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
StackMap stack: java.lang.Throwable
6: astore 2
aload 4
ifnull 7
aload 4
invokevirtual org.graalvm.polyglot.Context.close:()V
end local 4 StackMap locals:
StackMap stack:
7: aload 2
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
8: astore 3
aload 2
ifnonnull 9
aload 3
astore 2
goto 10
StackMap locals:
StackMap stack:
9: aload 2
aload 3
if_acmpeq 10
aload 2
aload 3
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
10: aload 2
athrow
11: StackMap locals:
StackMap stack:
ldc "No specialization statistics data was collected. Either no node with @Specialization annotations was executed or the interpreter was not compiled with -J-Dtruffle.dsl.GenerateSpecializationStatistics=true e.g as parameter to the javac tool."
invokestatic com.oracle.truffle.api.dsl.test.SpecializationStatisticsTest.createLogEntry:(Ljava/lang/String;)Ljava/lang/String;
12: new java.lang.String
dup
aload 1
invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
invokespecial java.lang.String.<init>:([B)V
13: invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
14: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lcom/oracle/truffle/api/dsl/test/SpecializationStatisticsTest;
1 15 1 out Ljava/io/ByteArrayOutputStream;
3 7 4 context Lorg/graalvm/polyglot/Context;
Exception table:
from to target type
3 5 6 any
2 8 8 any
RuntimeVisibleAnnotations:
org.junit.Test()
}
SourceFile: "SpecializationStatisticsTest.java"
NestMembers:
com.oracle.truffle.api.dsl.test.SpecializationStatisticsTest$SpecializationStatisticTestNode
InnerClasses:
abstract SpecializationStatisticTestNode = com.oracle.truffle.api.dsl.test.SpecializationStatisticsTest$SpecializationStatisticTestNode of com.oracle.truffle.api.dsl.test.SpecializationStatisticsTest
public final Builder = org.graalvm.polyglot.Context$Builder of org.graalvm.polyglot.Context