public class org.apache.tomcat.util.net.IPv6Utils
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.apache.tomcat.util.net.IPv6Utils
super_class: java.lang.Object
{
private static final int MAX_NUMBER_OF_GROUPS;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 8
private static final int MAX_GROUP_LENGTH;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 4
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 // org.apache.tomcat.util.net.IPv6Utils this
0: .line 24
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
return
end local 0 // org.apache.tomcat.util.net.IPv6Utils this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/tomcat/util/net/IPv6Utils;
public static java.lang.String canonize(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/lang/String;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=19, args_size=1
start local 0 // java.lang.String ipv6Address
0: .line 49
aload 0 /* ipv6Address */
ifnonnull 2
1: .line 50
aconst_null
areturn
2: .line 54
StackMap locals:
StackMap stack:
aload 0 /* ipv6Address */
invokestatic org.apache.tomcat.util.net.IPv6Utils.mayBeIPv6Address:(Ljava/lang/String;)Z
ifne 4
3: .line 55
aload 0 /* ipv6Address */
areturn
4: .line 59
StackMap locals:
StackMap stack:
aload 0 /* ipv6Address */
invokevirtual java.lang.String.length:()I
istore 1 /* ipv6AddressLength */
start local 1 // int ipv6AddressLength
5: .line 60
aload 0 /* ipv6Address */
ldc "."
invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
ifeq 13
6: .line 63
aload 0 /* ipv6Address */
ldc ":"
invokevirtual java.lang.String.lastIndexOf:(Ljava/lang/String;)I
istore 2 /* lastColonPos */
start local 2 // int lastColonPos
7: .line 64
aload 0 /* ipv6Address */
ldc "::"
invokevirtual java.lang.String.lastIndexOf:(Ljava/lang/String;)I
istore 3 /* lastColonsPos */
start local 3 // int lastColonsPos
8: .line 65
iload 3 /* lastColonsPos */
iflt 11
iload 2 /* lastColonPos */
iload 3 /* lastColonsPos */
iconst_1
iadd
if_icmpne 11
9: .line 71
iload 2 /* lastColonPos */
iconst_1
iadd
istore 1 /* ipv6AddressLength */
10: .line 72
goto 15
11: .line 78
StackMap locals: int int int
StackMap stack:
iload 2 /* lastColonPos */
istore 1 /* ipv6AddressLength */
end local 3 // int lastColonsPos
end local 2 // int lastColonPos
12: .line 80
goto 15
StackMap locals:
StackMap stack:
13: aload 0 /* ipv6Address */
ldc "%"
invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
ifeq 15
14: .line 83
aload 0 /* ipv6Address */
ldc "%"
invokevirtual java.lang.String.lastIndexOf:(Ljava/lang/String;)I
istore 1 /* ipv6AddressLength */
15: .line 86
StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
invokespecial java.lang.StringBuilder.<init>:()V
astore 2 /* result */
start local 2 // java.lang.StringBuilder result
16: .line 87
bipush 8
iconst_4
multianewarray [[C 2
astore 3 /* groups */
start local 3 // char[][] groups
17: .line 88
iconst_0
istore 4 /* groupCounter */
start local 4 // int groupCounter
18: .line 89
iconst_0
istore 5 /* charInGroupCounter */
start local 5 // int charInGroupCounter
19: .line 92
iconst_m1
istore 6 /* zeroGroupIndex */
start local 6 // int zeroGroupIndex
20: .line 93
iconst_0
istore 7 /* zeroGroupLength */
start local 7 // int zeroGroupLength
21: .line 96
iconst_m1
istore 8 /* maxZeroGroupIndex */
start local 8 // int maxZeroGroupIndex
22: .line 97
iconst_0
istore 9 /* maxZeroGroupLength */
start local 9 // int maxZeroGroupLength
23: .line 99
iconst_1
istore 10 /* isZero */
start local 10 // boolean isZero
24: .line 100
iconst_1
istore 11 /* groupStart */
start local 11 // boolean groupStart
25: .line 107
new java.lang.StringBuilder
dup
aload 0 /* ipv6Address */
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
astore 12 /* expanded */
start local 12 // java.lang.StringBuilder expanded
26: .line 108
aload 0 /* ipv6Address */
ldc "::"
invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
istore 13 /* colonsPos */
start local 13 // int colonsPos
27: .line 109
iload 1 /* ipv6AddressLength */
istore 14 /* length */
start local 14 // int length
28: .line 110
iconst_0
istore 15 /* change */
start local 15 // int change
29: .line 112
iload 13 /* colonsPos */
iflt 52
iload 13 /* colonsPos */
iload 1 /* ipv6AddressLength */
iconst_1
isub
if_icmpge 52
30: .line 113
iconst_0
istore 16 /* colonCounter */
start local 16 // int colonCounter
31: .line 114
iconst_0
istore 17 /* i */
start local 17 // int i
32: goto 36
33: .line 115
StackMap locals: java.lang.String int java.lang.StringBuilder char[][] int int int int int int int int java.lang.StringBuilder int int int int int
StackMap stack:
aload 0 /* ipv6Address */
iload 17 /* i */
invokevirtual java.lang.String.charAt:(I)C
bipush 58
if_icmpne 35
34: .line 116
iinc 16 /* colonCounter */ 1
35: .line 114
StackMap locals:
StackMap stack:
iinc 17 /* i */ 1
StackMap locals:
StackMap stack:
36: iload 17 /* i */
iload 1 /* ipv6AddressLength */
if_icmplt 33
end local 17 // int i
37: .line 120
iload 13 /* colonsPos */
ifne 40
38: .line 121
aload 12 /* expanded */
iconst_0
ldc "0"
invokevirtual java.lang.StringBuilder.insert:(ILjava/lang/String;)Ljava/lang/StringBuilder;
pop
39: .line 122
iinc 15 /* change */ 1
40: .line 125
StackMap locals:
StackMap stack:
iconst_0
istore 17 /* i */
start local 17 // int i
41: goto 45
42: .line 126
StackMap locals: int
StackMap stack:
aload 12 /* expanded */
iload 13 /* colonsPos */
iconst_1
iadd
ldc "0:"
invokevirtual java.lang.StringBuilder.insert:(ILjava/lang/String;)Ljava/lang/StringBuilder;
pop
43: .line 127
iinc 15 /* change */ 2
44: .line 125
iinc 17 /* i */ 1
StackMap locals:
StackMap stack:
45: iload 17 /* i */
bipush 8
iload 16 /* colonCounter */
isub
if_icmplt 42
end local 17 // int i
46: .line 131
iload 13 /* colonsPos */
iload 1 /* ipv6AddressLength */
iconst_2
isub
if_icmpne 49
47: .line 132
aload 12 /* expanded */
iload 13 /* colonsPos */
iload 15 /* change */
iadd
iconst_1
iadd
bipush 48
invokevirtual java.lang.StringBuilder.setCharAt:(IC)V
48: .line 133
goto 51
49: .line 134
StackMap locals:
StackMap stack:
aload 12 /* expanded */
iload 13 /* colonsPos */
iload 15 /* change */
iadd
iconst_1
iadd
invokevirtual java.lang.StringBuilder.deleteCharAt:(I)Ljava/lang/StringBuilder;
pop
50: .line 135
iinc 15 /* change */ -1
51: .line 137
StackMap locals:
StackMap stack:
iload 14 /* length */
iload 15 /* change */
iadd
istore 14 /* length */
end local 16 // int colonCounter
52: .line 142
StackMap locals:
StackMap stack:
iconst_0
istore 16 /* charCounter */
start local 16 // int charCounter
53: goto 80
54: .line 143
StackMap locals: int
StackMap stack:
aload 12 /* expanded */
iload 16 /* charCounter */
invokevirtual java.lang.StringBuilder.charAt:(I)C
istore 17 /* c */
start local 17 // char c
55: .line 144
iload 17 /* c */
bipush 65
if_icmplt 57
iload 17 /* c */
bipush 70
if_icmpgt 57
56: .line 145
iload 17 /* c */
bipush 32
iadd
i2c
istore 17 /* c */
57: .line 147
StackMap locals: int
StackMap stack:
iload 17 /* c */
bipush 58
if_icmpeq 64
58: .line 148
aload 3 /* groups */
iload 4 /* groupCounter */
aaload
iload 5 /* charInGroupCounter */
iload 17 /* c */
castore
59: .line 149
iload 11 /* groupStart */
ifeq 60
iload 17 /* c */
bipush 48
if_icmpeq 62
60: .line 150
StackMap locals:
StackMap stack:
iinc 5 /* charInGroupCounter */ 1
61: .line 151
iconst_0
istore 11 /* groupStart */
62: .line 153
StackMap locals:
StackMap stack:
iload 17 /* c */
bipush 48
if_icmpeq 64
63: .line 154
iconst_0
istore 10 /* isZero */
64: .line 157
StackMap locals:
StackMap stack:
iload 17 /* c */
bipush 58
if_icmpeq 65
iload 16 /* charCounter */
iload 14 /* length */
iconst_1
isub
if_icmpne 79
65: .line 159
StackMap locals:
StackMap stack:
iload 10 /* isZero */
ifeq 69
66: .line 160
iinc 7 /* zeroGroupLength */ 1
67: .line 161
iload 6 /* zeroGroupIndex */
iconst_m1
if_icmpne 69
68: .line 162
iload 4 /* groupCounter */
istore 6 /* zeroGroupIndex */
69: .line 166
StackMap locals:
StackMap stack:
iload 10 /* isZero */
ifeq 70
iload 16 /* charCounter */
iload 14 /* length */
iconst_1
isub
if_icmpne 75
70: .line 168
StackMap locals:
StackMap stack:
iload 7 /* zeroGroupLength */
iload 9 /* maxZeroGroupLength */
if_icmple 73
71: .line 169
iload 7 /* zeroGroupLength */
istore 9 /* maxZeroGroupLength */
72: .line 170
iload 6 /* zeroGroupIndex */
istore 8 /* maxZeroGroupIndex */
73: .line 172
StackMap locals:
StackMap stack:
iconst_0
istore 7 /* zeroGroupLength */
74: .line 173
iconst_m1
istore 6 /* zeroGroupIndex */
75: .line 175
StackMap locals:
StackMap stack:
iinc 4 /* groupCounter */ 1
76: .line 176
iconst_0
istore 5 /* charInGroupCounter */
77: .line 177
iconst_1
istore 10 /* isZero */
78: .line 178
iconst_1
istore 11 /* groupStart */
end local 17 // char c
79: .line 142
StackMap locals:
StackMap stack:
iinc 16 /* charCounter */ 1
StackMap locals:
StackMap stack:
80: iload 16 /* charCounter */
iload 14 /* length */
if_icmplt 54
end local 16 // int charCounter
81: .line 182
iload 4 /* groupCounter */
istore 16 /* numberOfGroups */
start local 16 // int numberOfGroups
82: .line 185
iconst_0
istore 4 /* groupCounter */
goto 99
83: .line 186
StackMap locals:
StackMap stack:
iload 9 /* maxZeroGroupLength */
iconst_1
if_icmple 85
iload 4 /* groupCounter */
iload 8 /* maxZeroGroupIndex */
if_icmplt 85
84: .line 187
iload 4 /* groupCounter */
iload 8 /* maxZeroGroupIndex */
iload 9 /* maxZeroGroupLength */
iadd
if_icmplt 96
85: .line 188
StackMap locals:
StackMap stack:
iconst_0
istore 17 /* j */
start local 17 // int j
86: goto 90
87: .line 189
StackMap locals: int
StackMap stack:
aload 3 /* groups */
iload 4 /* groupCounter */
aaload
iload 17 /* j */
caload
ifeq 89
88: .line 190
aload 2 /* result */
aload 3 /* groups */
iload 4 /* groupCounter */
aaload
iload 17 /* j */
caload
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
89: .line 188
StackMap locals:
StackMap stack:
iinc 17 /* j */ 1
StackMap locals:
StackMap stack:
90: iload 17 /* j */
iconst_4
if_icmplt 87
end local 17 // int j
91: .line 193
iload 4 /* groupCounter */
iload 16 /* numberOfGroups */
iconst_1
isub
if_icmpge 98
92: .line 194
iload 4 /* groupCounter */
iload 8 /* maxZeroGroupIndex */
iconst_1
isub
if_icmpne 94
93: .line 195
iload 9 /* maxZeroGroupLength */
iconst_1
if_icmpgt 98
94: .line 196
StackMap locals:
StackMap stack:
aload 2 /* result */
bipush 58
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
95: .line 198
goto 98
StackMap locals:
StackMap stack:
96: iload 4 /* groupCounter */
iload 8 /* maxZeroGroupIndex */
if_icmpne 98
97: .line 199
aload 2 /* result */
ldc "::"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
98: .line 185
StackMap locals:
StackMap stack:
iinc 4 /* groupCounter */ 1
StackMap locals:
StackMap stack:
99: iload 4 /* groupCounter */
iload 16 /* numberOfGroups */
if_icmplt 83
100: .line 205
aload 2 /* result */
invokevirtual java.lang.StringBuilder.length:()I
istore 17 /* resultLength */
start local 17 // int resultLength
101: .line 206
aload 2 /* result */
iload 17 /* resultLength */
iconst_1
isub
invokevirtual java.lang.StringBuilder.charAt:(I)C
bipush 58
if_icmpne 104
iload 1 /* ipv6AddressLength */
aload 0 /* ipv6Address */
invokevirtual java.lang.String.length:()I
if_icmpge 104
102: .line 207
aload 0 /* ipv6Address */
iload 1 /* ipv6AddressLength */
invokevirtual java.lang.String.charAt:(I)C
bipush 58
if_icmpne 104
103: .line 208
aload 2 /* result */
iload 17 /* resultLength */
iconst_1
isub
iload 17 /* resultLength */
invokevirtual java.lang.StringBuilder.delete:(II)Ljava/lang/StringBuilder;
pop
104: .line 214
StackMap locals: int
StackMap stack:
iload 1 /* ipv6AddressLength */
istore 18 /* i */
start local 18 // int i
105: goto 108
106: .line 215
StackMap locals: int
StackMap stack:
aload 2 /* result */
aload 0 /* ipv6Address */
iload 18 /* i */
invokevirtual java.lang.String.charAt:(I)C
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
107: .line 214
iinc 18 /* i */ 1
StackMap locals:
StackMap stack:
108: iload 18 /* i */
aload 0 /* ipv6Address */
invokevirtual java.lang.String.length:()I
if_icmplt 106
end local 18 // int i
109: .line 218
aload 2 /* result */
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 17 // int resultLength
end local 16 // int numberOfGroups
end local 15 // int change
end local 14 // int length
end local 13 // int colonsPos
end local 12 // java.lang.StringBuilder expanded
end local 11 // boolean groupStart
end local 10 // boolean isZero
end local 9 // int maxZeroGroupLength
end local 8 // int maxZeroGroupIndex
end local 7 // int zeroGroupLength
end local 6 // int zeroGroupIndex
end local 5 // int charInGroupCounter
end local 4 // int groupCounter
end local 3 // char[][] groups
end local 2 // java.lang.StringBuilder result
end local 1 // int ipv6AddressLength
end local 0 // java.lang.String ipv6Address
LocalVariableTable:
Start End Slot Name Signature
0 110 0 ipv6Address Ljava/lang/String;
5 110 1 ipv6AddressLength I
7 12 2 lastColonPos I
8 12 3 lastColonsPos I
16 110 2 result Ljava/lang/StringBuilder;
17 110 3 groups [[C
18 110 4 groupCounter I
19 110 5 charInGroupCounter I
20 110 6 zeroGroupIndex I
21 110 7 zeroGroupLength I
22 110 8 maxZeroGroupIndex I
23 110 9 maxZeroGroupLength I
24 110 10 isZero Z
25 110 11 groupStart Z
26 110 12 expanded Ljava/lang/StringBuilder;
27 110 13 colonsPos I
28 110 14 length I
29 110 15 change I
31 52 16 colonCounter I
32 37 17 i I
41 46 17 i I
53 81 16 charCounter I
55 79 17 c C
82 110 16 numberOfGroups I
86 91 17 j I
101 110 17 resultLength I
105 109 18 i I
Exceptions:
throws java.lang.IllegalArgumentException
MethodParameters:
Name Flags
ipv6Address
static boolean mayBeIPv6Address(java.lang.String);
descriptor: (Ljava/lang/String;)Z
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=5, args_size=1
start local 0 // java.lang.String input
0: .line 228
aload 0 /* input */
ifnonnull 2
1: .line 229
iconst_0
ireturn
2: .line 232
StackMap locals:
StackMap stack:
iconst_0
istore 1 /* colonsCounter */
start local 1 // int colonsCounter
3: .line 233
aload 0 /* input */
invokevirtual java.lang.String.length:()I
istore 2 /* length */
start local 2 // int length
4: .line 234
iconst_0
istore 3 /* i */
start local 3 // int i
5: goto 17
6: .line 235
StackMap locals: int int int
StackMap stack:
aload 0 /* input */
iload 3 /* i */
invokevirtual java.lang.String.charAt:(I)C
istore 4 /* c */
start local 4 // char c
7: .line 236
iload 4 /* c */
bipush 46
if_icmpeq 18
iload 4 /* c */
bipush 37
if_icmpne 9
8: .line 238
goto 18
9: .line 240
StackMap locals: int
StackMap stack:
iload 4 /* c */
bipush 48
if_icmplt 10
iload 4 /* c */
bipush 57
if_icmple 14
StackMap locals:
StackMap stack:
10: iload 4 /* c */
bipush 97
if_icmplt 11
iload 4 /* c */
bipush 102
if_icmple 14
11: .line 241
StackMap locals:
StackMap stack:
iload 4 /* c */
bipush 65
if_icmplt 12
iload 4 /* c */
bipush 70
if_icmple 14
StackMap locals:
StackMap stack:
12: iload 4 /* c */
bipush 58
if_icmpeq 14
13: .line 242
iconst_0
ireturn
14: .line 243
StackMap locals:
StackMap stack:
iload 4 /* c */
bipush 58
if_icmpne 16
15: .line 244
iinc 1 /* colonsCounter */ 1
end local 4 // char c
16: .line 234
StackMap locals:
StackMap stack:
iinc 3 /* i */ 1
StackMap locals:
StackMap stack:
17: iload 3 /* i */
iload 2 /* length */
if_icmplt 6
end local 3 // int i
18: .line 247
StackMap locals:
StackMap stack:
iload 1 /* colonsCounter */
iconst_2
if_icmpge 20
19: .line 248
iconst_0
ireturn
20: .line 250
StackMap locals:
StackMap stack:
iconst_1
ireturn
end local 2 // int length
end local 1 // int colonsCounter
end local 0 // java.lang.String input
LocalVariableTable:
Start End Slot Name Signature
0 21 0 input Ljava/lang/String;
3 21 1 colonsCounter I
4 21 2 length I
5 18 3 i I
7 16 4 c C
MethodParameters:
Name Flags
input
}
SourceFile: "IPv6Utils.java"