final class com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter implements com.oracle.svm.core.genscavenge.ImageHeapChunkWriter
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter
super_class: java.lang.Object
{
private final java.nio.ByteBuffer buffer;
descriptor: Ljava/nio/ByteBuffer;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int layoutToBufferAddend;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int ;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int topOffsetAt;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int endOffsetAt;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int spaceOffsetAt;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int offsetToPreviousChunkAt;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int offsetToNextChunkAt;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int alignedChunkCardTableOffset;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final org.graalvm.word.UnsignedWord alignedChunkCardTableSize;
descriptor: Lorg/graalvm/word/UnsignedWord;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int alignedChunkFirstObjectTableOffset;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final org.graalvm.word.UnsignedWord alignedChunkFirstObjectTableSize;
descriptor: Lorg/graalvm/word/UnsignedWord;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final org.graalvm.word.UnsignedWord alignedChunkObjectsStartOffset;
descriptor: Lorg/graalvm/word/UnsignedWord;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int unalignedChunkCardTableOffset;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final org.graalvm.word.UnsignedWord unalignedChunkCardTableSize;
descriptor: Lorg/graalvm/word/UnsignedWord;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
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/HostedImageHeapChunkWriter;
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.HostedImageHeapChunkWriter.$assertionsDisabled:Z
return
LocalVariableTable:
Start End Slot Name Signature
void <init>(java.nio.ByteBuffer, long);
descriptor: (Ljava/nio/ByteBuffer;J)V
flags: (0x0000)
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
putfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.buffer:Ljava/nio/ByteBuffer;
2: aload 0
lload 2
invokestatic org.graalvm.compiler.core.common.NumUtil.safeToInt:(J)I
putfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.layoutToBufferAddend:I
3: aload 0
ldc Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;
invokestatic org.graalvm.nativeimage.c.struct.SizeOf.get:(Ljava/lang/Class;)I
putfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.headerSize:I
4: aload 0
ldc Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;
ldc "TopOffset"
invokestatic com.oracle.svm.core.c.struct.OffsetOf.get:(Ljava/lang/Class;Ljava/lang/String;)I
putfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.topOffsetAt:I
5: aload 0
ldc Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;
ldc "EndOffset"
invokestatic com.oracle.svm.core.c.struct.OffsetOf.get:(Ljava/lang/Class;Ljava/lang/String;)I
putfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.endOffsetAt:I
6: aload 0
ldc Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;
ldc "Space"
invokestatic com.oracle.svm.core.c.struct.OffsetOf.get:(Ljava/lang/Class;Ljava/lang/String;)I
putfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.spaceOffsetAt:I
7: aload 0
ldc Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;
ldc "OffsetToPreviousChunk"
invokestatic com.oracle.svm.core.c.struct.OffsetOf.get:(Ljava/lang/Class;Ljava/lang/String;)I
putfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.offsetToPreviousChunkAt:I
8: aload 0
ldc Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;
ldc "OffsetToNextChunk"
invokestatic com.oracle.svm.core.c.struct.OffsetOf.get:(Ljava/lang/Class;Ljava/lang/String;)I
putfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.offsetToNextChunkAt:I
9: aload 0
invokestatic com.oracle.svm.core.genscavenge.AlignedHeapChunk.getCardTableStartOffset:()Lorg/graalvm/word/UnsignedWord;
invokestatic com.oracle.svm.core.util.UnsignedUtils.safeToInt:(Lorg/graalvm/word/UnsignedWord;)I
putfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.alignedChunkCardTableOffset:I
10: aload 0
invokestatic com.oracle.svm.core.genscavenge.AlignedHeapChunk.getCardTableSize:()Lorg/graalvm/word/UnsignedWord;
putfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.alignedChunkCardTableSize:Lorg/graalvm/word/UnsignedWord;
11: aload 0
invokestatic com.oracle.svm.core.genscavenge.AlignedHeapChunk.getFirstObjectTableStartOffset:()Lorg/graalvm/word/UnsignedWord;
invokestatic com.oracle.svm.core.util.UnsignedUtils.safeToInt:(Lorg/graalvm/word/UnsignedWord;)I
putfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.alignedChunkFirstObjectTableOffset:I
12: aload 0
invokestatic com.oracle.svm.core.genscavenge.AlignedHeapChunk.getFirstObjectTableSize:()Lorg/graalvm/word/UnsignedWord;
putfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.alignedChunkFirstObjectTableSize:Lorg/graalvm/word/UnsignedWord;
13: aload 0
invokestatic com.oracle.svm.core.genscavenge.AlignedHeapChunk.getObjectsStartOffset:()Lorg/graalvm/word/UnsignedWord;
putfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.alignedChunkObjectsStartOffset:Lorg/graalvm/word/UnsignedWord;
14: aload 0
invokestatic com.oracle.svm.core.genscavenge.UnalignedHeapChunk.getCardTableStartOffset:()Lorg/graalvm/word/UnsignedWord;
invokestatic com.oracle.svm.core.util.UnsignedUtils.safeToInt:(Lorg/graalvm/word/UnsignedWord;)I
putfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.unalignedChunkCardTableOffset:I
15: aload 0
invokestatic com.oracle.svm.core.genscavenge.UnalignedHeapChunk.getCardTableSize:()Lorg/graalvm/word/UnsignedWord;
putfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.unalignedChunkCardTableSize:Lorg/graalvm/word/UnsignedWord;
16: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Lcom/oracle/svm/core/genscavenge/HostedImageHeapChunkWriter;
0 17 1 heapBuffer Ljava/nio/ByteBuffer;
0 17 2 layoutToBufferOffsetAddend J
MethodParameters:
Name Flags
heapBuffer
layoutToBufferOffsetAddend
private int getChunkOffsetInBuffer(int);
descriptor: (I)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: iload 1
aload 0
getfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.layoutToBufferAddend:I
iadd
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/svm/core/genscavenge/HostedImageHeapChunkWriter;
0 1 1 chunkPosition I
MethodParameters:
Name Flags
chunkPosition
public void initializeAlignedChunk(int, long, long, long, long);
descriptor: (IJJJJ)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=10, locals=11, args_size=6
start local 0 start local 1 start local 2 start local 4 start local 6 start local 8 0: aload 0
iload 1
invokevirtual com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.getChunkOffsetInBuffer:(I)I
istore 10
start local 10 1: aload 0
iload 10
lload 2
lload 4
lload 6
lload 8
invokevirtual com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.writeHeader:(IJJJJ)V
2: aload 0
getfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.buffer:Ljava/nio/ByteBuffer;
iload 10
aload 0
getfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.alignedChunkCardTableOffset:I
iadd
aload 0
getfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.alignedChunkCardTableSize:Lorg/graalvm/word/UnsignedWord;
invokestatic com.oracle.svm.core.genscavenge.CardTable.cleanTableInBuffer:(Ljava/nio/ByteBuffer;ILorg/graalvm/word/UnsignedWord;)V
3: aload 0
getfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.buffer:Ljava/nio/ByteBuffer;
iload 10
aload 0
getfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.alignedChunkFirstObjectTableOffset:I
iadd
aload 0
getfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.alignedChunkFirstObjectTableSize:Lorg/graalvm/word/UnsignedWord;
invokestatic com.oracle.svm.core.genscavenge.FirstObjectTable.initializeTableInBuffer:(Ljava/nio/ByteBuffer;ILorg/graalvm/word/UnsignedWord;)V
4: return
end local 10 end local 8 end local 6 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/oracle/svm/core/genscavenge/HostedImageHeapChunkWriter;
0 5 1 chunkPosition I
0 5 2 topOffset J
0 5 4 endOffset J
0 5 6 offsetToPreviousChunk J
0 5 8 offsetToNextChunk J
1 5 10 chunkOffset I
MethodParameters:
Name Flags
chunkPosition
topOffset
endOffset
offsetToPreviousChunk
offsetToNextChunk
public void initializeUnalignedChunk(int, long, long, long, long);
descriptor: (IJJJJ)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=10, locals=11, args_size=6
start local 0 start local 1 start local 2 start local 4 start local 6 start local 8 0: aload 0
iload 1
invokevirtual com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.getChunkOffsetInBuffer:(I)I
istore 10
start local 10 1: aload 0
iload 10
lload 2
lload 4
lload 6
lload 8
invokevirtual com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.writeHeader:(IJJJJ)V
2: aload 0
getfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.buffer:Ljava/nio/ByteBuffer;
iload 10
aload 0
getfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.unalignedChunkCardTableOffset:I
iadd
aload 0
getfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.unalignedChunkCardTableSize:Lorg/graalvm/word/UnsignedWord;
invokestatic com.oracle.svm.core.genscavenge.CardTable.cleanTableInBuffer:(Ljava/nio/ByteBuffer;ILorg/graalvm/word/UnsignedWord;)V
3: return
end local 10 end local 8 end local 6 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/oracle/svm/core/genscavenge/HostedImageHeapChunkWriter;
0 4 1 chunkPosition I
0 4 2 topOffset J
0 4 4 endOffset J
0 4 6 offsetToPreviousChunk J
0 4 8 offsetToNextChunk J
1 4 10 chunkOffset I
MethodParameters:
Name Flags
chunkPosition
topOffset
endOffset
offsetToPreviousChunk
offsetToNextChunk
private void (int, long, long, long, long);
descriptor: (IJJJJ)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=11, args_size=6
start local 0 start local 1 start local 2 start local 4 start local 6 start local 8 0: iconst_0
istore 10
start local 10 1: goto 4
2: StackMap locals: int
StackMap stack:
getstatic com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.$assertionsDisabled:Z
ifne 3
aload 0
getfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.buffer:Ljava/nio/ByteBuffer;
iload 1
iload 10
iadd
invokevirtual java.nio.ByteBuffer.get:(I)B
ifeq 3
new java.lang.AssertionError
dup
ldc "Header area must be zeroed out"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
3: StackMap locals:
StackMap stack:
iinc 10 1
StackMap locals:
StackMap stack:
4: iload 10
aload 0
getfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.headerSize:I
if_icmplt 2
end local 10 5: aload 0
getfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.buffer:Ljava/nio/ByteBuffer;
iload 1
aload 0
getfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.topOffsetAt:I
iadd
lload 2
invokevirtual java.nio.ByteBuffer.putLong:(IJ)Ljava/nio/ByteBuffer;
pop
6: aload 0
getfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.buffer:Ljava/nio/ByteBuffer;
iload 1
aload 0
getfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.endOffsetAt:I
iadd
lload 4
invokevirtual java.nio.ByteBuffer.putLong:(IJ)Ljava/nio/ByteBuffer;
pop
7: aload 0
getfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.buffer:Ljava/nio/ByteBuffer;
iload 1
aload 0
getfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.spaceOffsetAt:I
iadd
lconst_0
invokestatic com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.putObjectReference:(Ljava/nio/ByteBuffer;IJ)V
8: aload 0
getfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.buffer:Ljava/nio/ByteBuffer;
iload 1
aload 0
getfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.offsetToPreviousChunkAt:I
iadd
lload 6
invokevirtual java.nio.ByteBuffer.putLong:(IJ)Ljava/nio/ByteBuffer;
pop
9: aload 0
getfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.buffer:Ljava/nio/ByteBuffer;
iload 1
aload 0
getfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.offsetToNextChunkAt:I
iadd
lload 8
invokevirtual java.nio.ByteBuffer.putLong:(IJ)Ljava/nio/ByteBuffer;
pop
10: return
end local 8 end local 6 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lcom/oracle/svm/core/genscavenge/HostedImageHeapChunkWriter;
0 11 1 chunkOffset I
0 11 2 topOffset J
0 11 4 endOffset J
0 11 6 offsetToPreviousChunk J
0 11 8 offsetToNextChunk J
1 5 10 i I
MethodParameters:
Name Flags
chunkOffset
topOffset
endOffset
offsetToPreviousChunk
offsetToNextChunk
public void insertIntoAlignedChunkFirstObjectTable(int, long, long);
descriptor: (IJJ)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=10, args_size=4
start local 0 start local 1 start local 2 start local 4 0: aload 0
iload 1
invokevirtual com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.getChunkOffsetInBuffer:(I)I
istore 6
start local 6 1: getstatic com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.$assertionsDisabled:Z
ifne 3
iload 6
iflt 2
lload 2
lconst_0
lcmp
iflt 2
lload 4
lload 2
lcmp
ifgt 3
StackMap locals: int
StackMap stack:
2: new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
3: StackMap locals:
StackMap stack:
iload 6
aload 0
getfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.alignedChunkFirstObjectTableOffset:I
iadd
istore 7
start local 7 4: lload 2
invokestatic org.graalvm.word.WordFactory.unsigned:(J)Lorg/graalvm/word/UnsignedWord;
aload 0
getfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.alignedChunkObjectsStartOffset:Lorg/graalvm/word/UnsignedWord;
invokeinterface org.graalvm.word.UnsignedWord.subtract:(Lorg/graalvm/word/UnsignedWord;)Lorg/graalvm/word/UnsignedWord;
astore 8
start local 8 5: lload 4
invokestatic org.graalvm.word.WordFactory.unsigned:(J)Lorg/graalvm/word/UnsignedWord;
aload 0
getfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.alignedChunkObjectsStartOffset:Lorg/graalvm/word/UnsignedWord;
invokeinterface org.graalvm.word.UnsignedWord.subtract:(Lorg/graalvm/word/UnsignedWord;)Lorg/graalvm/word/UnsignedWord;
astore 9
start local 9 6: aload 0
getfield com.oracle.svm.core.genscavenge.HostedImageHeapChunkWriter.buffer:Ljava/nio/ByteBuffer;
iload 7
aload 8
aload 9
invokestatic com.oracle.svm.core.genscavenge.FirstObjectTable.setTableInBufferForObject:(Ljava/nio/ByteBuffer;ILorg/graalvm/word/UnsignedWord;Lorg/graalvm/word/UnsignedWord;)V
7: return
end local 9 end local 8 end local 7 end local 6 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lcom/oracle/svm/core/genscavenge/HostedImageHeapChunkWriter;
0 8 1 chunkPosition I
0 8 2 objectOffsetInChunk J
0 8 4 objectEndOffsetInChunk J
1 8 6 chunkOffset I
4 8 7 bufferTableOffset I
5 8 8 offsetInObjects Lorg/graalvm/word/UnsignedWord;
6 8 9 endOffsetInObjects Lorg/graalvm/word/UnsignedWord;
MethodParameters:
Name Flags
chunkPosition
objectOffsetInChunk
objectEndOffsetInChunk
static void putObjectReference(java.nio.ByteBuffer, int, long);
descriptor: (Ljava/nio/ByteBuffer;IJ)V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=4, args_size=3
start local 0 start local 1 start local 2 0: invokestatic com.oracle.svm.core.config.ConfigurationValues.getObjectLayout:()Lcom/oracle/svm/core/config/ObjectLayout;
invokevirtual com.oracle.svm.core.config.ObjectLayout.getReferenceSize:()I
tableswitch { // 4 - 8
4: 1
5: 5
6: 5
7: 5
8: 3
default: 5
}
1: StackMap locals:
StackMap stack:
aload 0
iload 1
lload 2
invokestatic org.graalvm.compiler.core.common.NumUtil.safeToInt:(J)I
invokevirtual java.nio.ByteBuffer.putInt:(II)Ljava/nio/ByteBuffer;
pop
2: goto 6
3: StackMap locals:
StackMap stack:
aload 0
iload 1
lload 2
invokevirtual java.nio.ByteBuffer.putLong:(IJ)Ljava/nio/ByteBuffer;
pop
4: goto 6
5: StackMap locals:
StackMap stack:
ldc "Unsupported reference size"
invokestatic com.oracle.svm.core.util.VMError.shouldNotReachHere:(Ljava/lang/String;)Ljava/lang/RuntimeException;
pop
6: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 buffer Ljava/nio/ByteBuffer;
0 7 1 offset I
0 7 2 value J
MethodParameters:
Name Flags
buffer
offset
value
}
SourceFile: "HostedImageHeapChunkWriter.java"
InnerClasses:
public abstract Header = com.oracle.svm.core.genscavenge.HeapChunk$Header of com.oracle.svm.core.genscavenge.HeapChunk
RuntimeVisibleAnnotations:
org.graalvm.nativeimage.Platforms(value = {Lorg/graalvm/nativeimage/Platform$HOSTED_ONLY;})