final class com.oracle.svm.core.genscavenge.HeapChunk
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: com.oracle.svm.core.genscavenge.HeapChunk
super_class: java.lang.Object
{
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lcom/oracle/svm/core/genscavenge/HeapChunk;
invokevirtual java.lang.Class.desiredAssertionStatus:()Z
ifne 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: putstatic com.oracle.svm.core.genscavenge.HeapChunk.$assertionsDisabled:Z
return
LocalVariableTable:
Start End Slot Name Signature
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/svm/core/genscavenge/HeapChunk;
public static org.graalvm.word.UnsignedWord getTopOffset(com.oracle.svm.core.genscavenge.HeapChunk$Header<?>);
descriptor: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/UnsignedWord;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: getstatic com.oracle.svm.core.genscavenge.HeapChunk.$assertionsDisabled:Z
ifne 1
aload 0
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getTopPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/Pointer;
invokeinterface org.graalvm.word.Pointer.isNonNull:()Z
ifne 1
new java.lang.AssertionError
dup
ldc "Not safe: top currently points to NULL."
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
aload 0
invokeinterface com.oracle.svm.core.genscavenge.HeapChunk$Header.getTopOffset:()Lorg/graalvm/word/UnsignedWord;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 that Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;
Signature: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;)Lorg/graalvm/word/UnsignedWord;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)
MethodParameters:
Name Flags
that
public static org.graalvm.word.Pointer getTopPointer(com.oracle.svm.core.genscavenge.HeapChunk$Header<?>);
descriptor: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/Pointer;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.asPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/Pointer;
aload 0
invokeinterface com.oracle.svm.core.genscavenge.HeapChunk$Header.getTopOffset:()Lorg/graalvm/word/UnsignedWord;
invokeinterface org.graalvm.word.Pointer.add:(Lorg/graalvm/word/UnsignedWord;)Lorg/graalvm/word/Pointer;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 that Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;
Signature: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;)Lorg/graalvm/word/Pointer;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)
MethodParameters:
Name Flags
that
public static void setTopPointer(com.oracle.svm.core.genscavenge.HeapChunk$Header<?>, org.graalvm.word.Pointer);
descriptor: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lorg/graalvm/word/Pointer;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
aload 0
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.asPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/Pointer;
invokeinterface org.graalvm.word.Pointer.subtract:(Lorg/graalvm/word/UnsignedWord;)Lorg/graalvm/word/Pointer;
invokeinterface com.oracle.svm.core.genscavenge.HeapChunk$Header.setTopOffset:(Lorg/graalvm/word/UnsignedWord;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 that Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;
0 2 1 newTop Lorg/graalvm/word/Pointer;
Signature: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;Lorg/graalvm/word/Pointer;)V
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)
MethodParameters:
Name Flags
that
newTop
static void setTopPointerCarefully(com.oracle.svm.core.genscavenge.HeapChunk$Header<?>, org.graalvm.word.Pointer);
descriptor: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lorg/graalvm/word/Pointer;)V
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: getstatic com.oracle.svm.core.genscavenge.HeapChunk.$assertionsDisabled:Z
ifne 1
aload 0
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getTopPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/Pointer;
invokeinterface org.graalvm.word.Pointer.isNonNull:()Z
ifne 1
new java.lang.AssertionError
dup
ldc "Not safe: top currently points to NULL."
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
getstatic com.oracle.svm.core.genscavenge.HeapChunk.$assertionsDisabled:Z
ifne 2
aload 0
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getTopPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/Pointer;
aload 1
invokeinterface org.graalvm.word.Pointer.belowOrEqual:(Lorg/graalvm/word/UnsignedWord;)Z
ifne 2
new java.lang.AssertionError
dup
ldc "newTop too low."
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
2: StackMap locals:
StackMap stack:
getstatic com.oracle.svm.core.genscavenge.HeapChunk.$assertionsDisabled:Z
ifne 3
aload 1
aload 0
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getEndPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/Pointer;
invokeinterface org.graalvm.word.Pointer.belowOrEqual:(Lorg/graalvm/word/UnsignedWord;)Z
ifne 3
new java.lang.AssertionError
dup
ldc "newTop too high."
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
3: StackMap locals:
StackMap stack:
aload 0
aload 1
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.setTopPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lorg/graalvm/word/Pointer;)V
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 that Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;
0 5 1 newTop Lorg/graalvm/word/Pointer;
Signature: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;Lorg/graalvm/word/Pointer;)V
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)
MethodParameters:
Name Flags
that
newTop
public static org.graalvm.word.UnsignedWord getEndOffset(com.oracle.svm.core.genscavenge.HeapChunk$Header<?>);
descriptor: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/UnsignedWord;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokeinterface com.oracle.svm.core.genscavenge.HeapChunk$Header.getEndOffset:()Lorg/graalvm/word/UnsignedWord;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 that Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;
Signature: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;)Lorg/graalvm/word/UnsignedWord;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)
MethodParameters:
Name Flags
that
public static org.graalvm.word.Pointer getEndPointer(com.oracle.svm.core.genscavenge.HeapChunk$Header<?>);
descriptor: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/Pointer;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.asPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/Pointer;
aload 0
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getEndOffset:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/UnsignedWord;
invokeinterface org.graalvm.word.Pointer.add:(Lorg/graalvm/word/UnsignedWord;)Lorg/graalvm/word/Pointer;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 that Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;
Signature: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;)Lorg/graalvm/word/Pointer;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)
MethodParameters:
Name Flags
that
public static void setEndOffset(com.oracle.svm.core.genscavenge.HeapChunk$Header<?>, org.graalvm.word.UnsignedWord);
descriptor: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lorg/graalvm/word/UnsignedWord;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokeinterface com.oracle.svm.core.genscavenge.HeapChunk$Header.setEndOffset:(Lorg/graalvm/word/UnsignedWord;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 that Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;
0 2 1 newEnd Lorg/graalvm/word/UnsignedWord;
Signature: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;Lorg/graalvm/word/UnsignedWord;)V
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)
MethodParameters:
Name Flags
that
newEnd
public static com.oracle.svm.core.genscavenge.Space getSpace(com.oracle.svm.core.genscavenge.HeapChunk$Header<?>);
descriptor: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lcom/oracle/svm/core/genscavenge/Space;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokeinterface com.oracle.svm.core.genscavenge.HeapChunk$Header.getSpace:()Lcom/oracle/svm/core/genscavenge/Space;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 that Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;
Signature: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;)Lcom/oracle/svm/core/genscavenge/Space;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)
MethodParameters:
Name Flags
that
public static void setSpace(com.oracle.svm.core.genscavenge.HeapChunk$Header<?>, com.oracle.svm.core.genscavenge.Space);
descriptor: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lcom/oracle/svm/core/genscavenge/Space;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokeinterface com.oracle.svm.core.genscavenge.HeapChunk$Header.setSpace:(Lcom/oracle/svm/core/genscavenge/Space;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 that Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;
0 2 1 newSpace Lcom/oracle/svm/core/genscavenge/Space;
Signature: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;Lcom/oracle/svm/core/genscavenge/Space;)V
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)
MethodParameters:
Name Flags
that
newSpace
public static <T extends com.oracle.svm.core.genscavenge.HeapChunk$Header<T>> T getPrevious(com.oracle.svm.core.genscavenge.HeapChunk$Header<T>);
descriptor: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
aload 0
invokeinterface com.oracle.svm.core.genscavenge.HeapChunk$Header.getOffsetToPreviousChunk:()Lorg/graalvm/word/SignedWord;
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.pointerFromOffset:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lorg/graalvm/word/ComparableWord;)Lorg/graalvm/word/PointerBase;
checkcast com.oracle.svm.core.genscavenge.HeapChunk$Header
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 that Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<TT;>;
Signature: <T::Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<TT;>;>(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<TT;>;)TT;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)
MethodParameters:
Name Flags
that
public static <T extends com.oracle.svm.core.genscavenge.HeapChunk$Header<T>> void setPrevious(com.oracle.svm.core.genscavenge.HeapChunk$Header<T>, );
descriptor: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 0
aload 1
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.offsetFromPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lorg/graalvm/word/PointerBase;)Lorg/graalvm/word/SignedWord;
invokeinterface com.oracle.svm.core.genscavenge.HeapChunk$Header.setOffsetToPreviousChunk:(Lorg/graalvm/word/SignedWord;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 that Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<TT;>;
0 2 1 newPrevious TT;
Signature: <T::Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<TT;>;>(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<TT;>;TT;)V
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)
MethodParameters:
Name Flags
that
newPrevious
public static <T extends com.oracle.svm.core.genscavenge.HeapChunk$Header<T>> T getNext(com.oracle.svm.core.genscavenge.HeapChunk$Header<T>);
descriptor: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
aload 0
invokeinterface com.oracle.svm.core.genscavenge.HeapChunk$Header.getOffsetToNextChunk:()Lorg/graalvm/word/SignedWord;
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.pointerFromOffset:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lorg/graalvm/word/ComparableWord;)Lorg/graalvm/word/PointerBase;
checkcast com.oracle.svm.core.genscavenge.HeapChunk$Header
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 that Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<TT;>;
Signature: <T::Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<TT;>;>(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<TT;>;)TT;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)
MethodParameters:
Name Flags
that
public static <T extends com.oracle.svm.core.genscavenge.HeapChunk$Header<T>> void setNext(com.oracle.svm.core.genscavenge.HeapChunk$Header<T>, );
descriptor: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 0
aload 1
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.offsetFromPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lorg/graalvm/word/PointerBase;)Lorg/graalvm/word/SignedWord;
invokeinterface com.oracle.svm.core.genscavenge.HeapChunk$Header.setOffsetToNextChunk:(Lorg/graalvm/word/SignedWord;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 that Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<TT;>;
0 2 1 newNext TT;
Signature: <T::Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<TT;>;>(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<TT;>;TT;)V
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)
MethodParameters:
Name Flags
that
newNext
private static <T extends org.graalvm.word.PointerBase> T pointerFromOffset(com.oracle.svm.core.genscavenge.HeapChunk$Header<?>, org.graalvm.word.ComparableWord);
descriptor: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lorg/graalvm/word/ComparableWord;)Lorg/graalvm/word/PointerBase;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: invokestatic org.graalvm.word.WordFactory.nullPointer:()Lorg/graalvm/word/PointerBase;
astore 2
start local 2 1: aload 1
invokestatic org.graalvm.word.WordFactory.zero:()Lorg/graalvm/word/WordBase;
checkcast org.graalvm.word.ComparableWord
invokeinterface org.graalvm.word.ComparableWord.notEqual:(Lorg/graalvm/word/ComparableWord;)Z
ifeq 3
2: aload 0
checkcast org.graalvm.word.SignedWord
aload 1
checkcast org.graalvm.word.SignedWord
invokeinterface org.graalvm.word.SignedWord.add:(Lorg/graalvm/word/SignedWord;)Lorg/graalvm/word/SignedWord;
checkcast org.graalvm.word.PointerBase
astore 2
3: StackMap locals: org.graalvm.word.PointerBase
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 that Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;
0 4 1 offset Lorg/graalvm/word/ComparableWord;
1 4 2 pointer TT;
Signature: <T::Lorg/graalvm/word/PointerBase;>(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;Lorg/graalvm/word/ComparableWord;)TT;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)
MethodParameters:
Name Flags
that
offset
private static org.graalvm.word.SignedWord offsetFromPointer(com.oracle.svm.core.genscavenge.HeapChunk$Header<?>, org.graalvm.word.PointerBase);
descriptor: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lorg/graalvm/word/PointerBase;)Lorg/graalvm/word/SignedWord;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: invokestatic org.graalvm.word.WordFactory.zero:()Lorg/graalvm/word/WordBase;
checkcast org.graalvm.word.SignedWord
astore 2
start local 2 1: aload 1
invokeinterface org.graalvm.word.PointerBase.isNonNull:()Z
ifeq 3
2: aload 1
checkcast org.graalvm.word.SignedWord
aload 0
checkcast org.graalvm.word.SignedWord
invokeinterface org.graalvm.word.SignedWord.subtract:(Lorg/graalvm/word/SignedWord;)Lorg/graalvm/word/SignedWord;
astore 2
3: StackMap locals: org.graalvm.word.SignedWord
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 that Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;
0 4 1 pointer Lorg/graalvm/word/PointerBase;
1 4 2 offset Lorg/graalvm/word/SignedWord;
Signature: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;Lorg/graalvm/word/PointerBase;)Lorg/graalvm/word/SignedWord;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)
MethodParameters:
Name Flags
that
pointer
public static boolean walkObjectsFrom(com.oracle.svm.core.genscavenge.HeapChunk$Header<?>, org.graalvm.word.Pointer, com.oracle.svm.core.heap.ObjectVisitor);
descriptor: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lorg/graalvm/word/Pointer;Lcom/oracle/svm/core/heap/ObjectVisitor;)Z
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
aload 2
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.walkObjectsFromInline:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lorg/graalvm/word/Pointer;Lcom/oracle/svm/core/heap/ObjectVisitor;)Z
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 that Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;
0 1 1 offset Lorg/graalvm/word/Pointer;
0 1 2 visitor Lcom/oracle/svm/core/heap/ObjectVisitor;
Signature: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;Lorg/graalvm/word/Pointer;Lcom/oracle/svm/core/heap/ObjectVisitor;)Z
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.NeverInline(value = "Not performance critical")
MethodParameters:
Name Flags
that
offset
visitor
public static boolean walkObjectsFromInline(com.oracle.svm.core.genscavenge.HeapChunk$Header<?>, org.graalvm.word.Pointer, com.oracle.svm.core.heap.ObjectVisitor);
descriptor: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lorg/graalvm/word/Pointer;Lcom/oracle/svm/core/heap/ObjectVisitor;)Z
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 1
astore 3
start local 3 1: goto 6
2: StackMap locals: org.graalvm.word.Pointer
StackMap stack:
aload 3
invokeinterface org.graalvm.word.Pointer.toObject:()Ljava/lang/Object;
astore 4
start local 4 3: aload 2
aload 4
invokeinterface com.oracle.svm.core.heap.ObjectVisitor.visitObjectInline:(Ljava/lang/Object;)Z
ifne 5
4: iconst_0
ireturn
5: StackMap locals: java.lang.Object
StackMap stack:
aload 3
aload 4
invokestatic com.oracle.svm.core.hub.LayoutEncoding.getSizeFromObject:(Ljava/lang/Object;)Lorg/graalvm/word/UnsignedWord;
invokeinterface org.graalvm.word.Pointer.add:(Lorg/graalvm/word/UnsignedWord;)Lorg/graalvm/word/Pointer;
astore 3
end local 4 6: StackMap locals:
StackMap stack:
aload 3
aload 0
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getTopPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/Pointer;
invokeinterface org.graalvm.word.Pointer.belowThan:(Lorg/graalvm/word/UnsignedWord;)Z
ifne 2
7: iconst_1
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 that Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;
0 8 1 startOffset Lorg/graalvm/word/Pointer;
0 8 2 visitor Lcom/oracle/svm/core/heap/ObjectVisitor;
1 8 3 offset Lorg/graalvm/word/Pointer;
3 6 4 obj Ljava/lang/Object;
Signature: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;Lorg/graalvm/word/Pointer;Lcom/oracle/svm/core/heap/ObjectVisitor;)Z
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.AlwaysInline(value = "GC performance")
MethodParameters:
Name Flags
that
startOffset
visitor
public static org.graalvm.word.UnsignedWord availableObjectMemory(com.oracle.svm.core.genscavenge.HeapChunk$Header<?>);
descriptor: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/UnsignedWord;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokeinterface com.oracle.svm.core.genscavenge.HeapChunk$Header.getEndOffset:()Lorg/graalvm/word/UnsignedWord;
aload 0
invokeinterface com.oracle.svm.core.genscavenge.HeapChunk$Header.getTopOffset:()Lorg/graalvm/word/UnsignedWord;
invokeinterface org.graalvm.word.UnsignedWord.subtract:(Lorg/graalvm/word/UnsignedWord;)Lorg/graalvm/word/UnsignedWord;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 that Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;
Signature: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;)Lorg/graalvm/word/UnsignedWord;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)
MethodParameters:
Name Flags
that
static org.graalvm.word.Pointer asPointer(com.oracle.svm.core.genscavenge.HeapChunk$Header<?>);
descriptor: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/Pointer;
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
checkcast org.graalvm.word.Pointer
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 that Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;
Signature: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;)Lorg/graalvm/word/Pointer;
RuntimeVisibleAnnotations:
com.oracle.svm.core.annotate.Uninterruptible(reason = "Called from uninterruptible code.", mayBeInlined = true)
MethodParameters:
Name Flags
that
public static com.oracle.svm.core.genscavenge.HeapChunk$Header<?> getEnclosingHeapChunk();
descriptor: (Ljava/lang/Object;)Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: getstatic com.oracle.svm.core.genscavenge.HeapChunk.$assertionsDisabled:Z
ifne 1
invokestatic com.oracle.svm.core.genscavenge.HeapImpl.getHeapImpl:()Lcom/oracle/svm/core/genscavenge/HeapImpl;
aload 0
invokevirtual com.oracle.svm.core.genscavenge.HeapImpl.isInImageHeap:(Ljava/lang/Object;)Z
ifeq 1
new java.lang.AssertionError
dup
ldc "Must be checked before calling this method"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
getstatic com.oracle.svm.core.genscavenge.HeapChunk.$assertionsDisabled:Z
ifne 2
aload 0
invokestatic org.graalvm.compiler.word.Word.objectToUntrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
invokestatic com.oracle.svm.core.genscavenge.ObjectHeaderImpl.isPointerToForwardedObject:(Lorg/graalvm/word/Pointer;)Z
ifeq 2
new java.lang.AssertionError
dup
ldc "Forwarded objects must be a pointer and not an object"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
invokestatic com.oracle.svm.core.genscavenge.ObjectHeaderImpl.isAlignedObject:(Ljava/lang/Object;)Z
ifeq 4
3: aload 0
invokestatic com.oracle.svm.core.genscavenge.AlignedHeapChunk.getEnclosingChunk:(Ljava/lang/Object;)Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
areturn
4: StackMap locals:
StackMap stack:
getstatic com.oracle.svm.core.genscavenge.HeapChunk.$assertionsDisabled:Z
ifne 5
aload 0
invokestatic com.oracle.svm.core.genscavenge.ObjectHeaderImpl.isUnalignedObject:(Ljava/lang/Object;)Z
ifne 5
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
5: StackMap locals:
StackMap stack:
aload 0
invokestatic com.oracle.svm.core.genscavenge.UnalignedHeapChunk.getEnclosingChunk:(Ljava/lang/Object;)Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 obj Ljava/lang/Object;
Signature: (Ljava/lang/Object;)Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;
MethodParameters:
Name Flags
obj
public static com.oracle.svm.core.genscavenge.HeapChunk$Header<?> getEnclosingHeapChunk(org.graalvm.word.Pointer, org.graalvm.word.UnsignedWord);
descriptor: (Lorg/graalvm/word/Pointer;Lorg/graalvm/word/UnsignedWord;)Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokestatic com.oracle.svm.core.genscavenge.ObjectHeaderImpl.isAlignedHeader:(Lorg/graalvm/word/Pointer;Lorg/graalvm/word/UnsignedWord;)Z
ifeq 2
1: aload 0
invokestatic com.oracle.svm.core.genscavenge.AlignedHeapChunk.getEnclosingChunkFromObjectPointer:(Lorg/graalvm/word/Pointer;)Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
areturn
2: StackMap locals:
StackMap stack:
aload 0
invokestatic com.oracle.svm.core.genscavenge.UnalignedHeapChunk.getEnclosingChunkFromObjectPointer:(Lorg/graalvm/word/Pointer;)Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 ptrToObj Lorg/graalvm/word/Pointer;
0 3 1 header Lorg/graalvm/word/UnsignedWord;
Signature: (Lorg/graalvm/word/Pointer;Lorg/graalvm/word/UnsignedWord;)Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;
MethodParameters:
Name Flags
ptrToObj
header
static boolean verifyObjects(com.oracle.svm.core.genscavenge.HeapChunk$Header<?>, org.graalvm.word.Pointer);
descriptor: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;Lorg/graalvm/word/Pointer;)Z
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=6, args_size=2
start local 0 start local 1 0: invokestatic com.oracle.svm.core.genscavenge.HeapVerifier.getTraceLog:()Lcom/oracle/svm/core/log/Log;
ldc "[HeapChunk.verify:"
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
astore 2
start local 2 1: aload 2
ldc " that: "
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.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
ldc " start: "
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.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
ldc " top: "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
aload 0
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getTopPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/Pointer;
invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
ldc " end: "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
aload 0
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getEndPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/Pointer;
invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
pop
2: aload 1
astore 3
start local 3 3: goto 17
4: StackMap locals: com.oracle.svm.core.log.Log org.graalvm.word.Pointer
StackMap stack:
invokestatic com.oracle.svm.core.genscavenge.HeapImpl.getHeapImpl:()Lcom/oracle/svm/core/genscavenge/HeapImpl;
invokevirtual com.oracle.svm.core.genscavenge.HeapImpl.getHeapVerifier:()Lcom/oracle/svm/core/genscavenge/HeapVerifier;
aload 3
invokevirtual com.oracle.svm.core.genscavenge.HeapVerifier.verifyObjectAt:(Lorg/graalvm/word/Pointer;)Z
ifne 11
5: invokestatic com.oracle.svm.core.genscavenge.HeapImpl.getHeapImpl:()Lcom/oracle/svm/core/genscavenge/HeapImpl;
invokevirtual com.oracle.svm.core.genscavenge.HeapImpl.getHeapVerifier:()Lcom/oracle/svm/core/genscavenge/HeapVerifier;
invokevirtual com.oracle.svm.core.genscavenge.HeapVerifier.getWitnessLog:()Lcom/oracle/svm/core/log/Log;
ldc "[HeapChunk.verify:"
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
astore 4
start local 4 6: aload 4
ldc " that: "
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.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
ldc " start: "
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.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
ldc " top: "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
aload 0
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getTopPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/Pointer;
invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
ldc " end: "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
aload 0
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getEndPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/Pointer;
invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
pop
7: aload 4
ldc " space: "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
aload 0
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getSpace:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lcom/oracle/svm/core/genscavenge/Space;
invokevirtual com.oracle.svm.core.genscavenge.Space.getName:()Ljava/lang/String;
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
pop
8: aload 4
ldc " object at p: "
invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
aload 3
invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
ldc " fails to verify"
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;
invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
pop
9: aload 2
ldc " returns false]"
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: iconst_0
ireturn
end local 4 11: StackMap locals:
StackMap stack:
aload 3
invokestatic com.oracle.svm.core.genscavenge.ObjectHeaderImpl.readHeaderFromPointerCarefully:(Lorg/graalvm/word/Pointer;)Lorg/graalvm/word/UnsignedWord;
astore 4
start local 4 12: aload 4
invokestatic com.oracle.svm.core.genscavenge.ObjectHeaderImpl.isForwardedHeaderCarefully:(Lorg/graalvm/word/UnsignedWord;)Z
ifeq 15
13: aload 3
invokestatic com.oracle.svm.core.genscavenge.ObjectHeaderImpl.getForwardedObject:(Lorg/graalvm/word/Pointer;)Ljava/lang/Object;
astore 5
start local 5 14: goto 16
end local 5 15: StackMap locals: org.graalvm.word.UnsignedWord
StackMap stack:
aload 3
invokeinterface org.graalvm.word.Pointer.toObject:()Ljava/lang/Object;
astore 5
start local 5 16: StackMap locals: java.lang.Object
StackMap stack:
aload 3
aload 5
invokestatic com.oracle.svm.core.hub.LayoutEncoding.getSizeFromObject:(Ljava/lang/Object;)Lorg/graalvm/word/UnsignedWord;
invokeinterface org.graalvm.word.Pointer.add:(Lorg/graalvm/word/UnsignedWord;)Lorg/graalvm/word/Pointer;
astore 3
end local 5 end local 4 17: StackMap locals:
StackMap stack:
aload 3
aload 0
invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getTopPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/Pointer;
invokeinterface org.graalvm.word.Pointer.belowThan:(Lorg/graalvm/word/UnsignedWord;)Z
ifne 4
18: aload 2
ldc " returns true]"
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
19: iconst_1
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 that Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;
0 20 1 start Lorg/graalvm/word/Pointer;
1 20 2 trace Lcom/oracle/svm/core/log/Log;
3 20 3 p Lorg/graalvm/word/Pointer;
6 11 4 witness Lcom/oracle/svm/core/log/Log;
12 17 4 header Lorg/graalvm/word/UnsignedWord;
14 15 5 o Ljava/lang/Object;
16 17 5 o Ljava/lang/Object;
Signature: (Lcom/oracle/svm/core/genscavenge/HeapChunk$Header<*>;Lorg/graalvm/word/Pointer;)Z
MethodParameters:
Name Flags
that
start
}
SourceFile: "HeapChunk.java"
NestMembers:
com.oracle.svm.core.genscavenge.HeapChunk$Header com.oracle.svm.core.genscavenge.HeapChunk$HeaderPadding com.oracle.svm.core.genscavenge.HeapChunk$HeaderPaddingSizeProvider com.oracle.svm.core.genscavenge.HeapChunk$MemoryWalkerAccessImpl com.oracle.svm.core.genscavenge.HeapChunk$Options
InnerClasses:
public abstract AlignedHeader = com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader of com.oracle.svm.core.genscavenge.AlignedHeapChunk
public abstract Header = com.oracle.svm.core.genscavenge.HeapChunk$Header of com.oracle.svm.core.genscavenge.HeapChunk
private abstract HeaderPadding = com.oracle.svm.core.genscavenge.HeapChunk$HeaderPadding of com.oracle.svm.core.genscavenge.HeapChunk
HeaderPaddingSizeProvider = com.oracle.svm.core.genscavenge.HeapChunk$HeaderPaddingSizeProvider of com.oracle.svm.core.genscavenge.HeapChunk
abstract MemoryWalkerAccessImpl = com.oracle.svm.core.genscavenge.HeapChunk$MemoryWalkerAccessImpl of com.oracle.svm.core.genscavenge.HeapChunk
Options = com.oracle.svm.core.genscavenge.HeapChunk$Options of com.oracle.svm.core.genscavenge.HeapChunk
public abstract UnalignedHeader = com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader of com.oracle.svm.core.genscavenge.UnalignedHeapChunk