final class com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils
super_class: java.lang.Object
{
private static final int LIMIT;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 65536
private static final long UINT32_MAX_VALUE;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 4294967295
private static final int UINT16_MAX_VALUE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 65535
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: new java.lang.IllegalStateException
dup
ldc "No instance allowed."
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/polyglot/HostClassLoader$JarLoader$ZipUtils;
static java.io.InputStream getInputStream(java.nio.channels.SeekableByteChannel, long);
descriptor: (Ljava/nio/channels/SeekableByteChannel;J)Ljava/io/InputStream;
flags: (0x0008) ACC_STATIC
Code:
stack=5, locals=5, args_size=2
start local 0 start local 1 0: aload 0
lload 1
invokeinterface java.nio.channels.SeekableByteChannel.position:(J)Ljava/nio/channels/SeekableByteChannel;
pop
1: new java.util.zip.ZipInputStream
dup
new com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$ChannelInputStream
dup
aload 0
invokespecial com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$ChannelInputStream.<init>:(Ljava/nio/channels/SeekableByteChannel;)V
invokespecial java.util.zip.ZipInputStream.<init>:(Ljava/io/InputStream;)V
astore 3
start local 3 2: aload 3
invokevirtual java.util.zip.ZipInputStream.getNextEntry:()Ljava/util/zip/ZipEntry;
astore 4
start local 4 3: aload 4
ifnull 6
aload 4
invokevirtual java.util.zip.ZipEntry.getCrc:()J
lconst_0
lcmp
ifne 6
aload 4
invokevirtual java.util.zip.ZipEntry.getMethod:()I
ifne 6
4: aload 3
invokevirtual java.util.zip.ZipInputStream.close:()V
5: new com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$ChannelInputStream
dup
aload 0
aload 4
invokevirtual java.util.zip.ZipEntry.getSize:()J
invokespecial com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$ChannelInputStream.<init>:(Ljava/nio/channels/SeekableByteChannel;J)V
areturn
6: StackMap locals: java.util.zip.ZipInputStream java.util.zip.ZipEntry
StackMap stack:
aload 3
areturn
end local 4 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 channel Ljava/nio/channels/SeekableByteChannel;
0 7 1 offset J
2 7 3 in Ljava/util/zip/ZipInputStream;
3 7 4 e Ljava/util/zip/ZipEntry;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
channel
offset
static java.util.Map<java.lang.String, java.util.Map<java.lang.String, com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$Info>> readEntries(java.nio.channels.SeekableByteChannel);
descriptor: (Ljava/nio/channels/SeekableByteChannel;)Ljava/util/Map;
flags: (0x0008) ACC_STATIC
Code:
stack=8, locals=23, args_size=1
start local 0 0: aload 0
invokeinterface java.nio.channels.SeekableByteChannel.size:()J
l2i
i2l
lstore 1
start local 1 1: aload 0
lload 1
ldc 22
lsub
invokeinterface java.nio.channels.SeekableByteChannel.position:(J)Ljava/nio/channels/SeekableByteChannel;
pop
2: bipush 22
invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
astore 3
start local 3 3: aload 3
getstatic java.nio.ByteOrder.LITTLE_ENDIAN:Ljava/nio/ByteOrder;
invokevirtual java.nio.ByteBuffer.order:(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;
pop
4: iconst_0
istore 4
start local 4 5: StackMap locals: long java.nio.ByteBuffer int
StackMap stack:
aload 3
invokevirtual java.nio.ByteBuffer.clear:()Ljava/nio/ByteBuffer;
pop
6: aload 0
aload 3
invokestatic com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils.readFully:(Ljava/nio/channels/SeekableByteChannel;Ljava/nio/ByteBuffer;)I
bipush 22
if_icmpeq 8
7: new java.io.IOException
dup
invokespecial java.io.IOException.<init>:()V
athrow
8: StackMap locals:
StackMap stack:
aload 0
aload 0
invokeinterface java.nio.channels.SeekableByteChannel.position:()J
ldc 23
lsub
invokeinterface java.nio.channels.SeekableByteChannel.position:(J)Ljava/nio/channels/SeekableByteChannel;
pop
9: iinc 4 1
10: iload 4
ldc 65536
if_icmple 12
11: new java.io.IOException
dup
invokespecial java.io.IOException.<init>:()V
athrow
12: StackMap locals:
StackMap stack:
aload 3
invokestatic com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils.getsig:(Ljava/nio/ByteBuffer;)J
ldc 101010256
lcmp
ifne 5
13: aload 3
invokestatic com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils.endsiz:(Ljava/nio/ByteBuffer;)J
lstore 5
start local 5 14: aload 3
invokestatic com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils.endoff:(Ljava/nio/ByteBuffer;)J
lstore 7
start local 7 15: aload 0
lload 7
invokeinterface java.nio.channels.SeekableByteChannel.position:(J)Ljava/nio/channels/SeekableByteChannel;
pop
16: new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
astore 9
start local 9 17: iconst_0
istore 10
start local 10 18: bipush 46
invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
astore 3
19: aload 3
getstatic java.nio.ByteOrder.LITTLE_ENDIAN:Ljava/nio/ByteOrder;
invokevirtual java.nio.ByteBuffer.order:(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;
pop
20: goto 40
21: StackMap locals: java.nio.channels.SeekableByteChannel long java.nio.ByteBuffer int long long java.util.Map int
StackMap stack:
aload 3
invokevirtual java.nio.ByteBuffer.clear:()Ljava/nio/ByteBuffer;
pop
22: aload 0
aload 3
invokestatic com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils.readFully:(Ljava/nio/channels/SeekableByteChannel;Ljava/nio/ByteBuffer;)I
bipush 46
if_icmpeq 24
23: new java.io.IOException
dup
ldc "No central table"
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
24: StackMap locals:
StackMap stack:
aload 3
invokestatic com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils.getsig:(Ljava/nio/ByteBuffer;)J
ldc 33639248
lcmp
ifeq 26
25: new java.io.IOException
dup
ldc "No central table"
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
26: StackMap locals:
StackMap stack:
aload 3
invokestatic com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils.cennam:(Ljava/nio/ByteBuffer;)I
istore 11
start local 11 27: aload 3
invokestatic com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils.cenext:(Ljava/nio/ByteBuffer;)I
istore 12
start local 12 28: aload 3
invokestatic com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils.cencom:(Ljava/nio/ByteBuffer;)I
istore 13
start local 13 29: aload 3
invokestatic com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils.cenoff:(Ljava/nio/ByteBuffer;)J
lstore 14
start local 14 30: aload 3
invokestatic com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils.cenlen:(Ljava/nio/ByteBuffer;)J
lstore 16
start local 16 31: aload 0
iload 11
invokestatic com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils.name:(Ljava/nio/channels/SeekableByteChannel;I)Ljava/lang/String;
astore 18
start local 18 32: iload 12
iload 13
iadd
istore 19
start local 19 33: bipush 46
iload 11
iadd
iload 19
iadd
istore 20
start local 20 34: iload 10
iload 20
iadd
istore 10
35: aload 18
invokestatic com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils.isDirectory:(Ljava/lang/String;)Z
ifne 39
36: aload 18
invokestatic com.oracle.truffle.polyglot.HostClassLoader$JarLoader.split:(Ljava/lang/String;)[Ljava/lang/String;
astore 21
start local 21 37: aload 9
aload 21
iconst_0
aaload
new com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$1
dup
invokespecial com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$1.<init>:()V
invokeinterface java.util.Map.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
checkcast java.util.Map
astore 22
start local 22 38: aload 22
aload 21
iconst_1
aaload
new com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$Info
dup
lload 14
lload 16
invokespecial com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$Info.<init>:(JJ)V
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 22 end local 21 39: StackMap locals: java.nio.channels.SeekableByteChannel long java.nio.ByteBuffer int long long java.util.Map int int int int long long java.lang.String int int
StackMap stack:
aload 0
iload 19
invokestatic com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils.seekBy:(Ljava/nio/channels/SeekableByteChannel;I)V
end local 20 end local 19 end local 18 end local 16 end local 14 end local 13 end local 12 end local 11 40: StackMap locals: java.nio.channels.SeekableByteChannel long java.nio.ByteBuffer int long long java.util.Map int
StackMap stack:
iload 10
i2l
lload 5
lcmp
iflt 21
41: aload 9
areturn
end local 10 end local 9 end local 7 end local 5 end local 4 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 42 0 channel Ljava/nio/channels/SeekableByteChannel;
1 42 1 size J
3 42 3 data Ljava/nio/ByteBuffer;
5 42 4 giveup I
14 42 5 censize J
15 42 7 cenoff J
17 42 9 result Ljava/util/Map<Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;Lcom/oracle/truffle/polyglot/HostClassLoader$JarLoader$ZipUtils$Info;>;>;
18 42 10 cenread I
27 40 11 cennam I
28 40 12 cenext I
29 40 13 cencom I
30 40 14 lhoff J
31 40 16 cenlen J
32 40 18 name Ljava/lang/String;
33 40 19 seekby I
34 40 20 cendatalen I
37 39 21 parts [Ljava/lang/String;
38 39 22 names Ljava/util/Map<Ljava/lang/String;Lcom/oracle/truffle/polyglot/HostClassLoader$JarLoader$ZipUtils$Info;>;
Exceptions:
throws java.io.IOException
Signature: (Ljava/nio/channels/SeekableByteChannel;)Ljava/util/Map<Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;Lcom/oracle/truffle/polyglot/HostClassLoader$JarLoader$ZipUtils$Info;>;>;
MethodParameters:
Name Flags
channel
private static java.lang.String name(java.nio.channels.SeekableByteChannel, int);
descriptor: (Ljava/nio/channels/SeekableByteChannel;I)Ljava/lang/String;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: iload 1
invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
astore 2
start local 2 1: aload 0
aload 2
invokestatic com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils.readFully:(Ljava/nio/channels/SeekableByteChannel;Ljava/nio/ByteBuffer;)I
iload 1
if_icmpeq 3
2: new java.io.IOException
dup
ldc "Unexpected EOF."
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals: java.nio.ByteBuffer
StackMap stack:
new java.lang.String
dup
aload 2
invokevirtual java.nio.ByteBuffer.array:()[B
ldc "UTF-8"
invokespecial java.lang.String.<init>:([BLjava/lang/String;)V
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 channel Ljava/nio/channels/SeekableByteChannel;
0 4 1 cennam I
1 4 2 name Ljava/nio/ByteBuffer;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
channel
cennam
private static boolean isDirectory(java.lang.String);
descriptor: (Ljava/lang/String;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
ldc "/"
invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 name Ljava/lang/String;
MethodParameters:
Name Flags
name
private static int readFully(java.nio.channels.SeekableByteChannel, java.nio.ByteBuffer);
descriptor: (Ljava/nio/channels/SeekableByteChannel;Ljava/nio/ByteBuffer;)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=4, args_size=2
start local 0 start local 1 0: iconst_0
istore 2
start local 2 1: goto 6
2: StackMap locals: int
StackMap stack:
aload 0
aload 1
invokeinterface java.nio.channels.SeekableByteChannel.read:(Ljava/nio/ByteBuffer;)I
istore 3
start local 3 3: iload 3
iconst_m1
if_icmpne 5
4: goto 7
5: StackMap locals: int
StackMap stack:
iload 2
iload 3
iadd
istore 2
end local 3 6: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.nio.ByteBuffer.remaining:()I
ifgt 2
7: StackMap locals:
StackMap stack:
iload 2
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 channel Ljava/nio/channels/SeekableByteChannel;
0 8 1 buffer Ljava/nio/ByteBuffer;
1 8 2 res I
3 6 3 read I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
channel
buffer
private static long getsig(java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)J
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
iconst_0
invokevirtual java.nio.ByteBuffer.getInt:(I)I
i2l
ldc 4294967295
land
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 b Ljava/nio/ByteBuffer;
MethodParameters:
Name Flags
b
private static long endsiz(java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)J
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
bipush 12
invokevirtual java.nio.ByteBuffer.getInt:(I)I
i2l
ldc 4294967295
land
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 b Ljava/nio/ByteBuffer;
MethodParameters:
Name Flags
b
private static long endoff(java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)J
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
bipush 16
invokevirtual java.nio.ByteBuffer.getInt:(I)I
i2l
ldc 4294967295
land
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 b Ljava/nio/ByteBuffer;
MethodParameters:
Name Flags
b
private static long cenlen(java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)J
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
bipush 24
invokevirtual java.nio.ByteBuffer.getInt:(I)I
i2l
ldc 4294967295
land
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 b Ljava/nio/ByteBuffer;
MethodParameters:
Name Flags
b
private static int cennam(java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
bipush 28
invokevirtual java.nio.ByteBuffer.getShort:(I)S
ldc 65535
iand
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 b Ljava/nio/ByteBuffer;
MethodParameters:
Name Flags
b
private static int cenext(java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
bipush 30
invokevirtual java.nio.ByteBuffer.getShort:(I)S
ldc 65535
iand
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 b Ljava/nio/ByteBuffer;
MethodParameters:
Name Flags
b
private static int cencom(java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
bipush 32
invokevirtual java.nio.ByteBuffer.getShort:(I)S
ldc 65535
iand
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 b Ljava/nio/ByteBuffer;
MethodParameters:
Name Flags
b
private static long cenoff(java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)J
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
bipush 42
invokevirtual java.nio.ByteBuffer.getInt:(I)I
i2l
ldc 4294967295
land
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 b Ljava/nio/ByteBuffer;
MethodParameters:
Name Flags
b
private static void seekBy(java.nio.channels.SeekableByteChannel, int);
descriptor: (Ljava/nio/channels/SeekableByteChannel;I)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 0
invokeinterface java.nio.channels.SeekableByteChannel.position:()J
iload 1
i2l
ladd
invokeinterface java.nio.channels.SeekableByteChannel.position:(J)Ljava/nio/channels/SeekableByteChannel;
pop
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 ch Ljava/nio/channels/SeekableByteChannel;
0 2 1 offset I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
ch final
offset
}
SourceFile: "HostClassLoader.java"
NestHost: com.oracle.truffle.polyglot.HostClassLoader
InnerClasses:
private final JarLoader = com.oracle.truffle.polyglot.HostClassLoader$JarLoader of com.oracle.truffle.polyglot.HostClassLoader
final ZipUtils = com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils of com.oracle.truffle.polyglot.HostClassLoader$JarLoader
com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$1
private ChannelInputStream = com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$ChannelInputStream of com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils
final Info = com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils$Info of com.oracle.truffle.polyglot.HostClassLoader$JarLoader$ZipUtils