class sun.font.CCharToGlyphMapper$Cache
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: sun.font.CCharToGlyphMapper$Cache
super_class: java.lang.Object
{
private static final int FIRST_LAYER_SIZE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 256
private static final int SECOND_LAYER_SIZE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 16384
private final int[] firstLayerCache;
descriptor: [I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private sun.font.CCharToGlyphMapper$Cache$SparseBitShiftingTwoLayerArray secondLayerCache;
descriptor: Lsun/font/CCharToGlyphMapper$Cache$SparseBitShiftingTwoLayerArray;
flags: (0x0002) ACC_PRIVATE
private java.util.HashMap<java.lang.Integer, java.lang.Integer> generalCache;
descriptor: Ljava/util/HashMap;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/HashMap<Ljava/lang/Integer;Ljava/lang/Integer;>;
final sun.font.CCharToGlyphMapper this$0;
descriptor: Lsun/font/CCharToGlyphMapper;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
void <init>(sun.font.CCharToGlyphMapper);
descriptor: (Lsun/font/CCharToGlyphMapper;)V
flags: (0x0000)
Code:
stack=3, locals=2, args_size=2
start local 0 0: aload 0
aload 1
putfield sun.font.CCharToGlyphMapper$Cache.this$0:Lsun/font/CCharToGlyphMapper;
aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
sipush 256
newarray 10
putfield sun.font.CCharToGlyphMapper$Cache.firstLayerCache:[I
2: aload 0
getfield sun.font.CCharToGlyphMapper$Cache.firstLayerCache:[I
iconst_1
iconst_1
iastore
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/font/CCharToGlyphMapper$Cache;
MethodParameters:
Name Flags
this$0 final
public synchronized int get(int);
descriptor: (I)I
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: iload 1
sipush 256
if_icmpge 2
1: aload 0
getfield sun.font.CCharToGlyphMapper$Cache.firstLayerCache:[I
iload 1
iaload
ireturn
2: StackMap locals:
StackMap stack:
iload 1
sipush 16384
if_icmpge 5
3: aload 0
getfield sun.font.CCharToGlyphMapper$Cache.secondLayerCache:Lsun/font/CCharToGlyphMapper$Cache$SparseBitShiftingTwoLayerArray;
ifnonnull 4
iconst_0
ireturn
4: StackMap locals:
StackMap stack:
aload 0
getfield sun.font.CCharToGlyphMapper$Cache.secondLayerCache:Lsun/font/CCharToGlyphMapper$Cache$SparseBitShiftingTwoLayerArray;
iload 1
invokevirtual sun.font.CCharToGlyphMapper$Cache$SparseBitShiftingTwoLayerArray.get:(I)I
ireturn
5: StackMap locals:
StackMap stack:
aload 0
getfield sun.font.CCharToGlyphMapper$Cache.generalCache:Ljava/util/HashMap;
ifnonnull 6
iconst_0
ireturn
6: StackMap locals:
StackMap stack:
aload 0
getfield sun.font.CCharToGlyphMapper$Cache.generalCache:Ljava/util/HashMap;
iload 1
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokevirtual java.util.HashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.Integer
astore 2
start local 2 7: aload 2
ifnonnull 8
iconst_0
ireturn
8: StackMap locals: java.lang.Integer
StackMap stack:
aload 2
invokevirtual java.lang.Integer.intValue:()I
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lsun/font/CCharToGlyphMapper$Cache;
0 9 1 index I
7 9 2 value Ljava/lang/Integer;
MethodParameters:
Name Flags
index final
public synchronized void put(int, int);
descriptor: (II)V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=6, locals=3, args_size=3
start local 0 start local 1 start local 2 0: iload 1
sipush 256
if_icmpge 3
1: aload 0
getfield sun.font.CCharToGlyphMapper$Cache.firstLayerCache:[I
iload 1
iload 2
iastore
2: return
3: StackMap locals:
StackMap stack:
iload 1
sipush 16384
if_icmpge 8
4: aload 0
getfield sun.font.CCharToGlyphMapper$Cache.secondLayerCache:Lsun/font/CCharToGlyphMapper$Cache$SparseBitShiftingTwoLayerArray;
ifnonnull 6
5: aload 0
new sun.font.CCharToGlyphMapper$Cache$SparseBitShiftingTwoLayerArray
dup
aload 0
sipush 16384
bipush 7
invokespecial sun.font.CCharToGlyphMapper$Cache$SparseBitShiftingTwoLayerArray.<init>:(Lsun/font/CCharToGlyphMapper$Cache;II)V
putfield sun.font.CCharToGlyphMapper$Cache.secondLayerCache:Lsun/font/CCharToGlyphMapper$Cache$SparseBitShiftingTwoLayerArray;
6: StackMap locals:
StackMap stack:
aload 0
getfield sun.font.CCharToGlyphMapper$Cache.secondLayerCache:Lsun/font/CCharToGlyphMapper$Cache$SparseBitShiftingTwoLayerArray;
iload 1
iload 2
invokevirtual sun.font.CCharToGlyphMapper$Cache$SparseBitShiftingTwoLayerArray.put:(II)V
7: return
8: StackMap locals:
StackMap stack:
aload 0
getfield sun.font.CCharToGlyphMapper$Cache.generalCache:Ljava/util/HashMap;
ifnonnull 10
9: aload 0
new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
putfield sun.font.CCharToGlyphMapper$Cache.generalCache:Ljava/util/HashMap;
10: StackMap locals:
StackMap stack:
aload 0
getfield sun.font.CCharToGlyphMapper$Cache.generalCache:Ljava/util/HashMap;
iload 1
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
iload 2
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
11: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lsun/font/CCharToGlyphMapper$Cache;
0 12 1 index I
0 12 2 value I
MethodParameters:
Name Flags
index final
value final
public synchronized void get(int, char[], int[]);
descriptor: (I[C[I)V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=5, locals=12, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iconst_0
istore 4
start local 4 1: aconst_null
astore 5
start local 5 2: aconst_null
astore 6
start local 6 3: iconst_0
istore 7
start local 7 4: goto 35
5: StackMap locals: sun.font.CCharToGlyphMapper$Cache int char[] int[] int char[] int[] int
StackMap stack:
aload 2
iload 7
caload
istore 8
start local 8 6: iload 8
ldc 55296
if_icmplt 17
7: iload 8
ldc 56319
if_icmpgt 17
iload 7
iload 1
iconst_1
isub
if_icmpge 17
8: aload 2
iload 7
iconst_1
iadd
caload
istore 9
start local 9 9: iload 9
ldc 56320
if_icmplt 17
iload 9
ldc 57343
if_icmpgt 17
10: iload 8
ldc 55296
isub
sipush 1024
imul
11: iload 9
12: iadd
13: ldc 56320
14: isub
15: ldc 65536
16: iadd
istore 8
end local 9 17: StackMap locals: int
StackMap stack:
aload 0
iload 8
invokevirtual sun.font.CCharToGlyphMapper$Cache.get:(I)I
istore 9
start local 9 18: iload 9
ifeq 24
iload 9
iconst_m1
if_icmpeq 24
19: aload 3
iload 7
iload 9
iastore
20: iload 8
ldc 65536
if_icmplt 34
21: aload 3
iload 7
iconst_1
iadd
ldc 65535
iastore
22: iinc 7 1
23: goto 34
24: StackMap locals: int
StackMap stack:
aload 3
iload 7
iconst_0
iastore
25: aload 0
iload 8
iconst_m1
invokevirtual sun.font.CCharToGlyphMapper$Cache.put:(II)V
26: aload 5
ifnonnull 29
27: aload 2
arraylength
newarray 5
astore 5
28: aload 2
arraylength
newarray 10
astore 6
29: StackMap locals:
StackMap stack:
aload 5
iload 4
aload 2
iload 7
caload
castore
30: aload 6
iload 4
iload 7
iastore
31: iload 8
ldc 65536
if_icmplt 33
32: aload 5
iinc 4 1
iload 4
aload 2
iinc 7 1
iload 7
caload
castore
33: StackMap locals:
StackMap stack:
iinc 4 1
end local 9 end local 8 34: StackMap locals:
StackMap stack:
iinc 7 1
StackMap locals:
StackMap stack:
35: iload 7
iload 1
if_icmplt 5
end local 7 36: iload 4
ifne 38
37: return
38: StackMap locals:
StackMap stack:
iload 4
newarray 10
astore 7
start local 7 39: aload 0
getfield sun.font.CCharToGlyphMapper$Cache.this$0:Lsun/font/CCharToGlyphMapper;
getfield sun.font.CCharToGlyphMapper.fFont:Lsun/font/CFont;
invokevirtual sun.font.CFont.getNativeFontPtr:()J
40: iload 4
aload 5
aload 7
41: invokestatic sun.font.CCharToGlyphMapper.nativeCharsToGlyphs:(JI[C[I)V
42: iconst_0
istore 8
start local 8 43: goto 63
44: StackMap locals: int[] int
StackMap stack:
aload 6
iload 8
iaload
istore 9
start local 9 45: aload 5
iload 8
caload
istore 10
start local 10 46: iload 10
ldc 55296
if_icmplt 57
47: iload 10
ldc 56319
if_icmpgt 57
iload 8
iload 4
iconst_1
isub
if_icmpge 57
48: aload 2
iload 8
iconst_1
iadd
caload
istore 11
start local 11 49: iload 11
ldc 56320
if_icmplt 57
iload 11
ldc 57343
if_icmpgt 57
50: iload 10
ldc 55296
isub
sipush 1024
imul
51: iload 11
52: iadd
53: ldc 56320
54: isub
55: ldc 65536
56: iadd
istore 10
end local 11 57: StackMap locals: int int
StackMap stack:
aload 3
iload 9
aload 7
iload 8
iaload
iastore
58: aload 0
iload 10
aload 3
iload 9
iaload
invokevirtual sun.font.CCharToGlyphMapper$Cache.put:(II)V
59: iload 10
ldc 65536
if_icmplt 62
60: iinc 8 1
61: aload 3
iload 9
iconst_1
iadd
ldc 65535
iastore
end local 10 end local 9 62: StackMap locals:
StackMap stack:
iinc 8 1
StackMap locals:
StackMap stack:
63: iload 8
iload 4
if_icmplt 44
end local 8 64: return
end local 7 end local 6 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 65 0 this Lsun/font/CCharToGlyphMapper$Cache;
0 65 1 count I
0 65 2 indicies [C
0 65 3 values [I
1 65 4 missed I
2 65 5 unmappedChars [C
3 65 6 unmappedCharIndices [I
4 36 7 i I
6 34 8 code I
9 17 9 low C
18 34 9 value I
39 65 7 glyphCodes [I
43 64 8 m I
45 62 9 i I
46 62 10 code I
49 57 11 low C
MethodParameters:
Name Flags
count
indicies
values
}
SourceFile: "CCharToGlyphMapper.java"
NestHost: sun.font.CCharToGlyphMapper
InnerClasses:
private Cache = sun.font.CCharToGlyphMapper$Cache of sun.font.CCharToGlyphMapper
private SparseBitShiftingTwoLayerArray = sun.font.CCharToGlyphMapper$Cache$SparseBitShiftingTwoLayerArray of sun.font.CCharToGlyphMapper$Cache