public class com.oracle.svm.core.heap.NoAllocationVerifier implements java.lang.AutoCloseable
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.oracle.svm.core.heap.NoAllocationVerifier
super_class: java.lang.Object
{
public static final java.lang.String ERROR_MSG;
descriptor: Ljava/lang/String;
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: "Attempt to allocate while allocation was explicitly disabled using a NoAllocationVerifier"
private static final com.oracle.svm.core.threadlocal.FastThreadLocalObject<com.oracle.svm.core.heap.NoAllocationVerifier> openVerifiers;
descriptor: Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject<Lcom/oracle/svm/core/heap/NoAllocationVerifier;>;
private java.lang.String reason;
descriptor: Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
private boolean isOpen;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private com.oracle.svm.core.heap.NoAllocationVerifier next;
descriptor: Lcom/oracle/svm/core/heap/NoAllocationVerifier;
flags: (0x0002) ACC_PRIVATE
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lcom/oracle/svm/core/heap/NoAllocationVerifier;
invokestatic com.oracle.svm.core.threadlocal.FastThreadLocalFactory.createObject:(Ljava/lang/Class;)Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
putstatic com.oracle.svm.core.heap.NoAllocationVerifier.openVerifiers:Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
return
LocalVariableTable:
Start End Slot Name Signature
public static void exit(java.lang.String, java.lang.String);
descriptor: (Ljava/lang/String;Ljava/lang/String;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: invokestatic com.oracle.svm.core.log.Log.log:()Lcom/oracle/svm/core/log/Log;
ldc "[NoAllocationVerifier detected disallowed allocation: "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
aload 0
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
ldc ": "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
aload 1
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
pop
1: getstatic com.oracle.svm.core.heap.NoAllocationVerifier.openVerifiers:Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
invokevirtual com.oracle.svm.core.threadlocal.FastThreadLocalObject.get:()Ljava/lang/Object;
ifnull 9
2: invokestatic com.oracle.svm.core.log.Log.log:()Lcom/oracle/svm/core/log/Log;
ldc "[NoAllocationVerifier stack: "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
pop
3: getstatic com.oracle.svm.core.heap.NoAllocationVerifier.openVerifiers:Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
invokevirtual com.oracle.svm.core.threadlocal.FastThreadLocalObject.get:()Ljava/lang/Object;
checkcast com.oracle.svm.core.heap.NoAllocationVerifier
astore 2
start local 2 4: goto 7
5: StackMap locals: com.oracle.svm.core.heap.NoAllocationVerifier
StackMap stack:
invokestatic com.oracle.svm.core.log.Log.log:()Lcom/oracle/svm/core/log/Log;
invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
ldc " "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
ldc " reason: "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
aload 2
getfield com.oracle.svm.core.heap.NoAllocationVerifier.reason:Ljava/lang/String;
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
pop
6: aload 2
getfield com.oracle.svm.core.heap.NoAllocationVerifier.next:Lcom/oracle/svm/core/heap/NoAllocationVerifier;
astore 2
StackMap locals:
StackMap stack:
7: aload 2
ifnonnull 5
end local 2 8: invokestatic com.oracle.svm.core.log.Log.log:()Lcom/oracle/svm/core/log/Log;
ldc "]"
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
pop
9: StackMap locals:
StackMap stack:
invokestatic com.oracle.svm.core.log.Log.log:()Lcom/oracle/svm/core/log/Log;
ldc "]"
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
pop
10: ldc "Attempt to allocate while allocation was explicitly disabled using a NoAllocationVerifier"
invokestatic com.oracle.svm.core.util.VMError.shouldNotReachHere:(Ljava/lang/String;)Ljava/lang/RuntimeException;
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 callSite Ljava/lang/String;
0 11 1 typeName Ljava/lang/String;
4 8 2 rest Lcom/oracle/svm/core/heap/NoAllocationVerifier;
MethodParameters:
Name Flags
callSite final
typeName final
public static com.oracle.svm.core.heap.NoAllocationVerifier factory(java.lang.String);
descriptor: (Ljava/lang/String;)Lcom/oracle/svm/core/heap/NoAllocationVerifier;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
iconst_1
invokestatic com.oracle.svm.core.heap.NoAllocationVerifier.factory:(Ljava/lang/String;Z)Lcom/oracle/svm/core/heap/NoAllocationVerifier;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 reason Ljava/lang/String;
MethodParameters:
Name Flags
reason
public static com.oracle.svm.core.heap.NoAllocationVerifier factory(java.lang.String, boolean);
descriptor: (Ljava/lang/String;Z)Lcom/oracle/svm/core/heap/NoAllocationVerifier;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: new com.oracle.svm.core.heap.NoAllocationVerifier
dup
aload 0
invokespecial com.oracle.svm.core.heap.NoAllocationVerifier.<init>:(Ljava/lang/String;)V
astore 2
start local 2 1: iload 1
ifeq 3
2: aload 2
invokevirtual com.oracle.svm.core.heap.NoAllocationVerifier.open:()Lcom/oracle/svm/core/heap/NoAllocationVerifier;
pop
3: StackMap locals: com.oracle.svm.core.heap.NoAllocationVerifier
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 reason Ljava/lang/String;
0 4 1 open Z
1 4 2 result Lcom/oracle/svm/core/heap/NoAllocationVerifier;
MethodParameters:
Name Flags
reason
open
public static boolean isActive();
descriptor: ()Z
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: getstatic com.oracle.svm.core.heap.NoAllocationVerifier.openVerifiers:Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
invokevirtual com.oracle.svm.core.threadlocal.FastThreadLocalObject.get:()Ljava/lang/Object;
ifnull 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
LocalVariableTable:
Start End Slot Name Signature
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)
protected void <init>(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
putfield com.oracle.svm.core.heap.NoAllocationVerifier.reason:Ljava/lang/String;
2: aload 0
iconst_0
putfield com.oracle.svm.core.heap.NoAllocationVerifier.isOpen:Z
3: aload 0
aconst_null
putfield com.oracle.svm.core.heap.NoAllocationVerifier.next:Lcom/oracle/svm/core/heap/NoAllocationVerifier;
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/oracle/svm/core/heap/NoAllocationVerifier;
0 5 1 reason Ljava/lang/String;
MethodParameters:
Name Flags
reason
public com.oracle.svm.core.heap.NoAllocationVerifier open();
descriptor: ()Lcom/oracle/svm/core/heap/NoAllocationVerifier;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield com.oracle.svm.core.heap.NoAllocationVerifier.isOpen:Z
ifeq 1
iconst_0
goto 2
StackMap locals:
StackMap stack:
1: iconst_1
StackMap locals:
StackMap stack: int
2: ldc "NoAllocationVerifier already open"
invokestatic com.oracle.svm.core.util.VMError.guarantee:(ZLjava/lang/String;)V
3: invokestatic com.oracle.svm.core.heap.NoAllocationVerifier.isActive:()Z
ifne 5
4: invokestatic com.oracle.svm.core.heap.Heap.getHeap:()Lcom/oracle/svm/core/heap/Heap;
invokevirtual com.oracle.svm.core.heap.Heap.suspendAllocation:()V
5: StackMap locals:
StackMap stack:
aload 0
iconst_1
putfield com.oracle.svm.core.heap.NoAllocationVerifier.isOpen:Z
6: aload 0
getstatic com.oracle.svm.core.heap.NoAllocationVerifier.openVerifiers:Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
invokevirtual com.oracle.svm.core.threadlocal.FastThreadLocalObject.get:()Ljava/lang/Object;
checkcast com.oracle.svm.core.heap.NoAllocationVerifier
putfield com.oracle.svm.core.heap.NoAllocationVerifier.next:Lcom/oracle/svm/core/heap/NoAllocationVerifier;
7: getstatic com.oracle.svm.core.heap.NoAllocationVerifier.openVerifiers:Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
aload 0
invokevirtual com.oracle.svm.core.threadlocal.FastThreadLocalObject.set:(Ljava/lang/Object;)V
8: aload 0
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lcom/oracle/svm/core/heap/NoAllocationVerifier;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.NeverInline(value = "Access of fields also used by allocation fast path, so must not be inlined in a method that performs allocation")
public void close();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield com.oracle.svm.core.heap.NoAllocationVerifier.isOpen:Z
ldc "NoAllocationVerifier not open"
invokestatic com.oracle.svm.core.util.VMError.guarantee:(ZLjava/lang/String;)V
1: getstatic com.oracle.svm.core.heap.NoAllocationVerifier.openVerifiers:Lcom/oracle/svm/core/threadlocal/FastThreadLocalObject;
aload 0
getfield com.oracle.svm.core.heap.NoAllocationVerifier.next:Lcom/oracle/svm/core/heap/NoAllocationVerifier;
invokevirtual com.oracle.svm.core.threadlocal.FastThreadLocalObject.set:(Ljava/lang/Object;)V
2: aload 0
aconst_null
putfield com.oracle.svm.core.heap.NoAllocationVerifier.next:Lcom/oracle/svm/core/heap/NoAllocationVerifier;
3: aload 0
iconst_0
putfield com.oracle.svm.core.heap.NoAllocationVerifier.isOpen:Z
4: invokestatic com.oracle.svm.core.heap.NoAllocationVerifier.isActive:()Z
ifne 6
5: invokestatic com.oracle.svm.core.heap.Heap.getHeap:()Lcom/oracle/svm/core/heap/Heap;
invokevirtual com.oracle.svm.core.heap.Heap.resumeAllocation:()V
6: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lcom/oracle/svm/core/heap/NoAllocationVerifier;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.NeverInline(value = "Access of fields also used by allocation fast path, so must not be inlined in a method that performs allocation")
}
SourceFile: "NoAllocationVerifier.java"