final class com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator extends java.lang.Enum<com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator> implements java.util.Comparator<byte[]>
minor version: 0
major version: 59
flags: flags: (0x4030) ACC_FINAL, ACC_SUPER, ACC_ANNOTATION
this_class: com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator
super_class: java.lang.Enum
{
public static final com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator INSTANCE;
descriptor: Lcom/google/common/primitives/UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator;
flags: (0x4019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ANNOTATION
static final boolean BIG_ENDIAN;
descriptor: Z
flags: (0x0018) ACC_STATIC, ACC_FINAL
static final sun.misc.Unsafe theUnsafe;
descriptor: Lsun/misc/Unsafe;
flags: (0x0018) ACC_STATIC, ACC_FINAL
static final int BYTE_ARRAY_BASE_OFFSET;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
private static final com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator[] ENUM$VALUES;
descriptor: [Lcom/google/common/primitives/UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator;
flags: (0x101a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=0, args_size=0
0: new com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator
dup
ldc "INSTANCE"
iconst_0
invokespecial com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator.<init>:(Ljava/lang/String;I)V
putstatic com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator.INSTANCE:Lcom/google/common/primitives/UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator;
iconst_1
anewarray com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator
dup
iconst_0
getstatic com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator.INSTANCE:Lcom/google/common/primitives/UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator;
aastore
putstatic com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator.ENUM$VALUES:[Lcom/google/common/primitives/UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator;
1: invokestatic java.nio.ByteOrder.nativeOrder:()Ljava/nio/ByteOrder;
getstatic java.nio.ByteOrder.BIG_ENDIAN:Ljava/nio/ByteOrder;
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
putstatic com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator.BIG_ENDIAN:Z
2: invokestatic com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator.getUnsafe:()Lsun/misc/Unsafe;
putstatic com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator.theUnsafe:Lsun/misc/Unsafe;
3: getstatic com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator.theUnsafe:Lsun/misc/Unsafe;
ldc [B
invokevirtual sun.misc.Unsafe.arrayBaseOffset:(Ljava/lang/Class;)I
putstatic com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator.BYTE_ARRAY_BASE_OFFSET:I
4: ldc "64"
ldc "sun.arch.data.model"
invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 7
5: getstatic com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator.BYTE_ARRAY_BASE_OFFSET:I
bipush 8
irem
ifne 7
6: getstatic com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator.theUnsafe:Lsun/misc/Unsafe;
ldc [B
invokevirtual sun.misc.Unsafe.arrayIndexScale:(Ljava/lang/Class;)I
iconst_1
if_icmpeq 8
7: StackMap locals:
StackMap stack:
new java.lang.Error
dup
invokespecial java.lang.Error.<init>:()V
athrow
8: StackMap locals:
StackMap stack:
return
LocalVariableTable:
Start End Slot Name Signature
private void <init>(java.lang.String, int);
descriptor: (Ljava/lang/String;I)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=3
start local 0 0: aload 0
aload 1
iload 2
invokespecial java.lang.Enum.<init>:(Ljava/lang/String;I)V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/google/common/primitives/UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator;
MethodParameters:
Name Flags
$enum$name
$enum$ordinal
private static sun.misc.Unsafe getUnsafe();
descriptor: ()Lsun/misc/Unsafe;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=1, args_size=0
0: invokestatic sun.misc.Unsafe.getUnsafe:()Lsun/misc/Unsafe;
1: areturn
2: StackMap locals:
StackMap stack: java.lang.SecurityException
pop
3: new com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator$1
dup
invokespecial com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator$1.<init>:()V
4: invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;
checkcast sun.misc.Unsafe
5: areturn
6: StackMap locals:
StackMap stack: java.security.PrivilegedActionException
astore 0
start local 0 7: new java.lang.RuntimeException
dup
ldc "Could not initialize intrinsics"
aload 0
invokevirtual java.security.PrivilegedActionException.getCause:()Ljava/lang/Throwable;
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
7 8 0 e Ljava/security/PrivilegedActionException;
Exception table:
from to target type
0 1 2 Class java.lang.SecurityException
3 5 6 Class java.security.PrivilegedActionException
public int compare(byte[], byte[]);
descriptor: ([B[B)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=11, args_size=3
start local 0 start local 1 start local 2 0: aload 1
arraylength
aload 2
arraylength
invokestatic java.lang.Math.min:(II)I
istore 3
start local 3 1: iload 3
bipush -8
iand
istore 4
start local 4 2: iconst_0
istore 5
start local 5 3: goto 12
4: StackMap locals: int int int
StackMap stack:
getstatic com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator.theUnsafe:Lsun/misc/Unsafe;
aload 1
getstatic com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator.BYTE_ARRAY_BASE_OFFSET:I
i2l
iload 5
i2l
ladd
invokevirtual sun.misc.Unsafe.getLong:(Ljava/lang/Object;J)J
lstore 6
start local 6 5: getstatic com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator.theUnsafe:Lsun/misc/Unsafe;
aload 2
getstatic com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator.BYTE_ARRAY_BASE_OFFSET:I
i2l
iload 5
i2l
ladd
invokevirtual sun.misc.Unsafe.getLong:(Ljava/lang/Object;J)J
lstore 8
start local 8 6: lload 6
lload 8
lcmp
ifeq 11
7: getstatic com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator.BIG_ENDIAN:Z
ifeq 9
8: lload 6
lload 8
invokestatic com.google.common.primitives.UnsignedLongs.compare:(JJ)I
ireturn
9: StackMap locals: long long
StackMap stack:
lload 6
lload 8
lxor
invokestatic java.lang.Long.numberOfTrailingZeros:(J)I
bipush -8
iand
istore 10
start local 10 10: lload 6
iload 10
lushr
ldc 255
land
l2i
lload 8
iload 10
lushr
ldc 255
land
l2i
isub
ireturn
end local 10 end local 8 end local 6 11: StackMap locals:
StackMap stack:
iinc 5 8
StackMap locals:
StackMap stack:
12: iload 5
iload 4
if_icmplt 4
13: goto 18
14: StackMap locals:
StackMap stack:
aload 1
iload 5
baload
aload 2
iload 5
baload
invokestatic com.google.common.primitives.UnsignedBytes.compare:(BB)I
istore 6
start local 6 15: iload 6
ifeq 17
16: iload 6
ireturn
end local 6 17: StackMap locals:
StackMap stack:
iinc 5 1
StackMap locals:
StackMap stack:
18: iload 5
iload 3
if_icmplt 14
19: aload 1
arraylength
aload 2
arraylength
isub
ireturn
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 this Lcom/google/common/primitives/UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator;
0 20 1 left [B
0 20 2 right [B
1 20 3 minLength I
2 20 4 strideLimit I
3 20 5 i I
5 11 6 lw J
6 11 8 rw J
10 11 10 n I
15 17 6 result I
MethodParameters:
Name Flags
left
right
public java.lang.String toString();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: ldc "UnsignedBytes.lexicographicalComparator() (sun.misc.Unsafe version)"
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/google/common/primitives/UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator;
public static com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator[] values();
descriptor: ()[Lcom/google/common/primitives/UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=5, locals=3, args_size=0
0: getstatic com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator.ENUM$VALUES:[Lcom/google/common/primitives/UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator;
dup
astore 0
iconst_0
aload 0
arraylength
dup
istore 1
anewarray com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator
dup
astore 2
iconst_0
iload 1
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
aload 2
areturn
LocalVariableTable:
Start End Slot Name Signature
public static com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator valueOf(java.lang.String);
descriptor: (Ljava/lang/String;)Lcom/google/common/primitives/UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
0: ldc Lcom/google/common/primitives/UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator;
aload 0
invokestatic java.lang.Enum.valueOf:(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;
checkcast com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator
areturn
LocalVariableTable:
Start End Slot Name Signature
MethodParameters:
Name Flags
name
public int compare(java.lang.Object, java.lang.Object);
descriptor: (Ljava/lang/Object;Ljava/lang/Object;)I
flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=3, locals=3, args_size=3
0: aload 0
aload 1
checkcast byte[]
aload 2
checkcast byte[]
invokevirtual com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator.compare:([B[B)I
ireturn
LocalVariableTable:
Start End Slot Name Signature
}
Signature: Ljava/lang/Enum<Lcom/google/common/primitives/UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator;>;Ljava/util/Comparator<[B>;
SourceFile: "UnsignedBytes.java"
NestHost: com.google.common.primitives.UnsignedBytes
InnerClasses:
LexicographicalComparatorHolder = com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder of com.google.common.primitives.UnsignedBytes
final UnsafeComparator = com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator of com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder
com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator$1
RuntimeInvisibleAnnotations:
com.google.common.annotations.VisibleForTesting()