public final class com.google.common.net.PercentEscaper extends com.google.common.escape.UnicodeEscaper
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: com.google.common.net.PercentEscaper
super_class: com.google.common.escape.UnicodeEscaper
{
private static final char[] PLUS_SIGN;
descriptor: [C
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final char[] UPPER_HEX_DIGITS;
descriptor: [C
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final boolean plusForSpace;
descriptor: Z
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final boolean[] safeOctets;
descriptor: [Z
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=0, args_size=0
0: iconst_1
newarray 5
dup
iconst_0
bipush 43
castore
putstatic com.google.common.net.PercentEscaper.PLUS_SIGN:[C
1: ldc "0123456789ABCDEF"
invokevirtual java.lang.String.toCharArray:()[C
putstatic com.google.common.net.PercentEscaper.UPPER_HEX_DIGITS:[C
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(java.lang.String, boolean);
descriptor: (Ljava/lang/String;Z)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial com.google.common.escape.UnicodeEscaper.<init>:()V
1: aload 1
invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
pop
2: aload 1
ldc ".*[0-9A-Za-z].*"
invokevirtual java.lang.String.matches:(Ljava/lang/String;)Z
ifeq 6
3: new java.lang.IllegalArgumentException
dup
4: ldc "Alphanumeric characters are always 'safe' and should not be explicitly specified"
5: invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals: com.google.common.net.PercentEscaper java.lang.String int
StackMap stack:
new java.lang.StringBuilder
dup
aload 1
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 1
7: iload 2
ifeq 11
aload 1
ldc " "
invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
ifeq 11
8: new java.lang.IllegalArgumentException
dup
9: ldc "plusForSpace cannot be specified when space is a 'safe' character"
10: invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
11: StackMap locals:
StackMap stack:
aload 0
iload 2
putfield com.google.common.net.PercentEscaper.plusForSpace:Z
12: aload 0
aload 1
invokestatic com.google.common.net.PercentEscaper.createSafeOctets:(Ljava/lang/String;)[Z
putfield com.google.common.net.PercentEscaper.safeOctets:[Z
13: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lcom/google/common/net/PercentEscaper;
0 14 1 safeChars Ljava/lang/String;
0 14 2 plusForSpace Z
MethodParameters:
Name Flags
safeChars
plusForSpace
private static boolean[] createSafeOctets(java.lang.String);
descriptor: (Ljava/lang/String;)[Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=8, args_size=1
start local 0 0: iconst_m1
istore 1
start local 1 1: aload 0
invokevirtual java.lang.String.toCharArray:()[C
astore 2
start local 2 2: aload 2
dup
astore 6
arraylength
istore 5
iconst_0
istore 4
goto 6
StackMap locals: java.lang.String int char[] top int int char[]
StackMap stack:
3: aload 6
iload 4
caload
istore 3
start local 3 4: iload 3
iload 1
invokestatic java.lang.Math.max:(II)I
istore 1
end local 3 5: iinc 4 1
StackMap locals:
StackMap stack:
6: iload 4
iload 5
if_icmplt 3
7: iload 1
iconst_1
iadd
newarray 4
astore 3
start local 3 8: aload 2
dup
astore 7
arraylength
istore 6
iconst_0
istore 5
goto 12
StackMap locals: java.lang.String int char[] boolean[] top int int char[]
StackMap stack:
9: aload 7
iload 5
caload
istore 4
start local 4 10: aload 3
iload 4
iconst_1
bastore
end local 4 11: iinc 5 1
StackMap locals:
StackMap stack:
12: iload 5
iload 6
if_icmplt 9
13: aload 3
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 safeChars Ljava/lang/String;
1 14 1 maxChar I
2 14 2 safeCharArray [C
4 5 3 c C
8 14 3 octets [Z
10 11 4 c C
MethodParameters:
Name Flags
safeChars
protected int nextEscapeIndex(java.lang.CharSequence, int, int);
descriptor: (Ljava/lang/CharSequence;II)I
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
pop
1: goto 6
2: StackMap locals:
StackMap stack:
aload 1
iload 2
invokeinterface java.lang.CharSequence.charAt:(I)C
istore 4
start local 4 3: iload 4
aload 0
getfield com.google.common.net.PercentEscaper.safeOctets:[Z
arraylength
if_icmpge 7
aload 0
getfield com.google.common.net.PercentEscaper.safeOctets:[Z
iload 4
baload
ifne 5
4: goto 7
end local 4 5: StackMap locals:
StackMap stack:
iinc 2 1
StackMap locals:
StackMap stack:
6: iload 2
iload 3
if_icmplt 2
7: StackMap locals:
StackMap stack:
iload 2
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lcom/google/common/net/PercentEscaper;
0 8 1 csq Ljava/lang/CharSequence;
0 8 2 index I
0 8 3 end I
3 5 4 c C
MethodParameters:
Name Flags
csq
index
end
public java.lang.String escape(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=5, args_size=2
start local 0 start local 1 0: aload 1
invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
pop
1: aload 1
invokevirtual java.lang.String.length:()I
istore 2
start local 2 2: iconst_0
istore 3
start local 3 3: goto 8
4: StackMap locals: int int
StackMap stack:
aload 1
iload 3
invokevirtual java.lang.String.charAt:(I)C
istore 4
start local 4 5: iload 4
aload 0
getfield com.google.common.net.PercentEscaper.safeOctets:[Z
arraylength
if_icmpge 6
aload 0
getfield com.google.common.net.PercentEscaper.safeOctets:[Z
iload 4
baload
ifne 7
6: StackMap locals: int
StackMap stack:
aload 0
aload 1
iload 3
invokevirtual com.google.common.net.PercentEscaper.escapeSlow:(Ljava/lang/String;I)Ljava/lang/String;
areturn
end local 4 7: StackMap locals:
StackMap stack:
iinc 3 1
StackMap locals:
StackMap stack:
8: iload 3
iload 2
if_icmplt 4
end local 3 9: aload 1
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lcom/google/common/net/PercentEscaper;
0 10 1 s Ljava/lang/String;
2 10 2 slen I
3 9 3 index I
5 7 4 c C
MethodParameters:
Name Flags
s
protected char[] escape(int);
descriptor: (I)[C
flags: (0x0004) ACC_PROTECTED
Code:
stack=6, locals=3, args_size=2
start local 0 start local 1 0: iload 1
aload 0
getfield com.google.common.net.PercentEscaper.safeOctets:[Z
arraylength
if_icmpge 2
aload 0
getfield com.google.common.net.PercentEscaper.safeOctets:[Z
iload 1
baload
ifeq 2
1: aconst_null
areturn
2: StackMap locals:
StackMap stack:
iload 1
bipush 32
if_icmpne 4
aload 0
getfield com.google.common.net.PercentEscaper.plusForSpace:Z
ifeq 4
3: getstatic com.google.common.net.PercentEscaper.PLUS_SIGN:[C
areturn
4: StackMap locals:
StackMap stack:
iload 1
bipush 127
if_icmpgt 10
5: iconst_3
newarray 5
astore 2
start local 2 6: aload 2
iconst_0
bipush 37
castore
7: aload 2
iconst_2
getstatic com.google.common.net.PercentEscaper.UPPER_HEX_DIGITS:[C
iload 1
bipush 15
iand
caload
castore
8: aload 2
iconst_1
getstatic com.google.common.net.PercentEscaper.UPPER_HEX_DIGITS:[C
iload 1
iconst_4
iushr
caload
castore
9: aload 2
areturn
end local 2 10: StackMap locals:
StackMap stack:
iload 1
sipush 2047
if_icmpgt 22
11: bipush 6
newarray 5
astore 2
start local 2 12: aload 2
iconst_0
bipush 37
castore
13: aload 2
iconst_3
bipush 37
castore
14: aload 2
iconst_5
getstatic com.google.common.net.PercentEscaper.UPPER_HEX_DIGITS:[C
iload 1
bipush 15
iand
caload
castore
15: iload 1
iconst_4
iushr
istore 1
16: aload 2
iconst_4
getstatic com.google.common.net.PercentEscaper.UPPER_HEX_DIGITS:[C
bipush 8
iload 1
iconst_3
iand
ior
caload
castore
17: iload 1
iconst_2
iushr
istore 1
18: aload 2
iconst_2
getstatic com.google.common.net.PercentEscaper.UPPER_HEX_DIGITS:[C
iload 1
bipush 15
iand
caload
castore
19: iload 1
iconst_4
iushr
istore 1
20: aload 2
iconst_1
getstatic com.google.common.net.PercentEscaper.UPPER_HEX_DIGITS:[C
bipush 12
iload 1
ior
caload
castore
21: aload 2
areturn
end local 2 22: StackMap locals:
StackMap stack:
iload 1
ldc 65535
if_icmpgt 38
23: bipush 9
newarray 5
astore 2
start local 2 24: aload 2
iconst_0
bipush 37
castore
25: aload 2
iconst_1
bipush 69
castore
26: aload 2
iconst_3
bipush 37
castore
27: aload 2
bipush 6
bipush 37
castore
28: aload 2
bipush 8
getstatic com.google.common.net.PercentEscaper.UPPER_HEX_DIGITS:[C
iload 1
bipush 15
iand
caload
castore
29: iload 1
iconst_4
iushr
istore 1
30: aload 2
bipush 7
getstatic com.google.common.net.PercentEscaper.UPPER_HEX_DIGITS:[C
bipush 8
iload 1
iconst_3
iand
ior
caload
castore
31: iload 1
iconst_2
iushr
istore 1
32: aload 2
iconst_5
getstatic com.google.common.net.PercentEscaper.UPPER_HEX_DIGITS:[C
iload 1
bipush 15
iand
caload
castore
33: iload 1
iconst_4
iushr
istore 1
34: aload 2
iconst_4
getstatic com.google.common.net.PercentEscaper.UPPER_HEX_DIGITS:[C
bipush 8
iload 1
iconst_3
iand
ior
caload
castore
35: iload 1
iconst_2
iushr
istore 1
36: aload 2
iconst_2
getstatic com.google.common.net.PercentEscaper.UPPER_HEX_DIGITS:[C
iload 1
caload
castore
37: aload 2
areturn
end local 2 38: StackMap locals:
StackMap stack:
iload 1
ldc 1114111
if_icmpgt 59
39: bipush 12
newarray 5
astore 2
start local 2 40: aload 2
iconst_0
bipush 37
castore
41: aload 2
iconst_1
bipush 70
castore
42: aload 2
iconst_3
bipush 37
castore
43: aload 2
bipush 6
bipush 37
castore
44: aload 2
bipush 9
bipush 37
castore
45: aload 2
bipush 11
getstatic com.google.common.net.PercentEscaper.UPPER_HEX_DIGITS:[C
iload 1
bipush 15
iand
caload
castore
46: iload 1
iconst_4
iushr
istore 1
47: aload 2
bipush 10
getstatic com.google.common.net.PercentEscaper.UPPER_HEX_DIGITS:[C
bipush 8
iload 1
iconst_3
iand
ior
caload
castore
48: iload 1
iconst_2
iushr
istore 1
49: aload 2
bipush 8
getstatic com.google.common.net.PercentEscaper.UPPER_HEX_DIGITS:[C
iload 1
bipush 15
iand
caload
castore
50: iload 1
iconst_4
iushr
istore 1
51: aload 2
bipush 7
getstatic com.google.common.net.PercentEscaper.UPPER_HEX_DIGITS:[C
bipush 8
iload 1
iconst_3
iand
ior
caload
castore
52: iload 1
iconst_2
iushr
istore 1
53: aload 2
iconst_5
getstatic com.google.common.net.PercentEscaper.UPPER_HEX_DIGITS:[C
iload 1
bipush 15
iand
caload
castore
54: iload 1
iconst_4
iushr
istore 1
55: aload 2
iconst_4
getstatic com.google.common.net.PercentEscaper.UPPER_HEX_DIGITS:[C
bipush 8
iload 1
iconst_3
iand
ior
caload
castore
56: iload 1
iconst_2
iushr
istore 1
57: aload 2
iconst_2
getstatic com.google.common.net.PercentEscaper.UPPER_HEX_DIGITS:[C
iload 1
bipush 7
iand
caload
castore
58: aload 2
areturn
end local 2 59: StackMap locals:
StackMap stack:
new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "Invalid unicode character value "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 1
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 60 0 this Lcom/google/common/net/PercentEscaper;
0 60 1 cp I
6 10 2 dest [C
12 22 2 dest [C
24 38 2 dest [C
40 59 2 dest [C
MethodParameters:
Name Flags
cp
}
SourceFile: "PercentEscaper.java"
RuntimeInvisibleAnnotations:
com.google.common.annotations.Beta()
com.google.common.annotations.GwtCompatible()