class java.lang.CharacterName
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: java.lang.CharacterName
super_class: java.lang.Object
{
private static java.lang.ref.SoftReference<java.lang.CharacterName> refCharName;
descriptor: Ljava/lang/ref/SoftReference;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Signature: Ljava/lang/ref/SoftReference<Ljava/lang/CharacterName;>;
private final byte[] strPool;
descriptor: [B
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int[] lookup;
descriptor: [I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int[] bkIndices;
descriptor: [I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int[] cpEntries;
descriptor: [I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int[] hsIndices;
descriptor: [I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=20, args_size=1
start local 0 // java.lang.CharacterName this
0: .line 50
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
1: .line 51
aconst_null
astore 1
aconst_null
astore 2
2: new java.io.DataInputStream
dup
new java.util.zip.InflaterInputStream
dup
3: .line 52
new java.lang.CharacterName$1
dup
aload 0 /* this */
invokespecial java.lang.CharacterName$1.<init>:(Ljava/lang/CharacterName;)V
invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
checkcast java.io.InputStream
invokespecial java.util.zip.InflaterInputStream.<init>:(Ljava/io/InputStream;)V
4: .line 51
invokespecial java.io.DataInputStream.<init>:(Ljava/io/InputStream;)V
astore 3 /* dis */
start local 3 // java.io.DataInputStream dis
5: .line 58
aload 3 /* dis */
invokevirtual java.io.DataInputStream.readInt:()I
istore 4 /* total */
start local 4 // int total
6: .line 59
aload 3 /* dis */
invokevirtual java.io.DataInputStream.readInt:()I
istore 5 /* bkNum */
start local 5 // int bkNum
7: .line 60
aload 3 /* dis */
invokevirtual java.io.DataInputStream.readInt:()I
istore 6 /* cpNum */
start local 6 // int cpNum
8: .line 61
aload 3 /* dis */
invokevirtual java.io.DataInputStream.readInt:()I
istore 7 /* cpEnd */
start local 7 // int cpEnd
9: .line 62
iload 7 /* cpEnd */
newarray 8
astore 8 /* ba */
start local 8 // byte[] ba
10: .line 63
aload 0 /* this */
iload 5 /* bkNum */
sipush 256
imul
newarray 10
putfield java.lang.CharacterName.lookup:[I
11: .line 64
aload 0 /* this */
sipush 4352
newarray 10
putfield java.lang.CharacterName.bkIndices:[I
12: .line 65
aload 0 /* this */
iload 4 /* total */
iload 7 /* cpEnd */
isub
newarray 8
putfield java.lang.CharacterName.strPool:[B
13: .line 66
aload 0 /* this */
iload 6 /* cpNum */
iconst_3
imul
newarray 10
putfield java.lang.CharacterName.cpEntries:[I
14: .line 67
aload 0 /* this */
iload 6 /* cpNum */
iconst_2
idiv
iconst_1
ior
newarray 10
putfield java.lang.CharacterName.hsIndices:[I
15: .line 68
aload 0 /* this */
getfield java.lang.CharacterName.bkIndices:[I
iconst_m1
invokestatic java.util.Arrays.fill:([II)V
16: .line 69
aload 0 /* this */
getfield java.lang.CharacterName.hsIndices:[I
iconst_m1
invokestatic java.util.Arrays.fill:([II)V
17: .line 70
aload 3 /* dis */
aload 8 /* ba */
invokevirtual java.io.DataInputStream.readFully:([B)V
18: .line 71
aload 3 /* dis */
aload 0 /* this */
getfield java.lang.CharacterName.strPool:[B
invokevirtual java.io.DataInputStream.readFully:([B)V
19: .line 73
iconst_0
istore 9 /* nameOff */
start local 9 // int nameOff
20: .line 74
iconst_0
istore 10 /* cpOff */
start local 10 // int cpOff
21: .line 75
iconst_0
istore 11 /* cp */
start local 11 // int cp
22: .line 76
iconst_m1
istore 12 /* bk */
start local 12 // int bk
23: .line 77
iconst_m1
istore 13 /* prevBk */
start local 13 // int prevBk
24: .line 78
iconst_0
istore 14 /* idx */
start local 14 // int idx
25: .line 79
iconst_m1
istore 15 /* next */
start local 15 // int next
26: .line 80
iconst_0
istore 16 /* hash */
start local 16 // int hash
27: .line 81
iconst_0
istore 17 /* hsh */
start local 17 // int hsh
28: .line 83
StackMap locals: java.lang.CharacterName java.lang.Throwable java.lang.Throwable java.io.DataInputStream int int int int byte[] int int int int int int int int int
StackMap stack:
aload 8 /* ba */
iload 10 /* cpOff */
iinc 10 /* cpOff */ 1
baload
sipush 255
iand
istore 18 /* len */
start local 18 // int len
29: .line 84
iload 18 /* len */
ifne 37
30: .line 85
aload 8 /* ba */
iload 10 /* cpOff */
iinc 10 /* cpOff */ 1
baload
sipush 255
iand
istore 18 /* len */
31: .line 87
aload 8 /* ba */
iload 10 /* cpOff */
iinc 10 /* cpOff */ 1
baload
sipush 255
iand
bipush 16
ishl
32: .line 88
aload 8 /* ba */
iload 10 /* cpOff */
iinc 10 /* cpOff */ 1
baload
sipush 255
iand
bipush 8
ishl
33: .line 87
ior
34: .line 89
aload 8 /* ba */
iload 10 /* cpOff */
iinc 10 /* cpOff */ 1
baload
sipush 255
iand
35: .line 87
ior
istore 11 /* cp */
36: .line 90
goto 38
37: .line 91
StackMap locals: int
StackMap stack:
iinc 11 /* cp */ 1
38: .line 94
StackMap locals:
StackMap stack:
iload 11 /* cp */
bipush 8
ishr
istore 19 /* hi */
start local 19 // int hi
39: .line 95
iload 13 /* prevBk */
iload 19 /* hi */
if_icmpeq 43
40: .line 96
iinc 12 /* bk */ 1
41: .line 97
aload 0 /* this */
getfield java.lang.CharacterName.bkIndices:[I
iload 19 /* hi */
iload 12 /* bk */
iastore
42: .line 98
iload 19 /* hi */
istore 13 /* prevBk */
43: .line 100
StackMap locals: int
StackMap stack:
aload 0 /* this */
getfield java.lang.CharacterName.lookup:[I
iload 12 /* bk */
bipush 8
ishl
iload 11 /* cp */
sipush 255
iand
iadd
iload 9 /* nameOff */
bipush 8
ishl
iload 18 /* len */
ior
iastore
44: .line 102
aload 0 /* this */
getfield java.lang.CharacterName.strPool:[B
iload 9 /* nameOff */
iload 18 /* len */
invokestatic java.lang.CharacterName.hashN:([BII)I
istore 16 /* hash */
45: .line 103
iload 16 /* hash */
ldc 2147483647
iand
aload 0 /* this */
getfield java.lang.CharacterName.hsIndices:[I
arraylength
irem
istore 17 /* hsh */
46: .line 104
aload 0 /* this */
getfield java.lang.CharacterName.hsIndices:[I
iload 17 /* hsh */
iaload
istore 15 /* next */
47: .line 105
aload 0 /* this */
getfield java.lang.CharacterName.hsIndices:[I
iload 17 /* hsh */
iload 14 /* idx */
iastore
48: .line 106
aload 0 /* this */
iload 14 /* idx */
iload 16 /* hash */
iload 15 /* next */
iload 11 /* cp */
invokevirtual java.lang.CharacterName.addCp:(IIII)I
istore 14 /* idx */
49: .line 107
iload 9 /* nameOff */
iload 18 /* len */
iadd
istore 9 /* nameOff */
end local 19 // int hi
end local 18 // int len
50: .line 108
iload 10 /* cpOff */
iload 7 /* cpEnd */
51: .line 82
if_icmplt 28
end local 17 // int hsh
end local 16 // int hash
end local 15 // int next
end local 14 // int idx
end local 13 // int prevBk
end local 12 // int bk
end local 11 // int cp
end local 10 // int cpOff
end local 9 // int nameOff
end local 8 // byte[] ba
end local 7 // int cpEnd
end local 6 // int cpNum
end local 5 // int bkNum
end local 4 // int total
52: .line 109
aload 3 /* dis */
ifnull 60
aload 3 /* dis */
invokevirtual java.io.DataInputStream.close:()V
goto 60
StackMap locals: java.lang.CharacterName java.lang.Throwable java.lang.Throwable java.io.DataInputStream
StackMap stack: java.lang.Throwable
53: astore 1
aload 3 /* dis */
ifnull 54
aload 3 /* dis */
invokevirtual java.io.DataInputStream.close:()V
end local 3 // java.io.DataInputStream dis
StackMap locals:
StackMap stack:
54: aload 1
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
55: astore 2
aload 1
ifnonnull 56
aload 2
astore 1
goto 57
StackMap locals:
StackMap stack:
56: aload 1
aload 2
if_acmpeq 57
aload 1
aload 2
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
57: aload 1
athrow
StackMap locals: java.lang.CharacterName
StackMap stack: java.lang.Exception
58: astore 1 /* x */
start local 1 // java.lang.Exception x
59: .line 110
new java.lang.InternalError
dup
aload 1 /* x */
invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
aload 1 /* x */
invokespecial java.lang.InternalError.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 1 // java.lang.Exception x
60: .line 112
StackMap locals:
StackMap stack:
return
end local 0 // java.lang.CharacterName this
LocalVariableTable:
Start End Slot Name Signature
0 61 0 this Ljava/lang/CharacterName;
5 54 3 dis Ljava/io/DataInputStream;
6 52 4 total I
7 52 5 bkNum I
8 52 6 cpNum I
9 52 7 cpEnd I
10 52 8 ba [B
20 52 9 nameOff I
21 52 10 cpOff I
22 52 11 cp I
23 52 12 bk I
24 52 13 prevBk I
25 52 14 idx I
26 52 15 next I
27 52 16 hash I
28 52 17 hsh I
29 50 18 len I
39 50 19 hi I
59 60 1 x Ljava/lang/Exception;
Exception table:
from to target type
5 52 53 any
2 55 55 any
1 58 58 Class java.lang.Exception
private static final int hashN(byte[], int, int);
descriptor: ([BII)I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Code:
stack=3, locals=4, args_size=3
start local 0 // byte[] a
start local 1 // int off
start local 2 // int len
0: .line 115
iconst_1
istore 3 /* h */
start local 3 // int h
1: .line 116
goto 3
2: .line 117
StackMap locals: int
StackMap stack:
bipush 31
iload 3 /* h */
imul
aload 0 /* a */
iload 1 /* off */
iinc 1 /* off */ 1
baload
iadd
istore 3 /* h */
3: .line 116
StackMap locals:
StackMap stack:
iload 2 /* len */
iinc 2 /* len */ -1
ifgt 2
4: .line 119
iload 3 /* h */
ireturn
end local 3 // int h
end local 2 // int len
end local 1 // int off
end local 0 // byte[] a
LocalVariableTable:
Start End Slot Name Signature
0 5 0 a [B
0 5 1 off I
0 5 2 len I
1 5 3 h I
MethodParameters:
Name Flags
a
off
len
private int addCp(int, int, int, int);
descriptor: (IIII)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=5, args_size=5
start local 0 // java.lang.CharacterName this
start local 1 // int idx
start local 2 // int hash
start local 3 // int next
start local 4 // int cp
0: .line 123
aload 0 /* this */
getfield java.lang.CharacterName.cpEntries:[I
iload 1 /* idx */
iinc 1 /* idx */ 1
iload 2 /* hash */
iastore
1: .line 124
aload 0 /* this */
getfield java.lang.CharacterName.cpEntries:[I
iload 1 /* idx */
iinc 1 /* idx */ 1
iload 3 /* next */
iastore
2: .line 125
aload 0 /* this */
getfield java.lang.CharacterName.cpEntries:[I
iload 1 /* idx */
iinc 1 /* idx */ 1
iload 4 /* cp */
iastore
3: .line 126
iload 1 /* idx */
ireturn
end local 4 // int cp
end local 3 // int next
end local 2 // int hash
end local 1 // int idx
end local 0 // java.lang.CharacterName this
LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljava/lang/CharacterName;
0 4 1 idx I
0 4 2 hash I
0 4 3 next I
0 4 4 cp I
MethodParameters:
Name Flags
idx
hash
next
cp
private int getCpHash(int);
descriptor: (I)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 // java.lang.CharacterName this
start local 1 // int idx
0: .line 129
aload 0 /* this */
getfield java.lang.CharacterName.cpEntries:[I
iload 1 /* idx */
iaload
ireturn
end local 1 // int idx
end local 0 // java.lang.CharacterName this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/lang/CharacterName;
0 1 1 idx I
MethodParameters:
Name Flags
idx
private int getCpNext(int);
descriptor: (I)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 // java.lang.CharacterName this
start local 1 // int idx
0: .line 130
aload 0 /* this */
getfield java.lang.CharacterName.cpEntries:[I
iload 1 /* idx */
iconst_1
iadd
iaload
ireturn
end local 1 // int idx
end local 0 // java.lang.CharacterName this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/lang/CharacterName;
0 1 1 idx I
MethodParameters:
Name Flags
idx
private int getCp(int);
descriptor: (I)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 // java.lang.CharacterName this
start local 1 // int idx
0: .line 131
aload 0 /* this */
getfield java.lang.CharacterName.cpEntries:[I
iload 1 /* idx */
iconst_2
iadd
iaload
ireturn
end local 1 // int idx
end local 0 // java.lang.CharacterName this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/lang/CharacterName;
0 1 1 idx I
MethodParameters:
Name Flags
idx
public static java.lang.CharacterName getInstance();
descriptor: ()Ljava/lang/CharacterName;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=2, args_size=0
0: .line 134
getstatic java.lang.CharacterName.refCharName:Ljava/lang/ref/SoftReference;
astore 0 /* ref */
start local 0 // java.lang.ref.SoftReference ref
1: .line 135
aconst_null
astore 1 /* cname */
start local 1 // java.lang.CharacterName cname
2: .line 136
aload 0 /* ref */
ifnull 3
aload 0 /* ref */
invokevirtual java.lang.ref.SoftReference.get:()Ljava/lang/Object;
checkcast java.lang.CharacterName
dup
astore 1 /* cname */
ifnonnull 5
3: .line 137
StackMap locals: java.lang.ref.SoftReference java.lang.CharacterName
StackMap stack:
new java.lang.CharacterName
dup
invokespecial java.lang.CharacterName.<init>:()V
astore 1 /* cname */
4: .line 138
new java.lang.ref.SoftReference
dup
aload 1 /* cname */
invokespecial java.lang.ref.SoftReference.<init>:(Ljava/lang/Object;)V
putstatic java.lang.CharacterName.refCharName:Ljava/lang/ref/SoftReference;
5: .line 140
StackMap locals:
StackMap stack:
aload 1 /* cname */
areturn
end local 1 // java.lang.CharacterName cname
end local 0 // java.lang.ref.SoftReference ref
LocalVariableTable:
Start End Slot Name Signature
1 6 0 ref Ljava/lang/ref/SoftReference<Ljava/lang/CharacterName;>;
2 6 1 cname Ljava/lang/CharacterName;
public java.lang.String getName(int);
descriptor: (I)Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=5, args_size=2
start local 0 // java.lang.CharacterName this
start local 1 // int cp
0: .line 144
iconst_0
istore 2 /* off */
start local 2 // int off
1: .line 145
aload 0 /* this */
getfield java.lang.CharacterName.bkIndices:[I
iload 1 /* cp */
bipush 8
ishr
iaload
istore 3 /* bk */
start local 3 // int bk
2: .line 146
iload 3 /* bk */
iconst_m1
if_icmpeq 3
aload 0 /* this */
getfield java.lang.CharacterName.lookup:[I
iload 3 /* bk */
bipush 8
ishl
iload 1 /* cp */
sipush 255
iand
iadd
iaload
dup
istore 2 /* off */
ifne 4
3: .line 147
StackMap locals: int int
StackMap stack:
aconst_null
areturn
4: .line 149
StackMap locals:
StackMap stack:
new java.lang.String
dup
aload 0 /* this */
getfield java.lang.CharacterName.strPool:[B
iconst_0
iload 2 /* off */
bipush 8
iushr
iload 2 /* off */
sipush 255
iand
invokespecial java.lang.String.<init>:([BIII)V
astore 4 /* result */
start local 4 // java.lang.String result
5: .line 150
aload 4 /* result */
areturn
end local 4 // java.lang.String result
end local 3 // int bk
end local 2 // int off
end local 1 // int cp
end local 0 // java.lang.CharacterName this
LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Ljava/lang/CharacterName;
0 6 1 cp I
1 6 2 off I
2 6 3 bk I
5 6 4 result Ljava/lang/String;
MethodParameters:
Name Flags
cp
public int getCodePoint(java.lang.String);
descriptor: (Ljava/lang/String;)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=10, args_size=2
start local 0 // java.lang.CharacterName this
start local 1 // java.lang.String name
0: .line 154
aload 1 /* name */
getstatic java.nio.charset.StandardCharsets.ISO_8859_1:Ljava/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
astore 2 /* bname */
start local 2 // byte[] bname
1: .line 155
aload 2 /* bname */
iconst_0
aload 2 /* bname */
arraylength
invokestatic java.lang.CharacterName.hashN:([BII)I
istore 3 /* hsh */
start local 3 // int hsh
2: .line 156
aload 0 /* this */
getfield java.lang.CharacterName.hsIndices:[I
iload 3 /* hsh */
ldc 2147483647
iand
aload 0 /* this */
getfield java.lang.CharacterName.hsIndices:[I
arraylength
irem
iaload
istore 4 /* idx */
start local 4 // int idx
3: .line 157
goto 19
4: .line 158
StackMap locals: byte[] int int
StackMap stack:
aload 0 /* this */
iload 4 /* idx */
invokevirtual java.lang.CharacterName.getCpHash:(I)I
iload 3 /* hsh */
if_icmpne 18
5: .line 159
aload 0 /* this */
iload 4 /* idx */
invokevirtual java.lang.CharacterName.getCp:(I)I
istore 5 /* cp */
start local 5 // int cp
6: .line 160
iconst_m1
istore 6 /* off */
start local 6 // int off
7: .line 161
aload 0 /* this */
getfield java.lang.CharacterName.bkIndices:[I
iload 5 /* cp */
bipush 8
ishr
iaload
istore 7 /* bk */
start local 7 // int bk
8: .line 162
iload 7 /* bk */
iconst_m1
if_icmpeq 18
aload 0 /* this */
getfield java.lang.CharacterName.lookup:[I
iload 7 /* bk */
bipush 8
ishl
iload 5 /* cp */
sipush 255
iand
iadd
iaload
dup
istore 6 /* off */
ifeq 18
9: .line 163
iload 6 /* off */
sipush 255
iand
istore 8 /* len */
start local 8 // int len
10: .line 164
iload 6 /* off */
bipush 8
iushr
istore 6 /* off */
11: .line 165
aload 2 /* bname */
arraylength
iload 8 /* len */
if_icmpne 18
12: .line 166
iconst_0
istore 9 /* i */
start local 9 // int i
13: .line 167
goto 15
14: .line 168
StackMap locals: java.lang.CharacterName java.lang.String byte[] int int int int int int int
StackMap stack:
iinc 9 /* i */ 1
15: .line 167
StackMap locals:
StackMap stack:
iload 9 /* i */
iload 8 /* len */
if_icmpge 16
aload 2 /* bname */
iload 9 /* i */
baload
aload 0 /* this */
getfield java.lang.CharacterName.strPool:[B
iload 6 /* off */
iinc 6 /* off */ 1
baload
if_icmpeq 14
16: .line 170
StackMap locals:
StackMap stack:
iload 9 /* i */
iload 8 /* len */
if_icmpne 18
17: .line 171
iload 5 /* cp */
ireturn
end local 9 // int i
end local 8 // int len
end local 7 // int bk
end local 6 // int off
end local 5 // int cp
18: .line 176
StackMap locals: java.lang.CharacterName java.lang.String byte[] int int
StackMap stack:
aload 0 /* this */
iload 4 /* idx */
invokevirtual java.lang.CharacterName.getCpNext:(I)I
istore 4 /* idx */
19: .line 157
StackMap locals:
StackMap stack:
iload 4 /* idx */
iconst_m1
if_icmpne 4
20: .line 178
iconst_m1
ireturn
end local 4 // int idx
end local 3 // int hsh
end local 2 // byte[] bname
end local 1 // java.lang.String name
end local 0 // java.lang.CharacterName this
LocalVariableTable:
Start End Slot Name Signature
0 21 0 this Ljava/lang/CharacterName;
0 21 1 name Ljava/lang/String;
1 21 2 bname [B
2 21 3 hsh I
3 21 4 idx I
6 18 5 cp I
7 18 6 off I
8 18 7 bk I
10 18 8 len I
13 18 9 i I
MethodParameters:
Name Flags
name
}
SourceFile: "CharacterName.java"
NestMembers:
java.lang.CharacterName$1
InnerClasses:
java.lang.CharacterName$1