public class com.oracle.truffle.st.test.SimpleCoverageInstrumentTest
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.oracle.truffle.st.test.SimpleCoverageInstrumentTest
super_class: java.lang.Object
{
private static final java.lang.String JS_SOURCE;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "var N = 2000;\nvar EXPECTED = 17393;\n\nfunction Natural() {\n x = 2;\n return {\n 'next' : function() { return x++; }\n };\n}\n\nfunction Filter(number, filter) {\n var self = this;\n this.number = number;\n this.filter = filter;\n this.accept = function(n) {\n var filter = self;\n for (;;) {\n if (n % filter.number === 0) {\n return false;\n }\n filter = filter.filter;\n if (filter === null) {\n break;\n }\n }\n return true;\n };\n return this;\n}\n\nfunction Primes(natural) {\n var self = this;\n this.natural = natural;\n this.filter = null;\n this.next = function() {\n for (;;) {\n var n = self.natural.next();\n if (self.filter === null || self.filter.accept(n)) {\n self.filter = new Filter(n, self.filter);\n return n;\n }\n }\n };\n}\n\nvar holdsAFunctionThatIsNeverCalled = function(natural) {\n var self = this;\n this.natural = natural;\n this.filter = null;\n this.next = function() {\n for (;;) {\n var n = self.natural.next();\n if (self.filter === null || self.filter.accept(n)) {\n self.filter = new Filter(n, self.filter);\n return n;\n }\n }\n };\n}\n\nvar holdsAFunctionThatIsNeverCalledOneLine = function() {return null;}\n\nfunction primesMain() {\n var primes = new Primes(Natural());\n var primArray = [];\n for (var i=0;i<=N;i++) { primArray.push(primes.next()); }\n if (primArray[N] != EXPECTED) { throw new Error('wrong prime found: ' + primArray[N]); }\n}\nprimesMain();\n"
private static final java.lang.String SL_SOURCE;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "\nfunction neverCalled() {\n x = 5;\n y = 9;\n return x + 5;\n}\nfunction isCalled() {\n return 5 + 5;\n}\nfunction main() { \n 10 + isCalled(); \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/st/test/SimpleCoverageInstrumentTest;
public void exampleJSTest();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=5, args_size=1
start local 0 0: invokestatic org.graalvm.polyglot.Engine.create:()Lorg/graalvm/polyglot/Engine;
invokevirtual org.graalvm.polyglot.Engine.getLanguages:()Ljava/util/Map;
ldc "js"
invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
invokestatic org.junit.Assume.assumeTrue:(Z)V
1: aconst_null
astore 1
aconst_null
astore 2
2: iconst_1
anewarray java.lang.String
dup
iconst_0
ldc "js"
aastore
invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
ldc "simple-code-coverage"
ldc "true"
invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
ldc "simple-code-coverage.PrintCoverage"
ldc "false"
invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
astore 3
start local 3 3: ldc "js"
ldc "var N = 2000;\nvar EXPECTED = 17393;\n\nfunction Natural() {\n x = 2;\n return {\n 'next' : function() { return x++; }\n };\n}\n\nfunction Filter(number, filter) {\n var self = this;\n this.number = number;\n this.filter = filter;\n this.accept = function(n) {\n var filter = self;\n for (;;) {\n if (n % filter.number === 0) {\n return false;\n }\n filter = filter.filter;\n if (filter === null) {\n break;\n }\n }\n return true;\n };\n return this;\n}\n\nfunction Primes(natural) {\n var self = this;\n this.natural = natural;\n this.filter = null;\n this.next = function() {\n for (;;) {\n var n = self.natural.next();\n if (self.filter === null || self.filter.accept(n)) {\n self.filter = new Filter(n, self.filter);\n return n;\n }\n }\n };\n}\n\nvar holdsAFunctionThatIsNeverCalled = function(natural) {\n var self = this;\n this.natural = natural;\n this.filter = null;\n this.next = function() {\n for (;;) {\n var n = self.natural.next();\n if (self.filter === null || self.filter.accept(n)) {\n self.filter = new Filter(n, self.filter);\n return n;\n }\n }\n };\n}\n\nvar holdsAFunctionThatIsNeverCalledOneLine = function() {return null;}\n\nfunction primesMain() {\n var primes = new Primes(Natural());\n var primArray = [];\n for (var i=0;i<=N;i++) { primArray.push(primes.next()); }\n if (primArray[N] != EXPECTED) { throw new Error('wrong prime found: ' + primArray[N]); }\n}\nprimesMain();\n"
ldc "main"
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 4
start local 4 4: aload 3
aload 4
invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
pop
5: aload 3
invokestatic com.oracle.truffle.st.test.SimpleCoverageInstrumentTest.assertJSCorrect:(Lorg/graalvm/polyglot/Context;)V
end local 4 6: aload 3
ifnull 12
aload 3
invokevirtual org.graalvm.polyglot.Context.close:()V
goto 12
StackMap locals: com.oracle.truffle.st.test.SimpleCoverageInstrumentTest java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
StackMap stack: java.lang.Throwable
7: astore 1
aload 3
ifnull 8
aload 3
invokevirtual org.graalvm.polyglot.Context.close:()V
end local 3 StackMap locals:
StackMap stack:
8: aload 1
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
9: astore 2
aload 1
ifnonnull 10
aload 2
astore 1
goto 11
StackMap locals:
StackMap stack:
10: aload 1
aload 2
if_acmpeq 11
aload 1
aload 2
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
11: aload 1
athrow
12: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lcom/oracle/truffle/st/test/SimpleCoverageInstrumentTest;
3 8 3 context Lorg/graalvm/polyglot/Context;
4 6 4 source Lorg/graalvm/polyglot/Source;
Exception table:
from to target type
3 6 7 any
2 9 9 any
Exceptions:
throws java.io.IOException
RuntimeVisibleAnnotations:
org.junit.Test()
private static void assertJSCorrect(org.graalvm.polyglot.Context);
descriptor: (Lorg/graalvm/polyglot/Context;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=3, args_size=1
start local 0 0: aload 0
invokevirtual org.graalvm.polyglot.Context.getEngine:()Lorg/graalvm/polyglot/Engine;
invokevirtual org.graalvm.polyglot.Engine.getInstruments:()Ljava/util/Map;
ldc "simple-code-coverage"
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.graalvm.polyglot.Instrument
ldc Lcom/oracle/truffle/st/SimpleCoverageInstrument;
invokevirtual org.graalvm.polyglot.Instrument.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
checkcast com.oracle.truffle.st.SimpleCoverageInstrument
astore 1
start local 1 1: aload 1
invokevirtual com.oracle.truffle.st.SimpleCoverageInstrument.getCoverageMap:()Ljava/util/Map;
astore 2
start local 2 2: lconst_1
aload 2
invokeinterface java.util.Map.size:()I
i2l
invokestatic org.junit.Assert.assertEquals:(JJ)V
3: aload 2
aload 1
invokedynamic accept(Lcom/oracle/truffle/st/SimpleCoverageInstrument;)Ljava/util/function/BiConsumer;
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:
(Ljava/lang/Object;Ljava/lang/Object;)V
com/oracle/truffle/st/test/SimpleCoverageInstrumentTest.lambda$0(Lcom/oracle/truffle/st/SimpleCoverageInstrument;Lcom/oracle/truffle/api/source/Source;Lcom/oracle/truffle/st/Coverage;)V (6)
(Lcom/oracle/truffle/api/source/Source;Lcom/oracle/truffle/st/Coverage;)V
invokeinterface java.util.Map.forEach:(Ljava/util/function/BiConsumer;)V
4: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 context Lorg/graalvm/polyglot/Context;
1 5 1 coverageInstrument Lcom/oracle/truffle/st/SimpleCoverageInstrument;
2 5 2 coverageMap Ljava/util/Map<Lcom/oracle/truffle/api/source/Source;Lcom/oracle/truffle/st/Coverage;>;
MethodParameters:
Name Flags
context final
public void exampleSLTest();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=7, args_size=1
start local 0 0: invokestatic org.graalvm.polyglot.Engine.create:()Lorg/graalvm/polyglot/Engine;
invokevirtual org.graalvm.polyglot.Engine.getLanguages:()Ljava/util/Map;
ldc "sl"
invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
invokestatic org.junit.Assume.assumeTrue:(Z)V
1: aconst_null
astore 1
aconst_null
astore 2
2: iconst_1
anewarray java.lang.String
dup
iconst_0
ldc "sl"
aastore
invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
ldc "simple-code-coverage"
ldc "true"
invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
ldc "simple-code-coverage.PrintCoverage"
ldc "false"
invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
astore 3
start local 3 3: ldc "sl"
ldc "\nfunction neverCalled() {\n x = 5;\n y = 9;\n return x + 5;\n}\nfunction isCalled() {\n return 5 + 5;\n}\nfunction main() { \n 10 + isCalled(); \n}\n"
ldc "main"
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 4
start local 4 4: aload 3
aload 4
invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
pop
5: aload 3
invokevirtual org.graalvm.polyglot.Context.getEngine:()Lorg/graalvm/polyglot/Engine;
invokevirtual org.graalvm.polyglot.Engine.getInstruments:()Ljava/util/Map;
ldc "simple-code-coverage"
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.graalvm.polyglot.Instrument
ldc Lcom/oracle/truffle/st/SimpleCoverageInstrument;
invokevirtual org.graalvm.polyglot.Instrument.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
checkcast com.oracle.truffle.st.SimpleCoverageInstrument
astore 5
start local 5 6: aload 5
invokevirtual com.oracle.truffle.st.SimpleCoverageInstrument.getCoverageMap:()Ljava/util/Map;
astore 6
start local 6 7: lconst_1
aload 6
invokeinterface java.util.Map.size:()I
i2l
invokestatic org.junit.Assert.assertEquals:(JJ)V
8: aload 6
aload 5
invokedynamic accept(Lcom/oracle/truffle/st/SimpleCoverageInstrument;)Ljava/util/function/BiConsumer;
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:
(Ljava/lang/Object;Ljava/lang/Object;)V
com/oracle/truffle/st/test/SimpleCoverageInstrumentTest.lambda$1(Lcom/oracle/truffle/st/SimpleCoverageInstrument;Lcom/oracle/truffle/api/source/Source;Lcom/oracle/truffle/st/Coverage;)V (6)
(Lcom/oracle/truffle/api/source/Source;Lcom/oracle/truffle/st/Coverage;)V
invokeinterface java.util.Map.forEach:(Ljava/util/function/BiConsumer;)V
end local 6 end local 5 end local 4 9: aload 3
ifnull 15
aload 3
invokevirtual org.graalvm.polyglot.Context.close:()V
goto 15
StackMap locals: com.oracle.truffle.st.test.SimpleCoverageInstrumentTest java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
StackMap stack: java.lang.Throwable
10: astore 1
aload 3
ifnull 11
aload 3
invokevirtual org.graalvm.polyglot.Context.close:()V
end local 3 StackMap locals:
StackMap stack:
11: aload 1
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
12: astore 2
aload 1
ifnonnull 13
aload 2
astore 1
goto 14
StackMap locals:
StackMap stack:
13: aload 1
aload 2
if_acmpeq 14
aload 1
aload 2
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
14: aload 1
athrow
15: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lcom/oracle/truffle/st/test/SimpleCoverageInstrumentTest;
3 11 3 context Lorg/graalvm/polyglot/Context;
4 9 4 source Lorg/graalvm/polyglot/Source;
6 9 5 coverageInstrument Lcom/oracle/truffle/st/SimpleCoverageInstrument;
7 9 6 coverageMap Ljava/util/Map<Lcom/oracle/truffle/api/source/Source;Lcom/oracle/truffle/st/Coverage;>;
Exception table:
from to target type
3 9 10 any
2 12 12 any
Exceptions:
throws java.io.IOException
RuntimeVisibleAnnotations:
org.junit.Test()
private static void lambda$0(com.oracle.truffle.st.SimpleCoverageInstrument, com.oracle.truffle.api.source.Source, com.oracle.truffle.st.Coverage);
descriptor: (Lcom/oracle/truffle/st/SimpleCoverageInstrument;Lcom/oracle/truffle/api/source/Source;Lcom/oracle/truffle/st/Coverage;)V
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=4, locals=5, args_size=3
start local 1 start local 2 0: aload 0
aload 1
invokevirtual com.oracle.truffle.st.SimpleCoverageInstrument.nonCoveredLineNumbers:(Lcom/oracle/truffle/api/source/Source;)Ljava/util/Set;
astore 3
start local 3 1: bipush 14
anewarray java.lang.Integer
dup
iconst_0
bipush 47
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
iconst_1
bipush 48
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
iconst_2
bipush 49
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
iconst_3
bipush 50
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
iconst_4
bipush 51
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
iconst_5
bipush 52
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
bipush 6
bipush 53
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
bipush 7
bipush 54
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
bipush 8
bipush 55
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
bipush 9
bipush 56
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
bipush 10
bipush 57
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
bipush 11
bipush 58
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
bipush 12
bipush 61
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
bipush 13
bipush 67
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
astore 4
start local 4 2: aload 4
aload 3
invokeinterface java.util.Set.stream:()Ljava/util/stream/Stream;
invokeinterface java.util.stream.Stream.sorted:()Ljava/util/stream/Stream;
invokeinterface java.util.stream.Stream.toArray:()[Ljava/lang/Object;
invokestatic org.junit.Assert.assertArrayEquals:([Ljava/lang/Object;[Ljava/lang/Object;)V
end local 4 end local 3 3: return
end local 2 end local 1 LocalVariableTable:
Start End Slot Name Signature
0 4 1 s Lcom/oracle/truffle/api/source/Source;
0 4 2 v Lcom/oracle/truffle/st/Coverage;
1 3 3 notYetCoveredLineNumbers Ljava/util/Set<Ljava/lang/Integer;>;
2 3 4 expected [Ljava/lang/Object;
private static void lambda$1(com.oracle.truffle.st.SimpleCoverageInstrument, com.oracle.truffle.api.source.Source, com.oracle.truffle.st.Coverage);
descriptor: (Lcom/oracle/truffle/st/SimpleCoverageInstrument;Lcom/oracle/truffle/api/source/Source;Lcom/oracle/truffle/st/Coverage;)V
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=4, locals=5, args_size=3
start local 1 start local 2 0: aload 0
aload 1
invokevirtual com.oracle.truffle.st.SimpleCoverageInstrument.nonCoveredLineNumbers:(Lcom/oracle/truffle/api/source/Source;)Ljava/util/Set;
astore 3
start local 3 1: iconst_3
anewarray java.lang.Integer
dup
iconst_0
iconst_3
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
iconst_1
iconst_4
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
iconst_2
iconst_5
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
astore 4
start local 4 2: aload 4
aload 3
invokeinterface java.util.Set.stream:()Ljava/util/stream/Stream;
invokeinterface java.util.stream.Stream.sorted:()Ljava/util/stream/Stream;
invokeinterface java.util.stream.Stream.toArray:()[Ljava/lang/Object;
invokestatic org.junit.Assert.assertArrayEquals:([Ljava/lang/Object;[Ljava/lang/Object;)V
end local 4 end local 3 3: return
end local 2 end local 1 LocalVariableTable:
Start End Slot Name Signature
0 4 1 s Lcom/oracle/truffle/api/source/Source;
0 4 2 v Lcom/oracle/truffle/st/Coverage;
1 3 3 notYetCoveredLineNumbers Ljava/util/Set<Ljava/lang/Integer;>;
2 3 4 expected [Ljava/lang/Object;
}
SourceFile: "SimpleCoverageInstrumentTest.java"
InnerClasses:
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
public final Builder = org.graalvm.polyglot.Context$Builder of org.graalvm.polyglot.Context
public Builder = org.graalvm.polyglot.Source$Builder of org.graalvm.polyglot.Source