class sun.font.CMap$CMapFormat4 extends sun.font.CMap
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: sun.font.CMap$CMapFormat4
super_class: sun.font.CMap
{
int segCount;
descriptor: I
flags: (0x0000)
int entrySelector;
descriptor: I
flags: (0x0000)
int rangeShift;
descriptor: I
flags: (0x0000)
char[] endCount;
descriptor: [C
flags: (0x0000)
char[] startCount;
descriptor: [C
flags: (0x0000)
short[] idDelta;
descriptor: [S
flags: (0x0000)
char[] idRangeOffset;
descriptor: [C
flags: (0x0000)
char[] glyphIds;
descriptor: [C
flags: (0x0000)
void <init>(java.nio.ByteBuffer, int, char[]);
descriptor: (Ljava/nio/ByteBuffer;I[C)V
flags: (0x0000)
Code:
stack=4, locals=9, args_size=4
start local 0 // sun.font.CMap$CMapFormat4 this
start local 1 // java.nio.ByteBuffer bbuffer
start local 2 // int offset
start local 3 // char[] xlat
0: .line 494
aload 0 /* this */
invokespecial sun.font.CMap.<init>:()V
1: .line 496
aload 0 /* this */
aload 3 /* xlat */
putfield sun.font.CMap$CMapFormat4.xlat:[C
2: .line 498
aload 1 /* bbuffer */
iload 2 /* offset */
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
3: .line 499
aload 1 /* bbuffer */
invokevirtual java.nio.ByteBuffer.asCharBuffer:()Ljava/nio/CharBuffer;
astore 4 /* buffer */
start local 4 // java.nio.CharBuffer buffer
4: .line 500
aload 4 /* buffer */
invokevirtual java.nio.CharBuffer.get:()C
pop
5: .line 501
aload 4 /* buffer */
invokevirtual java.nio.CharBuffer.get:()C
istore 5 /* subtableLength */
start local 5 // int subtableLength
6: .line 510
iload 2 /* offset */
iload 5 /* subtableLength */
iadd
aload 1 /* bbuffer */
invokevirtual java.nio.ByteBuffer.capacity:()I
if_icmple 8
7: .line 511
aload 1 /* bbuffer */
invokevirtual java.nio.ByteBuffer.capacity:()I
iload 2 /* offset */
isub
istore 5 /* subtableLength */
8: .line 513
StackMap locals: sun.font.CMap$CMapFormat4 java.nio.ByteBuffer int char[] java.nio.CharBuffer int
StackMap stack:
aload 4 /* buffer */
invokevirtual java.nio.CharBuffer.get:()C
pop
9: .line 514
aload 0 /* this */
aload 4 /* buffer */
invokevirtual java.nio.CharBuffer.get:()C
iconst_2
idiv
putfield sun.font.CMap$CMapFormat4.segCount:I
10: .line 515
aload 4 /* buffer */
invokevirtual java.nio.CharBuffer.get:()C
pop
11: .line 516
aload 0 /* this */
aload 4 /* buffer */
invokevirtual java.nio.CharBuffer.get:()C
putfield sun.font.CMap$CMapFormat4.entrySelector:I
12: .line 517
aload 0 /* this */
aload 4 /* buffer */
invokevirtual java.nio.CharBuffer.get:()C
iconst_2
idiv
putfield sun.font.CMap$CMapFormat4.rangeShift:I
13: .line 518
aload 0 /* this */
aload 0 /* this */
getfield sun.font.CMap$CMapFormat4.segCount:I
newarray 5
putfield sun.font.CMap$CMapFormat4.startCount:[C
14: .line 519
aload 0 /* this */
aload 0 /* this */
getfield sun.font.CMap$CMapFormat4.segCount:I
newarray 5
putfield sun.font.CMap$CMapFormat4.endCount:[C
15: .line 520
aload 0 /* this */
aload 0 /* this */
getfield sun.font.CMap$CMapFormat4.segCount:I
newarray 9
putfield sun.font.CMap$CMapFormat4.idDelta:[S
16: .line 521
aload 0 /* this */
aload 0 /* this */
getfield sun.font.CMap$CMapFormat4.segCount:I
newarray 5
putfield sun.font.CMap$CMapFormat4.idRangeOffset:[C
17: .line 523
iconst_0
istore 6 /* i */
start local 6 // int i
18: goto 21
19: .line 524
StackMap locals: int
StackMap stack:
aload 0 /* this */
getfield sun.font.CMap$CMapFormat4.endCount:[C
iload 6 /* i */
aload 4 /* buffer */
invokevirtual java.nio.CharBuffer.get:()C
castore
20: .line 523
iinc 6 /* i */ 1
StackMap locals:
StackMap stack:
21: iload 6 /* i */
aload 0 /* this */
getfield sun.font.CMap$CMapFormat4.segCount:I
if_icmplt 19
end local 6 // int i
22: .line 526
aload 4 /* buffer */
invokevirtual java.nio.CharBuffer.get:()C
pop
23: .line 527
iconst_0
istore 6 /* i */
start local 6 // int i
24: goto 27
25: .line 528
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield sun.font.CMap$CMapFormat4.startCount:[C
iload 6 /* i */
aload 4 /* buffer */
invokevirtual java.nio.CharBuffer.get:()C
castore
26: .line 527
iinc 6 /* i */ 1
StackMap locals:
StackMap stack:
27: iload 6 /* i */
aload 0 /* this */
getfield sun.font.CMap$CMapFormat4.segCount:I
if_icmplt 25
end local 6 // int i
28: .line 531
iconst_0
istore 6 /* i */
start local 6 // int i
29: goto 32
30: .line 532
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield sun.font.CMap$CMapFormat4.idDelta:[S
iload 6 /* i */
aload 4 /* buffer */
invokevirtual java.nio.CharBuffer.get:()C
i2s
sastore
31: .line 531
iinc 6 /* i */ 1
StackMap locals:
StackMap stack:
32: iload 6 /* i */
aload 0 /* this */
getfield sun.font.CMap$CMapFormat4.segCount:I
if_icmplt 30
end local 6 // int i
33: .line 535
iconst_0
istore 6 /* i */
start local 6 // int i
34: goto 38
35: .line 536
StackMap locals:
StackMap stack:
aload 4 /* buffer */
invokevirtual java.nio.CharBuffer.get:()C
istore 7 /* ctmp */
start local 7 // char ctmp
36: .line 537
aload 0 /* this */
getfield sun.font.CMap$CMapFormat4.idRangeOffset:[C
iload 6 /* i */
iload 7 /* ctmp */
iconst_1
ishr
ldc 65535
iand
i2c
castore
end local 7 // char ctmp
37: .line 535
iinc 6 /* i */ 1
StackMap locals:
StackMap stack:
38: iload 6 /* i */
aload 0 /* this */
getfield sun.font.CMap$CMapFormat4.segCount:I
if_icmplt 35
end local 6 // int i
39: .line 542
aload 0 /* this */
getfield sun.font.CMap$CMapFormat4.segCount:I
bipush 8
imul
bipush 16
iadd
iconst_2
idiv
istore 6 /* pos */
start local 6 // int pos
40: .line 543
aload 4 /* buffer */
iload 6 /* pos */
invokevirtual java.nio.CharBuffer.position:(I)Ljava/nio/CharBuffer;
pop
41: .line 544
iload 5 /* subtableLength */
iconst_2
idiv
iload 6 /* pos */
isub
istore 7 /* numGlyphIds */
start local 7 // int numGlyphIds
42: .line 545
aload 0 /* this */
iload 7 /* numGlyphIds */
newarray 5
putfield sun.font.CMap$CMapFormat4.glyphIds:[C
43: .line 546
iconst_0
istore 8 /* i */
start local 8 // int i
44: goto 47
45: .line 547
StackMap locals: int int
StackMap stack:
aload 0 /* this */
getfield sun.font.CMap$CMapFormat4.glyphIds:[C
iload 8 /* i */
aload 4 /* buffer */
invokevirtual java.nio.CharBuffer.get:()C
castore
46: .line 546
iinc 8 /* i */ 1
StackMap locals:
StackMap stack:
47: iload 8 /* i */
iload 7 /* numGlyphIds */
if_icmplt 45
end local 8 // int i
48: .line 565
return
end local 7 // int numGlyphIds
end local 6 // int pos
end local 5 // int subtableLength
end local 4 // java.nio.CharBuffer buffer
end local 3 // char[] xlat
end local 2 // int offset
end local 1 // java.nio.ByteBuffer bbuffer
end local 0 // sun.font.CMap$CMapFormat4 this
LocalVariableTable:
Start End Slot Name Signature
0 49 0 this Lsun/font/CMap$CMapFormat4;
0 49 1 bbuffer Ljava/nio/ByteBuffer;
0 49 2 offset I
0 49 3 xlat [C
4 49 4 buffer Ljava/nio/CharBuffer;
6 49 5 subtableLength I
18 22 6 i I
24 28 6 i I
29 33 6 i I
34 39 6 i I
36 37 7 ctmp C
40 49 6 pos I
42 49 7 numGlyphIds I
44 48 8 i I
MethodParameters:
Name Flags
bbuffer
offset
xlat
char getGlyph(int);
descriptor: (I)C
flags: (0x0000)
Code:
stack=4, locals=10, args_size=2
start local 0 // sun.font.CMap$CMapFormat4 this
start local 1 // int charCode
0: .line 569
iload 1 /* charCode */
istore 2 /* origCharCode */
start local 2 // int origCharCode
1: .line 570
iconst_0
istore 3 /* index */
start local 3 // int index
2: .line 571
iconst_0
istore 4 /* glyphCode */
start local 4 // char glyphCode
3: .line 573
aload 0 /* this */
iload 1 /* charCode */
iconst_1
invokevirtual sun.font.CMap$CMapFormat4.getControlCodeGlyph:(IZ)I
istore 5 /* controlGlyph */
start local 5 // int controlGlyph
4: .line 574
iload 5 /* controlGlyph */
iflt 6
5: .line 575
iload 5 /* controlGlyph */
i2c
ireturn
6: .line 585
StackMap locals: sun.font.CMap$CMapFormat4 int int int int int
StackMap stack:
aload 0 /* this */
getfield sun.font.CMap$CMapFormat4.xlat:[C
ifnull 8
7: .line 586
aload 0 /* this */
getfield sun.font.CMap$CMapFormat4.xlat:[C
iload 1 /* charCode */
caload
istore 1 /* charCode */
8: .line 607
StackMap locals:
StackMap stack:
iconst_0
istore 6 /* left */
start local 6 // int left
9: aload 0 /* this */
getfield sun.font.CMap$CMapFormat4.startCount:[C
arraylength
istore 7 /* right */
start local 7 // int right
10: .line 608
aload 0 /* this */
getfield sun.font.CMap$CMapFormat4.startCount:[C
arraylength
iconst_1
ishr
istore 3 /* index */
11: .line 609
goto 17
12: .line 610
StackMap locals: int int
StackMap stack:
aload 0 /* this */
getfield sun.font.CMap$CMapFormat4.endCount:[C
iload 3 /* index */
caload
iload 1 /* charCode */
if_icmpge 15
13: .line 611
iload 3 /* index */
iconst_1
iadd
istore 6 /* left */
14: .line 612
goto 16
15: .line 613
StackMap locals:
StackMap stack:
iload 3 /* index */
istore 7 /* right */
16: .line 615
StackMap locals:
StackMap stack:
iload 6 /* left */
iload 7 /* right */
iadd
iconst_1
ishr
istore 3 /* index */
17: .line 609
StackMap locals:
StackMap stack:
iload 6 /* left */
iload 7 /* right */
if_icmplt 12
18: .line 618
iload 1 /* charCode */
aload 0 /* this */
getfield sun.font.CMap$CMapFormat4.startCount:[C
iload 3 /* index */
caload
if_icmplt 29
iload 1 /* charCode */
aload 0 /* this */
getfield sun.font.CMap$CMapFormat4.endCount:[C
iload 3 /* index */
caload
if_icmpgt 29
19: .line 619
aload 0 /* this */
getfield sun.font.CMap$CMapFormat4.idRangeOffset:[C
iload 3 /* index */
caload
istore 8 /* rangeOffset */
start local 8 // int rangeOffset
20: .line 621
iload 8 /* rangeOffset */
ifne 23
21: .line 622
iload 1 /* charCode */
aload 0 /* this */
getfield sun.font.CMap$CMapFormat4.idDelta:[S
iload 3 /* index */
saload
iadd
i2c
istore 4 /* glyphCode */
22: .line 623
goto 29
23: .line 633
StackMap locals: int
StackMap stack:
iload 8 /* rangeOffset */
aload 0 /* this */
getfield sun.font.CMap$CMapFormat4.segCount:I
isub
iload 3 /* index */
iadd
24: .line 634
iload 1 /* charCode */
aload 0 /* this */
getfield sun.font.CMap$CMapFormat4.startCount:[C
iload 3 /* index */
caload
isub
25: .line 633
iadd
istore 9 /* glyphIDIndex */
start local 9 // int glyphIDIndex
26: .line 635
aload 0 /* this */
getfield sun.font.CMap$CMapFormat4.glyphIds:[C
iload 9 /* glyphIDIndex */
caload
istore 4 /* glyphCode */
27: .line 636
iload 4 /* glyphCode */
ifeq 29
28: .line 637
iload 4 /* glyphCode */
aload 0 /* this */
getfield sun.font.CMap$CMapFormat4.idDelta:[S
iload 3 /* index */
saload
iadd
i2c
istore 4 /* glyphCode */
end local 9 // int glyphIDIndex
end local 8 // int rangeOffset
29: .line 641
StackMap locals:
StackMap stack:
iload 4 /* glyphCode */
ifne 31
30: .line 642
aload 0 /* this */
iload 2 /* origCharCode */
invokevirtual sun.font.CMap$CMapFormat4.getFormatCharGlyph:(I)C
istore 4 /* glyphCode */
31: .line 644
StackMap locals:
StackMap stack:
iload 4 /* glyphCode */
ireturn
end local 7 // int right
end local 6 // int left
end local 5 // int controlGlyph
end local 4 // char glyphCode
end local 3 // int index
end local 2 // int origCharCode
end local 1 // int charCode
end local 0 // sun.font.CMap$CMapFormat4 this
LocalVariableTable:
Start End Slot Name Signature
0 32 0 this Lsun/font/CMap$CMapFormat4;
0 32 1 charCode I
1 32 2 origCharCode I
2 32 3 index I
3 32 4 glyphCode C
4 32 5 controlGlyph I
9 32 6 left I
10 32 7 right I
20 29 8 rangeOffset I
26 29 9 glyphIDIndex I
MethodParameters:
Name Flags
charCode
}
SourceFile: "CMap.java"
NestHost: sun.font.CMap
InnerClasses:
CMapFormat4 = sun.font.CMap$CMapFormat4 of sun.font.CMap