public class sun.io.CharToByteGB18030 extends sun.io.CharToByteConverter
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: sun.io.CharToByteGB18030
super_class: sun.io.CharToByteConverter
{
private char highHalfZoneCode;
descriptor: C
flags: (0x0002) ACC_PRIVATE
boolean flushed;
descriptor: Z
flags: (0x0000)
private static final int GB18030_SINGLE_BYTE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1
private static final int GB18030_DOUBLE_BYTE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 2
private static final int GB18030_FOUR_BYTE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 3
private static short[] index1;
descriptor: [S
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private static java.lang.String[] index2;
descriptor: [Ljava/lang/String;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private int currentState;
descriptor: I
flags: (0x0002) ACC_PRIVATE
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=1
start local 0 // sun.io.CharToByteGB18030 this
0: .line 45
aload 0 /* this */
invokespecial sun.io.CharToByteConverter.<init>:()V
1: .line 36
aload 0 /* this */
iconst_1
putfield sun.io.CharToByteGB18030.flushed:Z
2: .line 46
new sun.nio.cs.ext.GB18030
dup
invokespecial sun.nio.cs.ext.GB18030.<init>:()V
astore 1 /* nioCoder */
start local 1 // sun.nio.cs.ext.GB18030 nioCoder
3: .line 47
aload 0 /* this */
iconst_2
putfield sun.io.CharToByteGB18030.currentState:I
4: .line 48
aload 0 /* this */
iconst_1
newarray 8
putfield sun.io.CharToByteGB18030.subBytes:[B
5: .line 49
aload 0 /* this */
getfield sun.io.CharToByteGB18030.subBytes:[B
iconst_0
bipush 63
bastore
6: .line 50
aload 1 /* nioCoder */
invokevirtual sun.nio.cs.ext.GB18030.getEncoderIndex1:()[S
putstatic sun.io.CharToByteGB18030.index1:[S
7: .line 51
aload 1 /* nioCoder */
invokevirtual sun.nio.cs.ext.GB18030.getEncoderIndex2:()[Ljava/lang/String;
putstatic sun.io.CharToByteGB18030.index2:[Ljava/lang/String;
8: .line 52
return
end local 1 // sun.nio.cs.ext.GB18030 nioCoder
end local 0 // sun.io.CharToByteGB18030 this
LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lsun/io/CharToByteGB18030;
3 9 1 nioCoder Lsun/nio/cs/ext/GB18030;
public int flush(byte[], int, int);
descriptor: ([BII)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=4, args_size=4
start local 0 // sun.io.CharToByteGB18030 this
start local 1 // byte[] output
start local 2 // int outStart
start local 3 // int outEnd
0: .line 57
aload 0 /* this */
getfield sun.io.CharToByteGB18030.highHalfZoneCode:C
ifeq 4
1: .line 58
aload 0 /* this */
iconst_0
putfield sun.io.CharToByteGB18030.highHalfZoneCode:C
2: .line 59
aload 0 /* this */
iconst_0
putfield sun.io.CharToByteGB18030.badInputLength:I
3: .line 60
new sun.io.MalformedInputException
dup
invokespecial sun.io.MalformedInputException.<init>:()V
athrow
4: .line 62
StackMap locals:
StackMap stack:
aload 0 /* this */
invokevirtual sun.io.CharToByteGB18030.reset:()V
5: .line 63
aload 0 /* this */
iconst_1
putfield sun.io.CharToByteGB18030.flushed:Z
6: .line 64
iconst_0
ireturn
end local 3 // int outEnd
end local 2 // int outStart
end local 1 // byte[] output
end local 0 // sun.io.CharToByteGB18030 this
LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lsun/io/CharToByteGB18030;
0 7 1 output [B
0 7 2 outStart I
0 7 3 outEnd I
Exceptions:
throws sun.io.MalformedInputException
MethodParameters:
Name Flags
output
outStart
outEnd
public void reset();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=1, args_size=1
start local 0 // sun.io.CharToByteGB18030 this
0: .line 68
aload 0 /* this */
aload 0 /* this */
iconst_0
dup_x1
putfield sun.io.CharToByteGB18030.charOff:I
putfield sun.io.CharToByteGB18030.byteOff:I
1: .line 69
aload 0 /* this */
iconst_2
putfield sun.io.CharToByteGB18030.currentState:I
2: .line 70
return
end local 0 // sun.io.CharToByteGB18030 this
LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/io/CharToByteGB18030;
public boolean canConvert(char);
descriptor: (C)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 // sun.io.CharToByteGB18030 this
start local 1 // char c
0: .line 76
iload 1 /* c */
ldc 55296
if_icmplt 1
iload 1 /* c */
ldc 57343
if_icmple 2
StackMap locals:
StackMap stack:
1: iload 1 /* c */
ldc 65534
if_icmplt 3
2: .line 77
StackMap locals:
StackMap stack:
iconst_0
ireturn
3: .line 79
StackMap locals:
StackMap stack:
iconst_1
ireturn
end local 1 // char c
end local 0 // sun.io.CharToByteGB18030 this
LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/io/CharToByteGB18030;
0 4 1 c C
MethodParameters:
Name Flags
c
public int convert(char[], int, int, byte[], int, int);
descriptor: ([CII[BII)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=15, args_size=7
start local 0 // sun.io.CharToByteGB18030 this
start local 1 // char[] input
start local 2 // int inOff
start local 3 // int inEnd
start local 4 // byte[] output
start local 5 // int outOff
start local 6 // int outEnd
0: .line 90
iconst_0
istore 7 /* linearDiffValue */
start local 7 // int linearDiffValue
1: .line 91
iconst_0
istore 8 /* hiByte */
start local 8 // int hiByte
2: iconst_0
istore 9 /* loByte */
start local 9 // int loByte
3: .line 93
aload 0 /* this */
iload 2 /* inOff */
putfield sun.io.CharToByteGB18030.charOff:I
4: .line 94
aload 0 /* this */
iload 5 /* outOff */
putfield sun.io.CharToByteGB18030.byteOff:I
5: .line 98
aload 0 /* this */
iconst_0
putfield sun.io.CharToByteGB18030.flushed:Z
6: .line 100
aload 0 /* this */
getfield sun.io.CharToByteGB18030.highHalfZoneCode:C
ifeq 93
7: .line 101
aload 1 /* input */
iload 2 /* inOff */
caload
ldc 56320
if_icmplt 17
aload 1 /* input */
iload 2 /* inOff */
caload
ldc 57343
if_icmpgt 17
8: .line 106
iload 3 /* inEnd */
iload 2 /* inOff */
isub
iconst_1
iadd
newarray 5
astore 11 /* newBuf */
start local 11 // char[] newBuf
9: .line 107
aload 11 /* newBuf */
iconst_0
aload 0 /* this */
getfield sun.io.CharToByteGB18030.highHalfZoneCode:C
castore
10: .line 108
aload 1 /* input */
iload 2 /* inOff */
aload 11 /* newBuf */
iconst_1
iload 3 /* inEnd */
iload 2 /* inOff */
isub
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
11: .line 109
aload 0 /* this */
dup
getfield sun.io.CharToByteGB18030.charOff:I
iconst_1
isub
putfield sun.io.CharToByteGB18030.charOff:I
12: .line 110
aload 11 /* newBuf */
astore 1 /* input */
13: .line 111
iconst_0
istore 2 /* inOff */
14: .line 112
aload 11 /* newBuf */
arraylength
istore 3 /* inEnd */
15: .line 113
aload 0 /* this */
iconst_0
putfield sun.io.CharToByteGB18030.highHalfZoneCode:C
end local 11 // char[] newBuf
16: .line 114
goto 93
17: .line 116
StackMap locals: int int int
StackMap stack:
aload 0 /* this */
iconst_0
putfield sun.io.CharToByteGB18030.badInputLength:I
18: .line 117
new sun.io.MalformedInputException
dup
invokespecial sun.io.MalformedInputException.<init>:()V
athrow
19: .line 124
StackMap locals:
StackMap stack:
aload 1 /* input */
aload 0 /* this */
dup
getfield sun.io.CharToByteGB18030.charOff:I
dup_x1
iconst_1
iadd
putfield sun.io.CharToByteGB18030.charOff:I
caload
istore 10 /* inputChar */
start local 10 // char inputChar
20: .line 126
iload 10 /* inputChar */
ldc 55296
if_icmplt 37
iload 10 /* inputChar */
ldc 56319
if_icmpgt 37
21: .line 128
aload 0 /* this */
getfield sun.io.CharToByteGB18030.charOff:I
iconst_1
iadd
iload 3 /* inEnd */
if_icmple 24
22: .line 129
aload 0 /* this */
iload 10 /* inputChar */
putfield sun.io.CharToByteGB18030.highHalfZoneCode:C
23: .line 130
goto 94
24: .line 133
StackMap locals: int
StackMap stack:
iload 10 /* inputChar */
istore 11 /* previousChar */
start local 11 // char previousChar
25: .line 134
aload 1 /* input */
aload 0 /* this */
getfield sun.io.CharToByteGB18030.charOff:I
caload
istore 10 /* inputChar */
26: .line 137
iload 10 /* inputChar */
ldc 56320
if_icmplt 35
iload 10 /* inputChar */
ldc 57343
if_icmpgt 35
27: .line 139
aload 0 /* this */
dup
getfield sun.io.CharToByteGB18030.charOff:I
iconst_1
iadd
putfield sun.io.CharToByteGB18030.charOff:I
28: .line 140
iload 11 /* previousChar */
ldc 55296
isub
sipush 1024
imul
29: .line 141
iload 10 /* inputChar */
ldc 56320
isub
30: .line 140
iadd
31: .line 141
ldc 189000
32: .line 140
iadd
istore 7 /* linearDiffValue */
33: .line 143
aload 0 /* this */
iconst_3
putfield sun.io.CharToByteGB18030.currentState:I
34: .line 144
goto 73
35: .line 146
StackMap locals: int
StackMap stack:
aload 0 /* this */
iconst_1
putfield sun.io.CharToByteGB18030.badInputLength:I
36: .line 147
new sun.io.MalformedInputException
dup
invokespecial sun.io.MalformedInputException.<init>:()V
athrow
end local 11 // char previousChar
37: .line 151
StackMap locals:
StackMap stack:
iload 10 /* inputChar */
ldc 56320
if_icmplt 40
iload 10 /* inputChar */
ldc 57343
if_icmpgt 40
38: .line 152
aload 0 /* this */
iconst_1
putfield sun.io.CharToByteGB18030.badInputLength:I
39: .line 153
new sun.io.MalformedInputException
dup
invokespecial sun.io.MalformedInputException.<init>:()V
athrow
40: .line 157
StackMap locals:
StackMap stack:
iload 10 /* inputChar */
iflt 46
iload 10 /* inputChar */
bipush 127
if_icmpgt 46
41: .line 158
aload 0 /* this */
getfield sun.io.CharToByteGB18030.byteOff:I
iload 6 /* outEnd */
if_icmplt 43
42: .line 159
new sun.io.ConversionBufferFullException
dup
invokespecial sun.io.ConversionBufferFullException.<init>:()V
athrow
43: .line 161
StackMap locals:
StackMap stack:
aload 0 /* this */
iconst_1
putfield sun.io.CharToByteGB18030.currentState:I
44: .line 162
aload 4 /* output */
aload 0 /* this */
dup
getfield sun.io.CharToByteGB18030.byteOff:I
dup_x1
iconst_1
iadd
putfield sun.io.CharToByteGB18030.byteOff:I
iload 10 /* inputChar */
i2b
bastore
45: .line 163
goto 73
46: .line 164
StackMap locals:
StackMap stack:
iload 10 /* inputChar */
ldc 42182
if_icmple 47
iload 10 /* inputChar */
ldc 57344
if_icmplt 67
47: .line 165
StackMap locals:
StackMap stack:
aload 0 /* this */
getstatic sun.io.CharToByteGB18030.index1:[S
getstatic sun.io.CharToByteGB18030.index2:[Ljava/lang/String;
iload 10 /* inputChar */
invokevirtual sun.io.CharToByteGB18030.getGB18030:([S[Ljava/lang/String;C)I
istore 11 /* outByteVal */
start local 11 // int outByteVal
48: .line 167
iload 11 /* outByteVal */
ldc 65533
if_icmpne 56
49: .line 168
aload 0 /* this */
getfield sun.io.CharToByteGB18030.subMode:Z
ifeq 54
50: .line 169
aload 0 /* this */
getfield sun.io.CharToByteGB18030.byteOff:I
iload 6 /* outEnd */
if_icmplt 52
51: .line 170
new sun.io.ConversionBufferFullException
dup
invokespecial sun.io.ConversionBufferFullException.<init>:()V
athrow
52: .line 172
StackMap locals: int
StackMap stack:
aload 4 /* output */
aload 0 /* this */
dup
getfield sun.io.CharToByteGB18030.byteOff:I
dup_x1
iconst_1
iadd
putfield sun.io.CharToByteGB18030.byteOff:I
aload 0 /* this */
getfield sun.io.CharToByteGB18030.subBytes:[B
iconst_0
baload
bastore
53: .line 173
goto 93
54: .line 176
StackMap locals:
StackMap stack:
aload 0 /* this */
iconst_1
putfield sun.io.CharToByteGB18030.badInputLength:I
55: .line 177
new sun.io.UnknownCharacterException
dup
invokespecial sun.io.UnknownCharacterException.<init>:()V
athrow
56: .line 181
StackMap locals:
StackMap stack:
iload 11 /* outByteVal */
ldc 65280
iand
bipush 8
ishr
istore 8 /* hiByte */
57: .line 182
iload 11 /* outByteVal */
sipush 255
iand
istore 9 /* loByte */
58: .line 184
iload 8 /* hiByte */
bipush 32
isub
sipush 256
imul
iload 9 /* loByte */
iadd
istore 7 /* linearDiffValue */
59: .line 186
iload 10 /* inputChar */
ldc 57344
if_icmplt 61
iload 10 /* inputChar */
ldc 63744
if_icmpge 61
60: .line 187
iload 7 /* linearDiffValue */
ldc 33469
iadd
istore 7 /* linearDiffValue */
goto 63
61: .line 188
StackMap locals:
StackMap stack:
iload 10 /* inputChar */
ldc 63744
if_icmplt 63
62: .line 189
iload 7 /* linearDiffValue */
ldc 37801
iadd
istore 7 /* linearDiffValue */
63: .line 191
StackMap locals:
StackMap stack:
iload 8 /* hiByte */
sipush 128
if_icmple 65
64: .line 192
aload 0 /* this */
iconst_2
putfield sun.io.CharToByteGB18030.currentState:I
goto 73
65: .line 194
StackMap locals:
StackMap stack:
aload 0 /* this */
iconst_3
putfield sun.io.CharToByteGB18030.currentState:I
end local 11 // int outByteVal
66: .line 195
goto 73
67: .line 196
StackMap locals:
StackMap stack:
iload 10 /* inputChar */
ldc 42183
if_icmplt 71
iload 10 /* inputChar */
ldc 55295
if_icmpgt 71
68: .line 197
iload 10 /* inputChar */
sipush 21827
isub
istore 7 /* linearDiffValue */
69: .line 198
aload 0 /* this */
iconst_3
putfield sun.io.CharToByteGB18030.currentState:I
70: .line 199
goto 73
71: .line 201
StackMap locals:
StackMap stack:
aload 0 /* this */
iconst_1
putfield sun.io.CharToByteGB18030.badInputLength:I
72: .line 202
new sun.io.MalformedInputException
dup
invokespecial sun.io.MalformedInputException.<init>:()V
athrow
73: .line 205
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield sun.io.CharToByteGB18030.currentState:I
iconst_1
if_icmpne 75
74: .line 206
goto 93
75: .line 208
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield sun.io.CharToByteGB18030.currentState:I
iconst_2
if_icmpne 81
76: .line 209
aload 0 /* this */
getfield sun.io.CharToByteGB18030.byteOff:I
iconst_2
iadd
iload 6 /* outEnd */
if_icmple 78
77: .line 210
new sun.io.ConversionBufferFullException
dup
invokespecial sun.io.ConversionBufferFullException.<init>:()V
athrow
78: .line 212
StackMap locals:
StackMap stack:
aload 4 /* output */
aload 0 /* this */
dup
getfield sun.io.CharToByteGB18030.byteOff:I
dup_x1
iconst_1
iadd
putfield sun.io.CharToByteGB18030.byteOff:I
iload 8 /* hiByte */
i2b
bastore
79: .line 213
aload 4 /* output */
aload 0 /* this */
dup
getfield sun.io.CharToByteGB18030.byteOff:I
dup_x1
iconst_1
iadd
putfield sun.io.CharToByteGB18030.byteOff:I
iload 9 /* loByte */
i2b
bastore
80: .line 214
goto 93
81: .line 216
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield sun.io.CharToByteGB18030.byteOff:I
iconst_4
iadd
iload 6 /* outEnd */
if_icmple 83
82: .line 217
new sun.io.ConversionBufferFullException
dup
invokespecial sun.io.ConversionBufferFullException.<init>:()V
athrow
83: .line 222
StackMap locals:
StackMap stack:
iload 7 /* linearDiffValue */
bipush 10
irem
bipush 48
iadd
i2b
istore 14 /* b4 */
start local 14 // byte b4
84: .line 223
iload 7 /* linearDiffValue */
bipush 10
idiv
istore 7 /* linearDiffValue */
85: .line 224
iload 7 /* linearDiffValue */
bipush 126
irem
sipush 129
iadd
i2b
istore 13 /* b3 */
start local 13 // byte b3
86: .line 225
iload 7 /* linearDiffValue */
bipush 126
idiv
istore 7 /* linearDiffValue */
87: .line 226
iload 7 /* linearDiffValue */
bipush 10
irem
bipush 48
iadd
i2b
istore 12 /* b2 */
start local 12 // byte b2
88: .line 227
iload 7 /* linearDiffValue */
bipush 10
idiv
sipush 129
iadd
i2b
istore 11 /* b1 */
start local 11 // byte b1
89: .line 228
aload 4 /* output */
aload 0 /* this */
dup
getfield sun.io.CharToByteGB18030.byteOff:I
dup_x1
iconst_1
iadd
putfield sun.io.CharToByteGB18030.byteOff:I
iload 11 /* b1 */
bastore
90: .line 229
aload 4 /* output */
aload 0 /* this */
dup
getfield sun.io.CharToByteGB18030.byteOff:I
dup_x1
iconst_1
iadd
putfield sun.io.CharToByteGB18030.byteOff:I
iload 12 /* b2 */
bastore
91: .line 230
aload 4 /* output */
aload 0 /* this */
dup
getfield sun.io.CharToByteGB18030.byteOff:I
dup_x1
iconst_1
iadd
putfield sun.io.CharToByteGB18030.byteOff:I
iload 13 /* b3 */
bastore
92: .line 231
aload 4 /* output */
aload 0 /* this */
dup
getfield sun.io.CharToByteGB18030.byteOff:I
dup_x1
iconst_1
iadd
putfield sun.io.CharToByteGB18030.byteOff:I
iload 14 /* b4 */
bastore
end local 14 // byte b4
end local 13 // byte b3
end local 12 // byte b2
end local 11 // byte b1
end local 10 // char inputChar
93: .line 123
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield sun.io.CharToByteGB18030.charOff:I
iload 3 /* inEnd */
if_icmplt 19
94: .line 235
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield sun.io.CharToByteGB18030.byteOff:I
iload 5 /* outOff */
isub
ireturn
end local 9 // int loByte
end local 8 // int hiByte
end local 7 // int linearDiffValue
end local 6 // int outEnd
end local 5 // int outOff
end local 4 // byte[] output
end local 3 // int inEnd
end local 2 // int inOff
end local 1 // char[] input
end local 0 // sun.io.CharToByteGB18030 this
LocalVariableTable:
Start End Slot Name Signature
0 95 0 this Lsun/io/CharToByteGB18030;
0 95 1 input [C
0 95 2 inOff I
0 95 3 inEnd I
0 95 4 output [B
0 95 5 outOff I
0 95 6 outEnd I
1 95 7 linearDiffValue I
2 95 8 hiByte I
3 95 9 loByte I
20 93 10 inputChar C
9 16 11 newBuf [C
25 37 11 previousChar C
48 66 11 outByteVal I
89 93 11 b1 B
88 93 12 b2 B
86 93 13 b3 B
84 93 14 b4 B
Exceptions:
throws sun.io.UnknownCharacterException, sun.io.MalformedInputException, sun.io.ConversionBufferFullException
MethodParameters:
Name Flags
input
inOff
inEnd
output
outOff
outEnd
public int getMaxBytesPerChar();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 // sun.io.CharToByteGB18030 this
0: .line 243
iconst_4
ireturn
end local 0 // sun.io.CharToByteGB18030 this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/io/CharToByteGB18030;
public java.lang.String getCharacterEncoding();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 // sun.io.CharToByteGB18030 this
0: .line 251
ldc "GB18030"
areturn
end local 0 // sun.io.CharToByteGB18030 this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/io/CharToByteGB18030;
private int getGB18030(short[], java.lang.String[], char);
descriptor: ([S[Ljava/lang/String;C)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=5, args_size=4
start local 0 // sun.io.CharToByteGB18030 this
start local 1 // short[] outerIndex
start local 2 // java.lang.String[] innerIndex
start local 3 // char ch
0: .line 255
aload 1 /* outerIndex */
iload 3 /* ch */
ldc 65280
iand
bipush 8
ishr
saload
bipush 8
ishl
istore 4 /* offset */
start local 4 // int offset
1: .line 257
aload 2 /* innerIndex */
iload 4 /* offset */
bipush 12
ishr
aaload
iload 4 /* offset */
sipush 4095
iand
iload 3 /* ch */
sipush 255
iand
iadd
invokevirtual java.lang.String.charAt:(I)C
ireturn
end local 4 // int offset
end local 3 // char ch
end local 2 // java.lang.String[] innerIndex
end local 1 // short[] outerIndex
end local 0 // sun.io.CharToByteGB18030 this
LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/io/CharToByteGB18030;
0 2 1 outerIndex [S
0 2 2 innerIndex [Ljava/lang/String;
0 2 3 ch C
1 2 4 offset I
MethodParameters:
Name Flags
outerIndex
innerIndex
ch
}
SourceFile: "CharToByteGB18030.java"