public class com.oracle.truffle.object.basic.test.LeakCheckTest
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.oracle.truffle.object.basic.test.LeakCheckTest
super_class: java.lang.Object
{
private static final com.oracle.truffle.api.object.Layout LAYOUT;
descriptor: Lcom/oracle/truffle/api/object/Layout;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final com.oracle.truffle.api.object.DynamicObjectLibrary LIBRARY;
descriptor: Lcom/oracle/truffle/api/object/DynamicObjectLibrary;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: invokestatic com.oracle.truffle.api.object.Layout.createLayout:()Lcom/oracle/truffle/api/object/Layout;
putstatic com.oracle.truffle.object.basic.test.LeakCheckTest.LAYOUT:Lcom/oracle/truffle/api/object/Layout;
1: invokestatic com.oracle.truffle.api.object.DynamicObjectLibrary.getUncached:()Lcom/oracle/truffle/api/object/DynamicObjectLibrary;
putstatic com.oracle.truffle.object.basic.test.LeakCheckTest.LIBRARY:Lcom/oracle/truffle/api/object/DynamicObjectLibrary;
return
LocalVariableTable:
Start End Slot Name Signature
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/object/basic/test/LeakCheckTest;
public void leakCheck();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=6, args_size=1
start local 0 0: getstatic com.oracle.truffle.object.basic.test.LeakCheckTest.LAYOUT:Lcom/oracle/truffle/api/object/Layout;
new com.oracle.truffle.api.object.ObjectType
dup
invokespecial com.oracle.truffle.api.object.ObjectType.<init>:()V
invokevirtual com.oracle.truffle.api.object.Layout.createShape:(Lcom/oracle/truffle/api/object/ObjectType;)Lcom/oracle/truffle/api/object/Shape;
astore 1
start local 1 1: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 2
start local 2 2: iconst_0
istore 3
start local 3 3: goto 14
4: StackMap locals: com.oracle.truffle.api.object.Shape java.util.List int
StackMap stack:
aload 1
invokevirtual com.oracle.truffle.api.object.Shape.newInstance:()Lcom/oracle/truffle/api/object/DynamicObject;
astore 4
start local 4 5: iconst_0
istore 5
start local 5 6: goto 11
7: StackMap locals: com.oracle.truffle.api.object.DynamicObject int
StackMap stack:
getstatic com.oracle.truffle.object.basic.test.LeakCheckTest.LIBRARY:Lcom/oracle/truffle/api/object/DynamicObjectLibrary;
aload 4
new java.lang.StringBuilder
dup
ldc "a"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
invokestatic java.lang.Math.random:()D
invokevirtual java.lang.StringBuilder.append:(D)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic java.lang.Math.random:()D
invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
invokevirtual com.oracle.truffle.api.object.DynamicObjectLibrary.put:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;)V
8: getstatic com.oracle.truffle.object.basic.test.LeakCheckTest.LIBRARY:Lcom/oracle/truffle/api/object/DynamicObjectLibrary;
aload 4
new java.lang.StringBuilder
dup
ldc "b"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
invokestatic java.lang.Math.random:()D
invokevirtual java.lang.StringBuilder.append:(D)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic java.lang.Math.random:()D
invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
invokevirtual com.oracle.truffle.api.object.DynamicObjectLibrary.put:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;)V
9: getstatic com.oracle.truffle.object.basic.test.LeakCheckTest.LIBRARY:Lcom/oracle/truffle/api/object/DynamicObjectLibrary;
aload 4
new java.lang.StringBuilder
dup
ldc "c"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
invokestatic java.lang.Math.random:()D
invokevirtual java.lang.StringBuilder.append:(D)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic java.lang.Math.random:()D
invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
invokevirtual com.oracle.truffle.api.object.DynamicObjectLibrary.put:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;)V
10: iinc 5 1
StackMap locals:
StackMap stack:
11: iload 5
sipush 1000
if_icmplt 7
end local 5 12: aload 2
new java.lang.ref.WeakReference
dup
aload 4
invokevirtual com.oracle.truffle.api.object.DynamicObject.getShape:()Lcom/oracle/truffle/api/object/Shape;
invokespecial java.lang.ref.WeakReference.<init>:(Ljava/lang/Object;)V
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 4 13: iinc 3 1
StackMap locals:
StackMap stack:
14: iload 3
bipush 100
if_icmplt 4
end local 3 15: invokestatic java.lang.System.gc:()V
16: aload 2
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 4
goto 19
StackMap locals: com.oracle.truffle.object.basic.test.LeakCheckTest com.oracle.truffle.api.object.Shape java.util.List top java.util.Iterator
StackMap stack:
17: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.ref.WeakReference
astore 3
start local 3 18: ldc "Shape should have been garbage-collected"
aload 3
invokevirtual java.lang.ref.WeakReference.get:()Ljava/lang/Object;
invokestatic org.junit.Assert.assertNull:(Ljava/lang/String;Ljava/lang/Object;)V
end local 3 19: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 17
20: aload 1
invokestatic org.junit.Assert.assertNotNull:(Ljava/lang/Object;)V
21: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 this Lcom/oracle/truffle/object/basic/test/LeakCheckTest;
1 22 1 emptyShape Lcom/oracle/truffle/api/object/Shape;
2 22 2 fullShapeRefs Ljava/util/List<Ljava/lang/ref/WeakReference<Lcom/oracle/truffle/api/object/Shape;>;>;
3 15 3 i I
5 13 4 obj Lcom/oracle/truffle/api/object/DynamicObject;
6 12 5 j I
18 19 3 fullShapeRef Ljava/lang/ref/WeakReference<Lcom/oracle/truffle/api/object/Shape;>;
RuntimeVisibleAnnotations:
org.junit.Test()
}
SourceFile: "LeakCheckTest.java"