SerializeWriter.smali
.class public final Lcom/alibaba/fastjson/serializer/SerializeWriter;
.super Ljava/io/Writer;
.source "SerializeWriter.java"
# static fields
.field public static final DIGITS:[C
.field static final DigitOnes:[C
.field static final DigitTens:[C
.field static final ascii_chars:[C
.field private static final bufLocal:Ljava/lang/ThreadLocal;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/lang/ThreadLocal<",
"[C>;"
}
.end annotation
.end field
.field static final digits:[C
.field static final replaceChars:[C
.field static final sizeTable:[I
.field static final specicalFlags_doubleQuotes:[B
.field static final specicalFlags_singleQuotes:[B
# instance fields
.field protected buf:[C
.field protected count:I
.field protected features:I
.field protected final writer:Ljava/io/Writer;
# direct methods
.method static constructor <clinit>()V
.registers 17
.line 1
new-instance v0, Ljava/lang/ThreadLocal;
invoke-direct {v0}, Ljava/lang/ThreadLocal;-><init>()V
sput-object v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->bufLocal:Ljava/lang/ThreadLocal;
const/16 v0, 0xa
.line 2
new-array v1, v0, [I
fill-array-data v1, :array_11e
sput-object v1, Lcom/alibaba/fastjson/serializer/SerializeWriter;->sizeTable:[I
const/16 v1, 0x24
.line 3
new-array v1, v1, [C
fill-array-data v1, :array_136
sput-object v1, Lcom/alibaba/fastjson/serializer/SerializeWriter;->digits:[C
const/16 v1, 0x64
.line 4
new-array v1, v1, [C
fill-array-data v1, :array_15e
sput-object v1, Lcom/alibaba/fastjson/serializer/SerializeWriter;->DigitTens:[C
const/16 v1, 0x64
.line 5
new-array v1, v1, [C
fill-array-data v1, :array_1c6
sput-object v1, Lcom/alibaba/fastjson/serializer/SerializeWriter;->DigitOnes:[C
const/16 v1, 0x60
.line 6
new-array v1, v1, [C
fill-array-data v1, :array_22e
sput-object v1, Lcom/alibaba/fastjson/serializer/SerializeWriter;->ascii_chars:[C
const/16 v1, 0xa1
.line 7
new-array v1, v1, [B
sput-object v1, Lcom/alibaba/fastjson/serializer/SerializeWriter;->specicalFlags_doubleQuotes:[B
const/16 v1, 0xa1
.line 8
new-array v1, v1, [B
sput-object v1, Lcom/alibaba/fastjson/serializer/SerializeWriter;->specicalFlags_singleQuotes:[B
const/16 v1, 0x5d
.line 9
new-array v1, v1, [C
sput-object v1, Lcom/alibaba/fastjson/serializer/SerializeWriter;->replaceChars:[C
.line 10
sget-object v1, Lcom/alibaba/fastjson/serializer/SerializeWriter;->specicalFlags_doubleQuotes:[B
const/4 v2, 0x0
const/4 v3, 0x4
aput-byte v3, v1, v2
const/4 v4, 0x1
.line 11
aput-byte v3, v1, v4
const/4 v5, 0x2
.line 12
aput-byte v3, v1, v5
const/4 v6, 0x3
.line 13
aput-byte v3, v1, v6
.line 14
aput-byte v3, v1, v3
const/4 v7, 0x5
.line 15
aput-byte v3, v1, v7
const/4 v8, 0x6
.line 16
aput-byte v3, v1, v8
const/4 v9, 0x7
.line 17
aput-byte v3, v1, v9
const/16 v10, 0x8
.line 18
aput-byte v4, v1, v10
const/16 v11, 0x9
.line 19
aput-byte v4, v1, v11
.line 20
aput-byte v4, v1, v0
const/16 v12, 0xb
.line 21
aput-byte v3, v1, v12
const/16 v13, 0xc
.line 22
aput-byte v4, v1, v13
const/16 v14, 0xd
.line 23
aput-byte v4, v1, v14
const/16 v15, 0x22
.line 24
aput-byte v4, v1, v15
const/16 v15, 0x5c
.line 25
aput-byte v4, v1, v15
.line 26
sget-object v1, Lcom/alibaba/fastjson/serializer/SerializeWriter;->specicalFlags_singleQuotes:[B
aput-byte v3, v1, v2
.line 27
aput-byte v3, v1, v4
.line 28
aput-byte v3, v1, v5
.line 29
aput-byte v3, v1, v6
.line 30
aput-byte v3, v1, v3
.line 31
aput-byte v3, v1, v7
.line 32
aput-byte v3, v1, v8
.line 33
aput-byte v3, v1, v9
.line 34
aput-byte v4, v1, v10
.line 35
aput-byte v4, v1, v11
.line 36
aput-byte v4, v1, v0
.line 37
aput-byte v3, v1, v12
.line 38
aput-byte v4, v1, v13
.line 39
aput-byte v4, v1, v14
.line 40
aput-byte v4, v1, v15
const/16 v16, 0x27
.line 41
aput-byte v4, v1, v16
const/16 v1, 0xe
:goto_a4
const/16 v15, 0x1f
if-gt v1, v15, :cond_b3
.line 42
sget-object v15, Lcom/alibaba/fastjson/serializer/SerializeWriter;->specicalFlags_doubleQuotes:[B
aput-byte v3, v15, v1
.line 43
sget-object v15, Lcom/alibaba/fastjson/serializer/SerializeWriter;->specicalFlags_singleQuotes:[B
aput-byte v3, v15, v1
add-int/lit8 v1, v1, 0x1
goto :goto_a4
:cond_b3
const/16 v1, 0x7f
:goto_b5
const/16 v15, 0xa0
if-ge v1, v15, :cond_c4
.line 44
sget-object v15, Lcom/alibaba/fastjson/serializer/SerializeWriter;->specicalFlags_doubleQuotes:[B
aput-byte v3, v15, v1
.line 45
sget-object v15, Lcom/alibaba/fastjson/serializer/SerializeWriter;->specicalFlags_singleQuotes:[B
aput-byte v3, v15, v1
add-int/lit8 v1, v1, 0x1
goto :goto_b5
.line 46
:cond_c4
sget-object v1, Lcom/alibaba/fastjson/serializer/SerializeWriter;->replaceChars:[C
const/16 v15, 0x30
aput-char v15, v1, v2
const/16 v2, 0x31
.line 47
aput-char v2, v1, v4
const/16 v2, 0x32
.line 48
aput-char v2, v1, v5
const/16 v2, 0x33
.line 49
aput-char v2, v1, v6
const/16 v2, 0x34
.line 50
aput-char v2, v1, v3
const/16 v2, 0x35
.line 51
aput-char v2, v1, v7
const/16 v2, 0x36
.line 52
aput-char v2, v1, v8
const/16 v2, 0x37
.line 53
aput-char v2, v1, v9
const/16 v2, 0x62
.line 54
aput-char v2, v1, v10
const/16 v2, 0x74
.line 55
aput-char v2, v1, v11
const/16 v2, 0x6e
.line 56
aput-char v2, v1, v0
const/16 v0, 0x76
.line 57
aput-char v0, v1, v12
const/16 v0, 0x66
.line 58
aput-char v0, v1, v13
const/16 v0, 0x72
.line 59
aput-char v0, v1, v14
const/16 v0, 0x22
const/16 v2, 0x22
.line 60
aput-char v2, v1, v0
const/16 v0, 0x27
const/16 v2, 0x27
.line 61
aput-char v2, v1, v0
const/16 v0, 0x2f
const/16 v2, 0x2f
.line 62
aput-char v2, v1, v0
const/16 v0, 0x5c
.line 63
aput-char v0, v1, v0
const/16 v0, 0x10
.line 64
new-array v0, v0, [C
fill-array-data v0, :array_292
sput-object v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->DIGITS:[C
return-void
:array_11e
.array-data 4
0x9
0x63
0x3e7
0x270f
0x1869f
0xf423f
0x98967f
0x5f5e0ff
0x3b9ac9ff
0x7fffffff
.end array-data
:array_136
.array-data 2
0x30s
0x31s
0x32s
0x33s
0x34s
0x35s
0x36s
0x37s
0x38s
0x39s
0x61s
0x62s
0x63s
0x64s
0x65s
0x66s
0x67s
0x68s
0x69s
0x6as
0x6bs
0x6cs
0x6ds
0x6es
0x6fs
0x70s
0x71s
0x72s
0x73s
0x74s
0x75s
0x76s
0x77s
0x78s
0x79s
0x7as
.end array-data
:array_15e
.array-data 2
0x30s
0x30s
0x30s
0x30s
0x30s
0x30s
0x30s
0x30s
0x30s
0x30s
0x31s
0x31s
0x31s
0x31s
0x31s
0x31s
0x31s
0x31s
0x31s
0x31s
0x32s
0x32s
0x32s
0x32s
0x32s
0x32s
0x32s
0x32s
0x32s
0x32s
0x33s
0x33s
0x33s
0x33s
0x33s
0x33s
0x33s
0x33s
0x33s
0x33s
0x34s
0x34s
0x34s
0x34s
0x34s
0x34s
0x34s
0x34s
0x34s
0x34s
0x35s
0x35s
0x35s
0x35s
0x35s
0x35s
0x35s
0x35s
0x35s
0x35s
0x36s
0x36s
0x36s
0x36s
0x36s
0x36s
0x36s
0x36s
0x36s
0x36s
0x37s
0x37s
0x37s
0x37s
0x37s
0x37s
0x37s
0x37s
0x37s
0x37s
0x38s
0x38s
0x38s
0x38s
0x38s
0x38s
0x38s
0x38s
0x38s
0x38s
0x39s
0x39s
0x39s
0x39s
0x39s
0x39s
0x39s
0x39s
0x39s
0x39s
.end array-data
:array_1c6
.array-data 2
0x30s
0x31s
0x32s
0x33s
0x34s
0x35s
0x36s
0x37s
0x38s
0x39s
0x30s
0x31s
0x32s
0x33s
0x34s
0x35s
0x36s
0x37s
0x38s
0x39s
0x30s
0x31s
0x32s
0x33s
0x34s
0x35s
0x36s
0x37s
0x38s
0x39s
0x30s
0x31s
0x32s
0x33s
0x34s
0x35s
0x36s
0x37s
0x38s
0x39s
0x30s
0x31s
0x32s
0x33s
0x34s
0x35s
0x36s
0x37s
0x38s
0x39s
0x30s
0x31s
0x32s
0x33s
0x34s
0x35s
0x36s
0x37s
0x38s
0x39s
0x30s
0x31s
0x32s
0x33s
0x34s
0x35s
0x36s
0x37s
0x38s
0x39s
0x30s
0x31s
0x32s
0x33s
0x34s
0x35s
0x36s
0x37s
0x38s
0x39s
0x30s
0x31s
0x32s
0x33s
0x34s
0x35s
0x36s
0x37s
0x38s
0x39s
0x30s
0x31s
0x32s
0x33s
0x34s
0x35s
0x36s
0x37s
0x38s
0x39s
.end array-data
:array_22e
.array-data 2
0x30s
0x30s
0x30s
0x31s
0x30s
0x32s
0x30s
0x33s
0x30s
0x34s
0x30s
0x35s
0x30s
0x36s
0x30s
0x37s
0x30s
0x38s
0x30s
0x39s
0x30s
0x41s
0x30s
0x42s
0x30s
0x43s
0x30s
0x44s
0x30s
0x45s
0x30s
0x46s
0x31s
0x30s
0x31s
0x31s
0x31s
0x32s
0x31s
0x33s
0x31s
0x34s
0x31s
0x35s
0x31s
0x36s
0x31s
0x37s
0x31s
0x38s
0x31s
0x39s
0x31s
0x41s
0x31s
0x42s
0x31s
0x43s
0x31s
0x44s
0x31s
0x45s
0x31s
0x46s
0x32s
0x30s
0x32s
0x31s
0x32s
0x32s
0x32s
0x33s
0x32s
0x34s
0x32s
0x35s
0x32s
0x36s
0x32s
0x37s
0x32s
0x38s
0x32s
0x39s
0x32s
0x41s
0x32s
0x42s
0x32s
0x43s
0x32s
0x44s
0x32s
0x45s
0x32s
0x46s
.end array-data
:array_292
.array-data 2
0x30s
0x31s
0x32s
0x33s
0x34s
0x35s
0x36s
0x37s
0x38s
0x39s
0x41s
0x42s
0x43s
0x44s
0x45s
0x46s
.end array-data
.end method
.method public constructor <init>()V
.registers 2
const/4 v0, 0x0
.line 1
invoke-direct {p0, v0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;-><init>(Ljava/io/Writer;)V
return-void
.end method
.method public constructor <init>(I)V
.registers 3
const/4 v0, 0x0
.line 21
invoke-direct {p0, v0, p1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;-><init>(Ljava/io/Writer;I)V
return-void
.end method
.method public constructor <init>(Ljava/io/Writer;)V
.registers 3
.line 2
invoke-direct {p0}, Ljava/io/Writer;-><init>()V
.line 3
iput-object p1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writer:Ljava/io/Writer;
.line 4
sget p1, Lcom/alibaba/fastjson/JSON;->DEFAULT_GENERATE_FEATURE:I
iput p1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I
.line 5
sget-object p1, Lcom/alibaba/fastjson/serializer/SerializeWriter;->bufLocal:Ljava/lang/ThreadLocal;
invoke-virtual {p1}, Ljava/lang/ThreadLocal;->get()Ljava/lang/Object;
move-result-object p1
check-cast p1, [C
iput-object p1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
.line 6
sget-object p1, Lcom/alibaba/fastjson/serializer/SerializeWriter;->bufLocal:Ljava/lang/ThreadLocal;
if-eqz p1, :cond_1b
const/4 v0, 0x0
.line 7
invoke-virtual {p1, v0}, Ljava/lang/ThreadLocal;->set(Ljava/lang/Object;)V
.line 8
:cond_1b
iget-object p1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
if-nez p1, :cond_25
const/16 p1, 0x400
.line 9
new-array p1, p1, [C
iput-object p1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
:cond_25
return-void
.end method
.method public constructor <init>(Ljava/io/Writer;I)V
.registers 5
.line 22
invoke-direct {p0}, Ljava/io/Writer;-><init>()V
.line 23
iput-object p1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writer:Ljava/io/Writer;
if-lez p2, :cond_c
.line 24
new-array p1, p2, [C
iput-object p1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
return-void
.line 25
:cond_c
new-instance p1, Ljava/lang/IllegalArgumentException;
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "Negative initial size: "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p2
invoke-direct {p1, p2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw p1
.end method
.method public constructor <init>(Ljava/io/Writer;I[Lcom/alibaba/fastjson/serializer/SerializerFeature;)V
.registers 6
.line 11
invoke-direct {p0}, Ljava/io/Writer;-><init>()V
.line 12
iput-object p1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writer:Ljava/io/Writer;
.line 13
sget-object p1, Lcom/alibaba/fastjson/serializer/SerializeWriter;->bufLocal:Ljava/lang/ThreadLocal;
invoke-virtual {p1}, Ljava/lang/ThreadLocal;->get()Ljava/lang/Object;
move-result-object p1
check-cast p1, [C
iput-object p1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
.line 14
iget-object p1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
if-eqz p1, :cond_19
.line 15
sget-object p1, Lcom/alibaba/fastjson/serializer/SerializeWriter;->bufLocal:Ljava/lang/ThreadLocal;
const/4 v0, 0x0
invoke-virtual {p1, v0}, Ljava/lang/ThreadLocal;->set(Ljava/lang/Object;)V
.line 16
:cond_19
iget-object p1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
if-nez p1, :cond_23
const/16 p1, 0x400
.line 17
new-array p1, p1, [C
iput-object p1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
.line 18
:cond_23
array-length p1, p3
const/4 v0, 0x0
:goto_25
if-ge v0, p1, :cond_2f
aget-object v1, p3, v0
.line 19
iget v1, v1, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I
or-int/2addr p2, v1
add-int/lit8 v0, v0, 0x1
goto :goto_25
.line 20
:cond_2f
iput p2, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I
return-void
.end method
.method public varargs constructor <init>([Lcom/alibaba/fastjson/serializer/SerializerFeature;)V
.registers 4
const/4 v0, 0x0
const/4 v1, 0x0
.line 10
invoke-direct {p0, v0, v1, p1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;-><init>(Ljava/io/Writer;I[Lcom/alibaba/fastjson/serializer/SerializerFeature;)V
return-void
.end method
.method protected static getChars(JI[C)V
.registers 11
const-wide/16 v0, 0x0
cmp-long v2, p0, v0
if-gez v2, :cond_a
const/16 v0, 0x2d
neg-long p0, p0
goto :goto_b
:cond_a
const/4 v0, 0x0
:goto_b
const-wide/32 v1, 0x7fffffff
cmp-long v3, p0, v1
if-lez v3, :cond_35
const-wide/16 v1, 0x64
.line 1
div-long v1, p0, v1
const/4 v3, 0x6
shl-long v3, v1, v3
const/4 v5, 0x5
shl-long v5, v1, v5
add-long/2addr v3, v5
const/4 v5, 0x2
shl-long v5, v1, v5
add-long/2addr v3, v5
sub-long/2addr p0, v3
long-to-int p1, p0
add-int/lit8 p2, p2, -0x1
.line 2
sget-object p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->DigitOnes:[C
aget-char p0, p0, p1
aput-char p0, p3, p2
add-int/lit8 p2, p2, -0x1
.line 3
sget-object p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->DigitTens:[C
aget-char p0, p0, p1
aput-char p0, p3, p2
move-wide p0, v1
goto :goto_b
:cond_35
long-to-int p1, p0
:goto_36
const/high16 p0, 0x10000
if-lt p1, p0, :cond_57
.line 4
div-int/lit8 p0, p1, 0x64
shl-int/lit8 v1, p0, 0x6
shl-int/lit8 v2, p0, 0x5
add-int/2addr v1, v2
shl-int/lit8 v2, p0, 0x2
add-int/2addr v1, v2
sub-int/2addr p1, v1
add-int/lit8 p2, p2, -0x1
.line 5
sget-object v1, Lcom/alibaba/fastjson/serializer/SerializeWriter;->DigitOnes:[C
aget-char v1, v1, p1
aput-char v1, p3, p2
add-int/lit8 p2, p2, -0x1
.line 6
sget-object v1, Lcom/alibaba/fastjson/serializer/SerializeWriter;->DigitTens:[C
aget-char p1, v1, p1
aput-char p1, p3, p2
move p1, p0
goto :goto_36
:cond_57
:goto_57
const p0, 0xcccd
mul-int p0, p0, p1
ushr-int/lit8 p0, p0, 0x13
shl-int/lit8 v1, p0, 0x3
shl-int/lit8 v2, p0, 0x1
add-int/2addr v1, v2
sub-int/2addr p1, v1
add-int/lit8 p2, p2, -0x1
.line 7
sget-object v1, Lcom/alibaba/fastjson/serializer/SerializeWriter;->digits:[C
aget-char p1, v1, p1
aput-char p1, p3, p2
if-nez p0, :cond_75
if-eqz v0, :cond_74
add-int/lit8 p2, p2, -0x1
.line 8
aput-char v0, p3, p2
:cond_74
return-void
:cond_75
move p1, p0
goto :goto_57
.end method
.method private writeKeyWithDoubleQuoteIfHasSpecial(Ljava/lang/String;)V
.registers 16
.line 1
invoke-virtual {p1}, Ljava/lang/String;->length()I
move-result v0
.line 2
iget v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
add-int/2addr v1, v0
const/4 v2, 0x1
add-int/2addr v1, v2
.line 3
iget-object v3, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
array-length v3, v3
const/16 v4, 0x5c
const/16 v5, 0x3a
const/4 v6, 0x0
const/16 v7, 0x22
if-le v1, v3, :cond_6b
.line 4
iget-object v3, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writer:Ljava/io/Writer;
if-eqz v3, :cond_68
if-nez v0, :cond_25
.line 5
invoke-virtual {p0, v7}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
.line 6
invoke-virtual {p0, v7}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
.line 7
invoke-virtual {p0, v5}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
return-void
:cond_25
const/4 v1, 0x0
:goto_26
if-ge v1, v0, :cond_39
.line 8
invoke-virtual {p1, v1}, Ljava/lang/String;->charAt(I)C
move-result v3
.line 9
sget-object v8, Lcom/alibaba/fastjson/serializer/SerializeWriter;->specicalFlags_doubleQuotes:[B
array-length v9, v8
if-ge v3, v9, :cond_36
aget-byte v3, v8, v3
if-eqz v3, :cond_36
goto :goto_3a
:cond_36
add-int/lit8 v1, v1, 0x1
goto :goto_26
:cond_39
const/4 v2, 0x0
:goto_3a
if-eqz v2, :cond_3f
.line 10
invoke-virtual {p0, v7}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
:cond_3f
:goto_3f
if-ge v6, v0, :cond_5f
.line 11
invoke-virtual {p1, v6}, Ljava/lang/String;->charAt(I)C
move-result v1
.line 12
sget-object v3, Lcom/alibaba/fastjson/serializer/SerializeWriter;->specicalFlags_doubleQuotes:[B
array-length v8, v3
if-ge v1, v8, :cond_59
aget-byte v3, v3, v1
if-eqz v3, :cond_59
.line 13
invoke-virtual {p0, v4}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
.line 14
sget-object v3, Lcom/alibaba/fastjson/serializer/SerializeWriter;->replaceChars:[C
aget-char v1, v3, v1
invoke-virtual {p0, v1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
goto :goto_5c
.line 15
:cond_59
invoke-virtual {p0, v1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
:goto_5c
add-int/lit8 v6, v6, 0x1
goto :goto_3f
:cond_5f
if-eqz v2, :cond_64
.line 16
invoke-virtual {p0, v7}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
.line 17
:cond_64
invoke-virtual {p0, v5}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
return-void
.line 18
:cond_68
invoke-virtual {p0, v1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->expandCapacity(I)V
:cond_6b
if-nez v0, :cond_96
.line 19
iget p1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
add-int/lit8 v0, p1, 0x3
.line 20
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
array-length v1, v1
if-le v0, v1, :cond_7b
add-int/lit8 p1, p1, 0x3
.line 21
invoke-virtual {p0, p1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->expandCapacity(I)V
.line 22
:cond_7b
iget-object p1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
iget v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
add-int/lit8 v1, v0, 0x1
iput v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
aput-char v7, p1, v0
.line 23
iget v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
add-int/lit8 v1, v0, 0x1
iput v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
aput-char v7, p1, v0
.line 24
iget v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
add-int/lit8 v1, v0, 0x1
iput v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
aput-char v5, p1, v0
return-void
.line 25
:cond_96
iget v3, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
add-int v8, v3, v0
.line 26
iget-object v9, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
invoke-virtual {p1, v6, v0, v9, v3}, Ljava/lang/String;->getChars(II[CI)V
.line 27
iput v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
move p1, v3
const/4 v0, 0x0
:goto_a3
if-ge p1, v8, :cond_10c
.line 28
iget-object v9, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
aget-char v10, v9, p1
.line 29
sget-object v11, Lcom/alibaba/fastjson/serializer/SerializeWriter;->specicalFlags_doubleQuotes:[B
array-length v12, v11
if-ge v10, v12, :cond_10a
aget-byte v11, v11, v10
if-eqz v11, :cond_10a
if-nez v0, :cond_e8
add-int/lit8 v1, v1, 0x3
.line 30
array-length v0, v9
if-le v1, v0, :cond_bc
.line 31
invoke-virtual {p0, v1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->expandCapacity(I)V
.line 32
:cond_bc
iput v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
.line 33
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
add-int/lit8 v9, p1, 0x1
add-int/lit8 v11, p1, 0x3
sub-int v12, v8, p1
sub-int/2addr v12, v2
invoke-static {v0, v9, v0, v11, v12}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 34
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
invoke-static {v0, v6, v0, v2, p1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 35
iget-object p1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
aput-char v7, p1, v3
.line 36
aput-char v4, p1, v9
add-int/lit8 v0, v9, 0x1
.line 37
sget-object v9, Lcom/alibaba/fastjson/serializer/SerializeWriter;->replaceChars:[C
aget-char v9, v9, v10
aput-char v9, p1, v0
add-int/lit8 v8, v8, 0x2
.line 38
iget v9, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
add-int/lit8 v9, v9, -0x2
aput-char v7, p1, v9
move p1, v0
const/4 v0, 0x1
goto :goto_10a
:cond_e8
add-int/lit8 v1, v1, 0x1
.line 39
array-length v9, v9
if-le v1, v9, :cond_f0
.line 40
invoke-virtual {p0, v1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->expandCapacity(I)V
.line 41
:cond_f0
iput v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
.line 42
iget-object v9, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
add-int/lit8 v11, p1, 0x1
add-int/lit8 v12, p1, 0x2
sub-int v13, v8, p1
invoke-static {v9, v11, v9, v12, v13}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 43
iget-object v9, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
aput-char v4, v9, p1
.line 44
sget-object p1, Lcom/alibaba/fastjson/serializer/SerializeWriter;->replaceChars:[C
aget-char p1, p1, v10
aput-char p1, v9, v11
add-int/lit8 v8, v8, 0x1
move p1, v11
:cond_10a
:goto_10a
add-int/2addr p1, v2
goto :goto_a3
.line 45
:cond_10c
iget-object p1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
iget v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
sub-int/2addr v0, v2
aput-char v5, p1, v0
return-void
.end method
.method private writeKeyWithSingleQuoteIfHasSpecial(Ljava/lang/String;)V
.registers 16
.line 1
invoke-virtual {p1}, Ljava/lang/String;->length()I
move-result v0
.line 2
iget v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
add-int/2addr v1, v0
const/4 v2, 0x1
add-int/2addr v1, v2
.line 3
iget-object v3, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
array-length v3, v3
const/16 v4, 0x5c
const/16 v5, 0x3a
const/4 v6, 0x0
const/16 v7, 0x27
if-le v1, v3, :cond_6b
.line 4
iget-object v3, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writer:Ljava/io/Writer;
if-eqz v3, :cond_68
if-nez v0, :cond_25
.line 5
invoke-virtual {p0, v7}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
.line 6
invoke-virtual {p0, v7}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
.line 7
invoke-virtual {p0, v5}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
return-void
:cond_25
const/4 v1, 0x0
:goto_26
if-ge v1, v0, :cond_39
.line 8
invoke-virtual {p1, v1}, Ljava/lang/String;->charAt(I)C
move-result v3
.line 9
sget-object v8, Lcom/alibaba/fastjson/serializer/SerializeWriter;->specicalFlags_singleQuotes:[B
array-length v9, v8
if-ge v3, v9, :cond_36
aget-byte v3, v8, v3
if-eqz v3, :cond_36
goto :goto_3a
:cond_36
add-int/lit8 v1, v1, 0x1
goto :goto_26
:cond_39
const/4 v2, 0x0
:goto_3a
if-eqz v2, :cond_3f
.line 10
invoke-virtual {p0, v7}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
:cond_3f
:goto_3f
if-ge v6, v0, :cond_5f
.line 11
invoke-virtual {p1, v6}, Ljava/lang/String;->charAt(I)C
move-result v1
.line 12
sget-object v3, Lcom/alibaba/fastjson/serializer/SerializeWriter;->specicalFlags_singleQuotes:[B
array-length v8, v3
if-ge v1, v8, :cond_59
aget-byte v3, v3, v1
if-eqz v3, :cond_59
.line 13
invoke-virtual {p0, v4}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
.line 14
sget-object v3, Lcom/alibaba/fastjson/serializer/SerializeWriter;->replaceChars:[C
aget-char v1, v3, v1
invoke-virtual {p0, v1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
goto :goto_5c
.line 15
:cond_59
invoke-virtual {p0, v1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
:goto_5c
add-int/lit8 v6, v6, 0x1
goto :goto_3f
:cond_5f
if-eqz v2, :cond_64
.line 16
invoke-virtual {p0, v7}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
.line 17
:cond_64
invoke-virtual {p0, v5}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
return-void
.line 18
:cond_68
invoke-virtual {p0, v1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->expandCapacity(I)V
:cond_6b
if-nez v0, :cond_96
.line 19
iget p1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
add-int/lit8 v0, p1, 0x3
.line 20
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
array-length v1, v1
if-le v0, v1, :cond_7b
add-int/lit8 p1, p1, 0x3
.line 21
invoke-virtual {p0, p1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->expandCapacity(I)V
.line 22
:cond_7b
iget-object p1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
iget v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
add-int/lit8 v1, v0, 0x1
iput v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
aput-char v7, p1, v0
.line 23
iget v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
add-int/lit8 v1, v0, 0x1
iput v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
aput-char v7, p1, v0
.line 24
iget v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
add-int/lit8 v1, v0, 0x1
iput v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
aput-char v5, p1, v0
return-void
.line 25
:cond_96
iget v3, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
add-int v8, v3, v0
.line 26
iget-object v9, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
invoke-virtual {p1, v6, v0, v9, v3}, Ljava/lang/String;->getChars(II[CI)V
.line 27
iput v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
move p1, v3
const/4 v0, 0x0
:goto_a3
if-ge p1, v8, :cond_10c
.line 28
iget-object v9, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
aget-char v10, v9, p1
.line 29
sget-object v11, Lcom/alibaba/fastjson/serializer/SerializeWriter;->specicalFlags_singleQuotes:[B
array-length v12, v11
if-ge v10, v12, :cond_10a
aget-byte v11, v11, v10
if-eqz v11, :cond_10a
if-nez v0, :cond_e8
add-int/lit8 v1, v1, 0x3
.line 30
array-length v0, v9
if-le v1, v0, :cond_bc
.line 31
invoke-virtual {p0, v1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->expandCapacity(I)V
.line 32
:cond_bc
iput v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
.line 33
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
add-int/lit8 v9, p1, 0x1
add-int/lit8 v11, p1, 0x3
sub-int v12, v8, p1
sub-int/2addr v12, v2
invoke-static {v0, v9, v0, v11, v12}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 34
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
invoke-static {v0, v6, v0, v2, p1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 35
iget-object p1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
aput-char v7, p1, v3
.line 36
aput-char v4, p1, v9
add-int/lit8 v0, v9, 0x1
.line 37
sget-object v9, Lcom/alibaba/fastjson/serializer/SerializeWriter;->replaceChars:[C
aget-char v9, v9, v10
aput-char v9, p1, v0
add-int/lit8 v8, v8, 0x2
.line 38
iget v9, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
add-int/lit8 v9, v9, -0x2
aput-char v7, p1, v9
move p1, v0
const/4 v0, 0x1
goto :goto_10a
:cond_e8
add-int/lit8 v1, v1, 0x1
.line 39
array-length v9, v9
if-le v1, v9, :cond_f0
.line 40
invoke-virtual {p0, v1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->expandCapacity(I)V
.line 41
:cond_f0
iput v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
.line 42
iget-object v9, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
add-int/lit8 v11, p1, 0x1
add-int/lit8 v12, p1, 0x2
sub-int v13, v8, p1
invoke-static {v9, v11, v9, v12, v13}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 43
iget-object v9, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
aput-char v4, v9, p1
.line 44
sget-object p1, Lcom/alibaba/fastjson/serializer/SerializeWriter;->replaceChars:[C
aget-char p1, p1, v10
aput-char p1, v9, v11
add-int/lit8 v8, v8, 0x1
move p1, v11
:cond_10a
:goto_10a
add-int/2addr p1, v2
goto :goto_a3
.line 45
:cond_10c
iget-object p1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
sub-int/2addr v1, v2
aput-char v5, p1, v1
return-void
.end method
# virtual methods
.method public append(C)Lcom/alibaba/fastjson/serializer/SerializeWriter;
.registers 2
.line 11
invoke-virtual {p0, p1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
return-object p0
.end method
.method public append(Ljava/lang/CharSequence;)Lcom/alibaba/fastjson/serializer/SerializeWriter;
.registers 4
if-nez p1, :cond_5
const-string p1, "null"
goto :goto_9
.line 7
:cond_5
invoke-interface {p1}, Ljava/lang/CharSequence;->toString()Ljava/lang/String;
move-result-object p1
:goto_9
const/4 v0, 0x0
.line 8
invoke-virtual {p1}, Ljava/lang/String;->length()I
move-result v1
invoke-virtual {p0, p1, v0, v1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(Ljava/lang/String;II)V
return-object p0
.end method
.method public append(Ljava/lang/CharSequence;II)Lcom/alibaba/fastjson/serializer/SerializeWriter;
.registers 4
if-nez p1, :cond_4
const-string p1, "null"
.line 9
:cond_4
invoke-interface {p1, p2, p3}, Ljava/lang/CharSequence;->subSequence(II)Ljava/lang/CharSequence;
move-result-object p1
invoke-interface {p1}, Ljava/lang/CharSequence;->toString()Ljava/lang/String;
move-result-object p1
const/4 p2, 0x0
.line 10
invoke-virtual {p1}, Ljava/lang/String;->length()I
move-result p3
invoke-virtual {p0, p1, p2, p3}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(Ljava/lang/String;II)V
return-object p0
.end method
.method public bridge synthetic append(C)Ljava/io/Writer;
.registers 2
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 1
invoke-virtual {p0, p1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->append(C)Lcom/alibaba/fastjson/serializer/SerializeWriter;
move-result-object p1
return-object p1
.end method
.method public bridge synthetic append(Ljava/lang/CharSequence;)Ljava/io/Writer;
.registers 2
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 2
invoke-virtual {p0, p1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->append(Ljava/lang/CharSequence;)Lcom/alibaba/fastjson/serializer/SerializeWriter;
move-result-object p1
return-object p1
.end method
.method public bridge synthetic append(Ljava/lang/CharSequence;II)Ljava/io/Writer;
.registers 4
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 3
invoke-virtual {p0, p1, p2, p3}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->append(Ljava/lang/CharSequence;II)Lcom/alibaba/fastjson/serializer/SerializeWriter;
move-result-object p1
return-object p1
.end method
.method public bridge synthetic append(C)Ljava/lang/Appendable;
.registers 2
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 4
invoke-virtual {p0, p1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->append(C)Lcom/alibaba/fastjson/serializer/SerializeWriter;
move-result-object p1
return-object p1
.end method
.method public bridge synthetic append(Ljava/lang/CharSequence;)Ljava/lang/Appendable;
.registers 2
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 5
invoke-virtual {p0, p1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->append(Ljava/lang/CharSequence;)Lcom/alibaba/fastjson/serializer/SerializeWriter;
move-result-object p1
return-object p1
.end method
.method public bridge synthetic append(Ljava/lang/CharSequence;II)Ljava/lang/Appendable;
.registers 4
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 6
invoke-virtual {p0, p1, p2, p3}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->append(Ljava/lang/CharSequence;II)Lcom/alibaba/fastjson/serializer/SerializeWriter;
move-result-object p1
return-object p1
.end method
.method public close()V
.registers 4
.line 1
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writer:Ljava/io/Writer;
if-eqz v0, :cond_b
iget v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
if-lez v0, :cond_b
.line 2
invoke-virtual {p0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->flush()V
.line 3
:cond_b
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
array-length v1, v0
const/16 v2, 0x2000
if-gt v1, v2, :cond_17
.line 4
sget-object v1, Lcom/alibaba/fastjson/serializer/SerializeWriter;->bufLocal:Ljava/lang/ThreadLocal;
invoke-virtual {v1, v0}, Ljava/lang/ThreadLocal;->set(Ljava/lang/Object;)V
:cond_17
const/4 v0, 0x0
.line 5
iput-object v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
return-void
.end method
.method public config(Lcom/alibaba/fastjson/serializer/SerializerFeature;Z)V
.registers 3
if-eqz p2, :cond_a
.line 1
iget p2, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I
iget p1, p1, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I
or-int/2addr p1, p2
iput p1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I
goto :goto_13
.line 2
:cond_a
iget p2, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I
iget p1, p1, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I
xor-int/lit8 p1, p1, -0x1
and-int/2addr p1, p2
iput p1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I
:goto_13
return-void
.end method
.method protected expandCapacity(I)V
.registers 5
.line 1
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
array-length v0, v0
mul-int/lit8 v0, v0, 0x3
div-int/lit8 v0, v0, 0x2
add-int/lit8 v0, v0, 0x1
if-ge v0, p1, :cond_c
goto :goto_d
:cond_c
move p1, v0
.line 2
:goto_d
new-array p1, p1, [C
.line 3
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
iget v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
const/4 v2, 0x0
invoke-static {v0, v2, p1, v2, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 4
iput-object p1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
return-void
.end method
.method public flush()V
.registers 5
.line 1
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writer:Ljava/io/Writer;
if-nez v0, :cond_5
return-void
.line 2
:cond_5
:try_start_5
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
iget v2, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
const/4 v3, 0x0
invoke-virtual {v0, v1, v3, v2}, Ljava/io/Writer;->write([CII)V
.line 3
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writer:Ljava/io/Writer;
invoke-virtual {v0}, Ljava/io/Writer;->flush()V
.line 4
iput v3, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
:try_end_14
.catch Ljava/io/IOException; {:try_start_5 .. :try_end_14} :catch_15
return-void
:catch_15
move-exception v0
.line 5
new-instance v1, Lcom/alibaba/fastjson/JSONException;
invoke-virtual {v0}, Ljava/io/IOException;->getMessage()Ljava/lang/String;
move-result-object v2
invoke-direct {v1, v2, v0}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v1
.end method
.method public isEnabled(Lcom/alibaba/fastjson/serializer/SerializerFeature;)Z
.registers 3
.line 1
iget v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I
iget p1, p1, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I
and-int/2addr p1, v0
if-eqz p1, :cond_9
const/4 p1, 0x1
goto :goto_a
:cond_9
const/4 p1, 0x0
:goto_a
return p1
.end method
.method public toBytes(Ljava/lang/String;)[B
.registers 6
.line 1
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writer:Ljava/io/Writer;
if-nez v0, :cond_20
if-nez p1, :cond_8
const-string p1, "UTF-8"
.line 2
:cond_8
:try_start_8
new-instance v0, Ljava/lang/String;
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
const/4 v2, 0x0
iget v3, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
invoke-direct {v0, v1, v2, v3}, Ljava/lang/String;-><init>([CII)V
invoke-virtual {v0, p1}, Ljava/lang/String;->getBytes(Ljava/lang/String;)[B
move-result-object p1
:try_end_16
.catch Ljava/io/UnsupportedEncodingException; {:try_start_8 .. :try_end_16} :catch_17
return-object p1
:catch_17
move-exception p1
.line 3
new-instance v0, Lcom/alibaba/fastjson/JSONException;
const-string v1, "toBytes error"
invoke-direct {v0, v1, p1}, Lcom/alibaba/fastjson/JSONException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v0
.line 4
:cond_20
new-instance p1, Ljava/lang/UnsupportedOperationException;
const-string/jumbo v0, "writer not null"
invoke-direct {p1, v0}, Ljava/lang/UnsupportedOperationException;-><init>(Ljava/lang/String;)V
throw p1
.end method
.method public toString()Ljava/lang/String;
.registers 5
.line 1
new-instance v0, Ljava/lang/String;
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
iget v2, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
const/4 v3, 0x0
invoke-direct {v0, v1, v3, v2}, Ljava/lang/String;-><init>([CII)V
return-object v0
.end method
.method public write(I)V
.registers 5
.line 1
iget v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
const/4 v1, 0x1
add-int/2addr v0, v1
.line 2
iget-object v2, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
array-length v2, v2
if-le v0, v2, :cond_15
.line 3
iget-object v2, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writer:Ljava/io/Writer;
if-nez v2, :cond_11
.line 4
invoke-virtual {p0, v0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->expandCapacity(I)V
goto :goto_15
.line 5
:cond_11
invoke-virtual {p0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->flush()V
const/4 v0, 0x1
.line 6
:cond_15
:goto_15
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
iget v2, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
int-to-char p1, p1
aput-char p1, v1, v2
.line 7
iput v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
return-void
.end method
.method public write(Ljava/lang/String;)V
.registers 4
if-nez p1, :cond_6
.line 32
invoke-virtual {p0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeNull()V
return-void
:cond_6
const/4 v0, 0x0
.line 33
invoke-virtual {p1}, Ljava/lang/String;->length()I
move-result v1
invoke-virtual {p0, p1, v0, v1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(Ljava/lang/String;II)V
return-void
.end method
.method public write(Ljava/lang/String;II)V
.registers 8
.line 21
iget v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
add-int/2addr v0, p3
.line 22
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
array-length v1, v1
if-le v0, v1, :cond_2e
.line 23
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writer:Ljava/io/Writer;
if-nez v1, :cond_10
.line 24
invoke-virtual {p0, v0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->expandCapacity(I)V
goto :goto_2e
.line 25
:cond_10
:goto_10
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
array-length v1, v0
iget v2, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
sub-int/2addr v1, v2
add-int v3, p2, v1
.line 26
invoke-virtual {p1, p2, v3, v0, v2}, Ljava/lang/String;->getChars(II[CI)V
.line 27
iget-object p2, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
array-length p2, p2
iput p2, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
.line 28
invoke-virtual {p0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->flush()V
sub-int/2addr p3, v1
.line 29
iget-object p2, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
array-length p2, p2
if-gt p3, p2, :cond_2c
move v0, p3
move p2, v3
goto :goto_2e
:cond_2c
move p2, v3
goto :goto_10
:cond_2e
:goto_2e
add-int/2addr p3, p2
.line 30
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
iget v2, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
invoke-virtual {p1, p2, p3, v1, v2}, Ljava/lang/String;->getChars(II[CI)V
.line 31
iput v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
return-void
.end method
.method public write(Z)V
.registers 2
if-eqz p1, :cond_5
const-string p1, "true"
goto :goto_7
:cond_5
const-string p1, "false"
.line 34
:goto_7
invoke-virtual {p0, p1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(Ljava/lang/String;)V
return-void
.end method
.method public write([CII)V
.registers 7
if-ltz p2, :cond_44
.line 8
array-length v0, p1
if-gt p2, v0, :cond_44
if-ltz p3, :cond_44
add-int v0, p2, p3
array-length v1, p1
if-gt v0, v1, :cond_44
if-ltz v0, :cond_44
if-nez p3, :cond_11
return-void
.line 9
:cond_11
iget v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
add-int/2addr v0, p3
.line 10
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
array-length v1, v1
if-le v0, v1, :cond_3a
.line 11
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writer:Ljava/io/Writer;
if-nez v1, :cond_21
.line 12
invoke-virtual {p0, v0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->expandCapacity(I)V
goto :goto_3a
.line 13
:cond_21
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
array-length v1, v0
iget v2, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
sub-int/2addr v1, v2
.line 14
invoke-static {p1, p2, v0, v2, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 15
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
array-length v0, v0
iput v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
.line 16
invoke-virtual {p0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->flush()V
sub-int/2addr p3, v1
add-int/2addr p2, v1
.line 17
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
array-length v0, v0
if-gt p3, v0, :cond_21
move v0, p3
.line 18
:cond_3a
:goto_3a
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
iget v2, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
invoke-static {p1, p2, v1, v2, p3}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 19
iput v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
return-void
.line 20
:cond_44
new-instance p1, Ljava/lang/IndexOutOfBoundsException;
invoke-direct {p1}, Ljava/lang/IndexOutOfBoundsException;-><init>()V
goto :goto_4b
:goto_4a
throw p1
:goto_4b
goto :goto_4a
.end method
.method public writeByteArray([B)V
.registers 20
move-object/from16 v0, p0
move-object/from16 v1, p1
.line 1
array-length v2, v1
.line 2
iget v3, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I
sget-object v4, Lcom/alibaba/fastjson/serializer/SerializerFeature;->UseSingleQuotes:Lcom/alibaba/fastjson/serializer/SerializerFeature;
iget v4, v4, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I
and-int/2addr v3, v4
const/4 v4, 0x0
const/4 v5, 0x1
if-eqz v3, :cond_12
const/4 v3, 0x1
goto :goto_13
:cond_12
const/4 v3, 0x0
:goto_13
if-eqz v3, :cond_18
const/16 v6, 0x27
goto :goto_1a
:cond_18
const/16 v6, 0x22
:goto_1a
if-nez v2, :cond_27
if-eqz v3, :cond_21
const-string v1, "\'\'"
goto :goto_23
:cond_21
const-string v1, "\"\""
.line 3
:goto_23
invoke-virtual {v0, v1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(Ljava/lang/String;)V
return-void
.line 4
:cond_27
sget-object v3, Lcom/alibaba/fastjson/parser/JSONLexer;->CA:[C
.line 5
div-int/lit8 v7, v2, 0x3
mul-int/lit8 v7, v7, 0x3
add-int/lit8 v8, v2, -0x1
.line 6
div-int/lit8 v9, v8, 0x3
add-int/2addr v9, v5
const/4 v10, 0x2
shl-int/2addr v9, v10
.line 7
iget v11, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
add-int/2addr v9, v11
add-int/2addr v9, v10
.line 8
iget-object v12, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
array-length v12, v12
const/16 v13, 0x3d
if-le v9, v12, :cond_be
.line 9
iget-object v12, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writer:Ljava/io/Writer;
if-eqz v12, :cond_bb
.line 10
invoke-virtual {v0, v6}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
const/4 v5, 0x0
:goto_47
if-ge v5, v7, :cond_85
add-int/lit8 v9, v5, 0x1
.line 11
aget-byte v5, v1, v5
and-int/lit16 v5, v5, 0xff
shl-int/lit8 v5, v5, 0x10
add-int/lit8 v11, v9, 0x1
aget-byte v9, v1, v9
and-int/lit16 v9, v9, 0xff
shl-int/lit8 v9, v9, 0x8
or-int/2addr v5, v9
add-int/lit8 v9, v11, 0x1
aget-byte v11, v1, v11
and-int/lit16 v11, v11, 0xff
or-int/2addr v5, v11
ushr-int/lit8 v11, v5, 0x12
and-int/lit8 v11, v11, 0x3f
.line 12
aget-char v11, v3, v11
invoke-virtual {v0, v11}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
ushr-int/lit8 v11, v5, 0xc
and-int/lit8 v11, v11, 0x3f
.line 13
aget-char v11, v3, v11
invoke-virtual {v0, v11}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
ushr-int/lit8 v11, v5, 0x6
and-int/lit8 v11, v11, 0x3f
.line 14
aget-char v11, v3, v11
invoke-virtual {v0, v11}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
and-int/lit8 v5, v5, 0x3f
.line 15
aget-char v5, v3, v5
invoke-virtual {v0, v5}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
move v5, v9
goto :goto_47
:cond_85
sub-int/2addr v2, v7
if-lez v2, :cond_b7
.line 16
aget-byte v5, v1, v7
and-int/lit16 v5, v5, 0xff
shl-int/lit8 v5, v5, 0xa
if-ne v2, v10, :cond_96
aget-byte v1, v1, v8
and-int/lit16 v1, v1, 0xff
shl-int/lit8 v4, v1, 0x2
:cond_96
or-int v1, v5, v4
shr-int/lit8 v4, v1, 0xc
.line 17
aget-char v4, v3, v4
invoke-virtual {v0, v4}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
ushr-int/lit8 v4, v1, 0x6
and-int/lit8 v4, v4, 0x3f
.line 18
aget-char v4, v3, v4
invoke-virtual {v0, v4}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
if-ne v2, v10, :cond_af
and-int/lit8 v1, v1, 0x3f
.line 19
aget-char v1, v3, v1
goto :goto_b1
:cond_af
const/16 v1, 0x3d
:goto_b1
invoke-virtual {v0, v1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
.line 20
invoke-virtual {v0, v13}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
.line 21
:cond_b7
invoke-virtual {v0, v6}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
return-void
.line 22
:cond_bb
invoke-virtual {v0, v9}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->expandCapacity(I)V
.line 23
:cond_be
iput v9, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
.line 24
iget-object v12, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
add-int/lit8 v14, v11, 0x1
aput-char v6, v12, v11
const/4 v11, 0x0
:goto_c7
if-ge v11, v7, :cond_10b
add-int/lit8 v12, v11, 0x1
.line 25
aget-byte v11, v1, v11
and-int/lit16 v11, v11, 0xff
shl-int/lit8 v11, v11, 0x10
add-int/lit8 v15, v12, 0x1
aget-byte v12, v1, v12
and-int/lit16 v12, v12, 0xff
shl-int/lit8 v12, v12, 0x8
or-int/2addr v11, v12
add-int/lit8 v12, v15, 0x1
aget-byte v15, v1, v15
and-int/lit16 v15, v15, 0xff
or-int/2addr v11, v15
.line 26
iget-object v15, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
add-int/lit8 v16, v14, 0x1
ushr-int/lit8 v17, v11, 0x12
and-int/lit8 v17, v17, 0x3f
aget-char v17, v3, v17
aput-char v17, v15, v14
add-int/lit8 v14, v16, 0x1
ushr-int/lit8 v17, v11, 0xc
and-int/lit8 v17, v17, 0x3f
.line 27
aget-char v17, v3, v17
aput-char v17, v15, v16
add-int/lit8 v16, v14, 0x1
ushr-int/lit8 v17, v11, 0x6
and-int/lit8 v17, v17, 0x3f
.line 28
aget-char v17, v3, v17
aput-char v17, v15, v14
add-int/lit8 v14, v16, 0x1
and-int/lit8 v11, v11, 0x3f
.line 29
aget-char v11, v3, v11
aput-char v11, v15, v16
move v11, v12
goto :goto_c7
:cond_10b
sub-int/2addr v2, v7
if-lez v2, :cond_145
.line 30
aget-byte v7, v1, v7
and-int/lit16 v7, v7, 0xff
shl-int/lit8 v7, v7, 0xa
if-ne v2, v10, :cond_11c
aget-byte v1, v1, v8
and-int/lit16 v1, v1, 0xff
shl-int/lit8 v4, v1, 0x2
:cond_11c
or-int v1, v7, v4
.line 31
iget-object v4, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
add-int/lit8 v7, v9, -0x5
shr-int/lit8 v8, v1, 0xc
aget-char v8, v3, v8
aput-char v8, v4, v7
add-int/lit8 v7, v9, -0x4
ushr-int/lit8 v8, v1, 0x6
and-int/lit8 v8, v8, 0x3f
.line 32
aget-char v8, v3, v8
aput-char v8, v4, v7
add-int/lit8 v7, v9, -0x3
if-ne v2, v10, :cond_13b
and-int/lit8 v1, v1, 0x3f
.line 33
aget-char v1, v3, v1
goto :goto_13d
:cond_13b
const/16 v1, 0x3d
:goto_13d
aput-char v1, v4, v7
.line 34
iget-object v1, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
add-int/lit8 v2, v9, -0x2
aput-char v13, v1, v2
.line 35
:cond_145
iget-object v1, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
sub-int/2addr v9, v5
aput-char v6, v1, v9
return-void
.end method
.method public writeFieldName(Ljava/lang/String;Z)V
.registers 6
.line 1
iget v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I
sget-object v1, Lcom/alibaba/fastjson/serializer/SerializerFeature;->UseSingleQuotes:Lcom/alibaba/fastjson/serializer/SerializerFeature;
iget v1, v1, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I
and-int/2addr v1, v0
const/16 v2, 0x3a
if-eqz v1, :cond_1d
.line 2
sget-object p2, Lcom/alibaba/fastjson/serializer/SerializerFeature;->QuoteFieldNames:Lcom/alibaba/fastjson/serializer/SerializerFeature;
iget p2, p2, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I
and-int/2addr p2, v0
if-eqz p2, :cond_19
.line 3
invoke-virtual {p0, p1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeStringWithSingleQuote(Ljava/lang/String;)V
.line 4
invoke-virtual {p0, v2}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
goto :goto_2b
.line 5
:cond_19
invoke-direct {p0, p1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeKeyWithSingleQuoteIfHasSpecial(Ljava/lang/String;)V
goto :goto_2b
.line 6
:cond_1d
sget-object v1, Lcom/alibaba/fastjson/serializer/SerializerFeature;->QuoteFieldNames:Lcom/alibaba/fastjson/serializer/SerializerFeature;
iget v1, v1, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I
and-int/2addr v0, v1
if-eqz v0, :cond_28
.line 7
invoke-virtual {p0, p1, v2, p2}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeStringWithDoubleQuote(Ljava/lang/String;CZ)V
goto :goto_2b
.line 8
:cond_28
invoke-direct {p0, p1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeKeyWithDoubleQuoteIfHasSpecial(Ljava/lang/String;)V
:goto_2b
return-void
.end method
.method public writeInt(I)V
.registers 7
const/high16 v0, -0x80000000
if-ne p1, v0, :cond_a
const-string p1, "-2147483648"
.line 1
invoke-virtual {p0, p1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(Ljava/lang/String;)V
return-void
:cond_a
if-gez p1, :cond_e
neg-int v0, p1
goto :goto_f
:cond_e
move v0, p1
:goto_f
const/4 v1, 0x0
const/4 v2, 0x0
.line 2
:goto_11
sget-object v3, Lcom/alibaba/fastjson/serializer/SerializeWriter;->sizeTable:[I
aget v3, v3, v2
if-gt v0, v3, :cond_41
add-int/lit8 v2, v2, 0x1
if-gez p1, :cond_1d
add-int/lit8 v2, v2, 0x1
.line 3
:cond_1d
iget v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
add-int/2addr v0, v2
.line 4
iget-object v3, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
array-length v3, v3
if-le v0, v3, :cond_38
.line 5
iget-object v3, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writer:Ljava/io/Writer;
if-nez v3, :cond_2d
.line 6
invoke-virtual {p0, v0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->expandCapacity(I)V
goto :goto_38
.line 7
:cond_2d
new-array v0, v2, [C
int-to-long v3, p1
.line 8
invoke-static {v3, v4, v2, v0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->getChars(JI[C)V
.line 9
array-length p1, v0
invoke-virtual {p0, v0, v1, p1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write([CII)V
return-void
:cond_38
:goto_38
int-to-long v1, p1
.line 10
iget-object p1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
invoke-static {v1, v2, v0, p1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->getChars(JI[C)V
.line 11
iput v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
return-void
:cond_41
add-int/lit8 v2, v2, 0x1
goto :goto_11
.end method
.method public writeLong(J)V
.registers 15
const-wide/high16 v0, -0x8000000000000000L
cmp-long v2, p1, v0
if-nez v2, :cond_c
const-string p1, "-9223372036854775808"
.line 1
invoke-virtual {p0, p1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(Ljava/lang/String;)V
return-void
:cond_c
const-wide/16 v0, 0x0
cmp-long v2, p1, v0
if-gez v2, :cond_14
neg-long v2, p1
goto :goto_15
:cond_14
move-wide v2, p1
:goto_15
const-wide/16 v4, 0xa
const/4 v6, 0x1
move-wide v7, v4
:goto_19
const/16 v9, 0x13
const/4 v10, 0x0
if-ge v6, v9, :cond_28
cmp-long v11, v2, v7
if-gez v11, :cond_23
goto :goto_29
:cond_23
mul-long v7, v7, v4
add-int/lit8 v6, v6, 0x1
goto :goto_19
:cond_28
const/4 v6, 0x0
:goto_29
if-nez v6, :cond_2d
const/16 v6, 0x13
:cond_2d
cmp-long v2, p1, v0
if-gez v2, :cond_33
add-int/lit8 v6, v6, 0x1
.line 2
:cond_33
iget v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
add-int/2addr v0, v6
.line 3
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
array-length v1, v1
if-le v0, v1, :cond_4d
.line 4
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writer:Ljava/io/Writer;
if-nez v1, :cond_43
.line 5
invoke-virtual {p0, v0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->expandCapacity(I)V
goto :goto_4d
.line 6
:cond_43
new-array v0, v6, [C
.line 7
invoke-static {p1, p2, v6, v0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->getChars(JI[C)V
.line 8
array-length p1, v0
invoke-virtual {p0, v0, v10, p1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write([CII)V
return-void
.line 9
:cond_4d
:goto_4d
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
invoke-static {p1, p2, v0, v1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->getChars(JI[C)V
.line 10
iput v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
return-void
.end method
.method public writeNull()V
.registers 2
const-string v0, "null"
.line 1
invoke-virtual {p0, v0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(Ljava/lang/String;)V
return-void
.end method
.method public writeString(Ljava/lang/String;)V
.registers 4
.line 1
iget v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I
sget-object v1, Lcom/alibaba/fastjson/serializer/SerializerFeature;->UseSingleQuotes:Lcom/alibaba/fastjson/serializer/SerializerFeature;
iget v1, v1, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I
and-int/2addr v0, v1
if-eqz v0, :cond_d
.line 2
invoke-virtual {p0, p1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeStringWithSingleQuote(Ljava/lang/String;)V
goto :goto_12
:cond_d
const/4 v0, 0x0
const/4 v1, 0x1
.line 3
invoke-virtual {p0, p1, v0, v1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeStringWithDoubleQuote(Ljava/lang/String;CZ)V
:goto_12
return-void
.end method
.method protected writeStringWithDoubleQuote(Ljava/lang/String;CZ)V
.registers 21
move-object/from16 v0, p0
move-object/from16 v1, p1
move/from16 v2, p2
if-nez v1, :cond_11
.line 1
invoke-virtual/range {p0 .. p0}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeNull()V
if-eqz v2, :cond_10
.line 2
invoke-virtual {v0, v2}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
:cond_10
return-void
.line 3
:cond_11
invoke-virtual/range {p1 .. p1}, Ljava/lang/String;->length()I
move-result v3
.line 4
iget v4, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
add-int/2addr v4, v3
add-int/lit8 v4, v4, 0x2
if-eqz v2, :cond_1e
add-int/lit8 v4, v4, 0x1
.line 5
:cond_1e
iget-object v5, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
array-length v5, v5
const/16 v6, 0x2f
const/16 v7, 0x22
const/4 v8, 0x0
const/16 v9, 0x5c
if-le v4, v5, :cond_6c
.line 6
iget-object v5, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writer:Ljava/io/Writer;
if-eqz v5, :cond_69
.line 7
invoke-virtual {v0, v7}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
.line 8
:goto_31
invoke-virtual/range {p1 .. p1}, Ljava/lang/String;->length()I
move-result v3
if-ge v8, v3, :cond_60
.line 9
invoke-virtual {v1, v8}, Ljava/lang/String;->charAt(I)C
move-result v3
.line 10
sget-object v4, Lcom/alibaba/fastjson/serializer/SerializeWriter;->specicalFlags_doubleQuotes:[B
array-length v5, v4
if-ge v3, v5, :cond_44
aget-byte v4, v4, v3
if-nez v4, :cond_4f
:cond_44
if-ne v3, v6, :cond_5a
iget v4, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I
sget-object v5, Lcom/alibaba/fastjson/serializer/SerializerFeature;->WriteSlashAsSpecial:Lcom/alibaba/fastjson/serializer/SerializerFeature;
iget v5, v5, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I
and-int/2addr v4, v5
if-eqz v4, :cond_5a
.line 11
:cond_4f
invoke-virtual {v0, v9}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
.line 12
sget-object v4, Lcom/alibaba/fastjson/serializer/SerializeWriter;->replaceChars:[C
aget-char v3, v4, v3
invoke-virtual {v0, v3}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
goto :goto_5d
.line 13
:cond_5a
invoke-virtual {v0, v3}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
:goto_5d
add-int/lit8 v8, v8, 0x1
goto :goto_31
.line 14
:cond_60
invoke-virtual {v0, v7}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
if-eqz v2, :cond_68
.line 15
invoke-virtual {v0, v2}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
:cond_68
return-void
.line 16
:cond_69
invoke-virtual {v0, v4}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->expandCapacity(I)V
.line 17
:cond_6c
iget v5, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
add-int/lit8 v10, v5, 0x1
add-int v11, v10, v3
.line 18
iget-object v12, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
aput-char v7, v12, v5
.line 19
invoke-virtual {v1, v8, v3, v12, v10}, Ljava/lang/String;->getChars(II[CI)V
.line 20
iput v4, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
if-eqz p3, :cond_235
const/4 v5, -0x1
move v13, v4
move v4, v10
const/4 v12, 0x0
const/4 v14, -0x1
const/4 v15, 0x0
const/16 v16, -0x1
:goto_85
const/16 v8, 0x2028
if-ge v4, v11, :cond_ed
.line 21
iget-object v3, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
aget-char v3, v3, v4
if-ne v3, v8, :cond_9e
add-int/lit8 v12, v12, 0x1
add-int/lit8 v13, v13, 0x4
if-ne v14, v5, :cond_9a
:goto_95
move v15, v3
move v14, v4
move/from16 v16, v14
goto :goto_e8
:cond_9a
:goto_9a
move v15, v3
move/from16 v16, v4
goto :goto_e8
:cond_9e
const/16 v8, 0x5d
if-lt v3, v8, :cond_b2
const/16 v8, 0x7f
if-lt v3, v8, :cond_e8
const/16 v8, 0xa0
if-ge v3, v8, :cond_e8
if-ne v14, v5, :cond_ad
move v14, v4
:cond_ad
add-int/lit8 v12, v12, 0x1
add-int/lit8 v13, v13, 0x4
goto :goto_9a
:cond_b2
const/16 v8, 0x20
if-ne v3, v8, :cond_b8
:cond_b6
:goto_b6
const/4 v6, 0x0
goto :goto_d5
:cond_b8
if-ne v3, v6, :cond_c5
.line 22
iget v8, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I
sget-object v6, Lcom/alibaba/fastjson/serializer/SerializerFeature;->WriteSlashAsSpecial:Lcom/alibaba/fastjson/serializer/SerializerFeature;
iget v6, v6, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I
and-int/2addr v6, v8
if-eqz v6, :cond_c5
:cond_c3
:goto_c3
const/4 v6, 0x1
goto :goto_d5
:cond_c5
const/16 v6, 0x23
if-le v3, v6, :cond_cc
if-eq v3, v9, :cond_cc
goto :goto_b6
:cond_cc
const/16 v6, 0x1f
if-le v3, v6, :cond_c3
if-eq v3, v9, :cond_c3
if-ne v3, v7, :cond_b6
goto :goto_c3
:goto_d5
if-eqz v6, :cond_e8
add-int/lit8 v12, v12, 0x1
.line 23
sget-object v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->specicalFlags_doubleQuotes:[B
array-length v8, v6
if-ge v3, v8, :cond_e5
aget-byte v6, v6, v3
const/4 v8, 0x4
if-ne v6, v8, :cond_e5
add-int/lit8 v13, v13, 0x4
:cond_e5
if-ne v14, v5, :cond_9a
goto :goto_95
:cond_e8
:goto_e8
add-int/lit8 v4, v4, 0x1
const/16 v6, 0x2f
goto :goto_85
:cond_ed
if-lez v12, :cond_235
add-int/2addr v13, v12
.line 24
iget-object v3, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
array-length v3, v3
if-le v13, v3, :cond_f8
.line 25
invoke-virtual {v0, v13}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->expandCapacity(I)V
.line 26
:cond_f8
iput v13, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
const/16 v3, 0x75
const/4 v4, 0x1
if-ne v12, v4, :cond_188
if-ne v15, v8, :cond_127
add-int/lit8 v1, v16, 0x1
add-int/lit8 v5, v16, 0x6
sub-int v11, v11, v16
sub-int/2addr v11, v4
.line 27
iget-object v6, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
invoke-static {v6, v1, v6, v5, v11}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 28
iget-object v5, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
aput-char v9, v5, v16
.line 29
aput-char v3, v5, v1
add-int/2addr v1, v4
const/16 v3, 0x32
.line 30
aput-char v3, v5, v1
add-int/2addr v1, v4
const/16 v6, 0x30
.line 31
aput-char v6, v5, v1
add-int/2addr v1, v4
.line 32
aput-char v3, v5, v1
add-int/2addr v1, v4
const/16 v3, 0x38
.line 33
aput-char v3, v5, v1
goto/16 :goto_235
.line 34
:cond_127
sget-object v1, Lcom/alibaba/fastjson/serializer/SerializeWriter;->specicalFlags_doubleQuotes:[B
array-length v4, v1
if-ge v15, v4, :cond_16f
aget-byte v1, v1, v15
const/4 v4, 0x4
if-ne v1, v4, :cond_16f
add-int/lit8 v1, v16, 0x1
add-int/lit8 v4, v16, 0x6
sub-int v11, v11, v16
const/4 v5, 0x1
sub-int/2addr v11, v5
.line 35
iget-object v5, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
invoke-static {v5, v1, v5, v4, v11}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 36
iget-object v4, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
aput-char v9, v4, v16
add-int/lit8 v5, v1, 0x1
.line 37
aput-char v3, v4, v1
add-int/lit8 v1, v5, 0x1
.line 38
sget-object v3, Lcom/alibaba/fastjson/serializer/SerializeWriter;->DIGITS:[C
ushr-int/lit8 v6, v15, 0xc
and-int/lit8 v6, v6, 0xf
aget-char v6, v3, v6
aput-char v6, v4, v5
add-int/lit8 v5, v1, 0x1
ushr-int/lit8 v6, v15, 0x8
and-int/lit8 v6, v6, 0xf
.line 39
aget-char v6, v3, v6
aput-char v6, v4, v1
add-int/lit8 v1, v5, 0x1
ushr-int/lit8 v6, v15, 0x4
and-int/lit8 v6, v6, 0xf
.line 40
aget-char v6, v3, v6
aput-char v6, v4, v5
and-int/lit8 v5, v15, 0xf
.line 41
aget-char v3, v3, v5
aput-char v3, v4, v1
const/4 v4, 0x1
goto/16 :goto_235
:cond_16f
add-int/lit8 v1, v16, 0x1
add-int/lit8 v3, v16, 0x2
sub-int v11, v11, v16
const/4 v4, 0x1
sub-int/2addr v11, v4
.line 42
iget-object v5, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
invoke-static {v5, v1, v5, v3, v11}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 43
iget-object v3, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
aput-char v9, v3, v16
.line 44
sget-object v5, Lcom/alibaba/fastjson/serializer/SerializeWriter;->replaceChars:[C
aget-char v5, v5, v15
aput-char v5, v3, v1
goto/16 :goto_235
:cond_188
if-le v12, v4, :cond_235
sub-int v4, v14, v10
.line 45
:goto_18c
invoke-virtual/range {p1 .. p1}, Ljava/lang/String;->length()I
move-result v5
if-ge v4, v5, :cond_235
.line 46
invoke-virtual {v1, v4}, Ljava/lang/String;->charAt(I)C
move-result v5
.line 47
sget-object v6, Lcom/alibaba/fastjson/serializer/SerializeWriter;->specicalFlags_doubleQuotes:[B
array-length v10, v6
if-ge v5, v10, :cond_1a3
aget-byte v6, v6, v5
if-nez v6, :cond_1a0
goto :goto_1a3
:cond_1a0
const/16 v6, 0x2f
goto :goto_1b0
:cond_1a3
:goto_1a3
const/16 v6, 0x2f
if-ne v5, v6, :cond_1f3
iget v10, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I
sget-object v11, Lcom/alibaba/fastjson/serializer/SerializerFeature;->WriteSlashAsSpecial:Lcom/alibaba/fastjson/serializer/SerializerFeature;
iget v11, v11, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I
and-int/2addr v10, v11
if-eqz v10, :cond_1f3
.line 48
:goto_1b0
iget-object v10, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
add-int/lit8 v11, v14, 0x1
aput-char v9, v10, v14
.line 49
sget-object v12, Lcom/alibaba/fastjson/serializer/SerializeWriter;->specicalFlags_doubleQuotes:[B
aget-byte v12, v12, v5
const/4 v13, 0x4
if-ne v12, v13, :cond_1ea
add-int/lit8 v12, v11, 0x1
.line 50
aput-char v3, v10, v11
add-int/lit8 v11, v12, 0x1
.line 51
sget-object v14, Lcom/alibaba/fastjson/serializer/SerializeWriter;->DIGITS:[C
ushr-int/lit8 v15, v5, 0xc
and-int/lit8 v15, v15, 0xf
aget-char v15, v14, v15
aput-char v15, v10, v12
add-int/lit8 v12, v11, 0x1
ushr-int/lit8 v15, v5, 0x8
and-int/lit8 v15, v15, 0xf
.line 52
aget-char v15, v14, v15
aput-char v15, v10, v11
add-int/lit8 v11, v12, 0x1
ushr-int/lit8 v15, v5, 0x4
and-int/lit8 v15, v15, 0xf
.line 53
aget-char v15, v14, v15
aput-char v15, v10, v12
add-int/lit8 v12, v11, 0x1
and-int/lit8 v5, v5, 0xf
.line 54
aget-char v5, v14, v5
aput-char v5, v10, v11
goto :goto_228
:cond_1ea
add-int/lit8 v12, v11, 0x1
.line 55
sget-object v14, Lcom/alibaba/fastjson/serializer/SerializeWriter;->replaceChars:[C
aget-char v5, v14, v5
aput-char v5, v10, v11
goto :goto_228
:cond_1f3
const/4 v13, 0x4
if-ne v5, v8, :cond_22a
.line 56
iget-object v10, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
add-int/lit8 v11, v14, 0x1
aput-char v9, v10, v14
add-int/lit8 v12, v11, 0x1
.line 57
aput-char v3, v10, v11
add-int/lit8 v11, v12, 0x1
.line 58
sget-object v14, Lcom/alibaba/fastjson/serializer/SerializeWriter;->DIGITS:[C
ushr-int/lit8 v15, v5, 0xc
and-int/lit8 v15, v15, 0xf
aget-char v15, v14, v15
aput-char v15, v10, v12
add-int/lit8 v12, v11, 0x1
ushr-int/lit8 v15, v5, 0x8
and-int/lit8 v15, v15, 0xf
.line 59
aget-char v15, v14, v15
aput-char v15, v10, v11
add-int/lit8 v11, v12, 0x1
ushr-int/lit8 v15, v5, 0x4
and-int/lit8 v15, v15, 0xf
.line 60
aget-char v15, v14, v15
aput-char v15, v10, v12
add-int/lit8 v12, v11, 0x1
and-int/lit8 v5, v5, 0xf
.line 61
aget-char v5, v14, v5
aput-char v5, v10, v11
:goto_228
move v14, v12
goto :goto_231
.line 62
:cond_22a
iget-object v10, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
add-int/lit8 v11, v14, 0x1
aput-char v5, v10, v14
move v14, v11
:goto_231
add-int/lit8 v4, v4, 0x1
goto/16 :goto_18c
:cond_235
:goto_235
if-eqz v2, :cond_244
.line 63
iget-object v1, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
iget v3, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
add-int/lit8 v4, v3, -0x2
aput-char v7, v1, v4
const/4 v4, 0x1
sub-int/2addr v3, v4
.line 64
aput-char v2, v1, v3
goto :goto_24c
:cond_244
const/4 v4, 0x1
.line 65
iget-object v1, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
iget v2, v0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
sub-int/2addr v2, v4
aput-char v7, v1, v2
:goto_24c
return-void
.end method
.method protected writeStringWithSingleQuote(Ljava/lang/String;)V
.registers 15
const/4 v0, 0x0
if-nez p1, :cond_1b
.line 1
iget p1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
const/4 v1, 0x4
add-int/2addr p1, v1
.line 2
iget-object v2, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
array-length v2, v2
if-le p1, v2, :cond_f
.line 3
invoke-virtual {p0, p1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->expandCapacity(I)V
.line 4
:cond_f
iget-object v2, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
iget v3, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
const-string v4, "null"
invoke-virtual {v4, v0, v1, v2, v3}, Ljava/lang/String;->getChars(II[CI)V
.line 5
iput p1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
return-void
.line 6
:cond_1b
invoke-virtual {p1}, Ljava/lang/String;->length()I
move-result v1
.line 7
iget v2, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
add-int/2addr v2, v1
add-int/lit8 v2, v2, 0x2
.line 8
iget-object v3, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
array-length v3, v3
const/16 v4, 0x2f
const/16 v5, 0xd
const/16 v6, 0x5c
const/16 v7, 0x27
if-le v2, v3, :cond_6c
.line 9
iget-object v3, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writer:Ljava/io/Writer;
if-eqz v3, :cond_69
.line 10
invoke-virtual {p0, v7}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
.line 11
:goto_38
invoke-virtual {p1}, Ljava/lang/String;->length()I
move-result v1
if-ge v0, v1, :cond_65
.line 12
invoke-virtual {p1, v0}, Ljava/lang/String;->charAt(I)C
move-result v1
if-le v1, v5, :cond_58
if-eq v1, v6, :cond_58
if-eq v1, v7, :cond_58
if-ne v1, v4, :cond_54
.line 13
iget v2, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I
sget-object v3, Lcom/alibaba/fastjson/serializer/SerializerFeature;->WriteSlashAsSpecial:Lcom/alibaba/fastjson/serializer/SerializerFeature;
iget v3, v3, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I
and-int/2addr v2, v3
if-eqz v2, :cond_54
goto :goto_58
.line 14
:cond_54
invoke-virtual {p0, v1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
goto :goto_62
.line 15
:cond_58
:goto_58
invoke-virtual {p0, v6}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
.line 16
sget-object v2, Lcom/alibaba/fastjson/serializer/SerializeWriter;->replaceChars:[C
aget-char v1, v2, v1
invoke-virtual {p0, v1}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
:goto_62
add-int/lit8 v0, v0, 0x1
goto :goto_38
.line 17
:cond_65
invoke-virtual {p0, v7}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->write(I)V
return-void
.line 18
:cond_69
invoke-virtual {p0, v2}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->expandCapacity(I)V
.line 19
:cond_6c
iget v3, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
add-int/lit8 v8, v3, 0x1
add-int v9, v8, v1
.line 20
iget-object v10, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
aput-char v7, v10, v3
.line 21
invoke-virtual {p1, v0, v1, v10, v8}, Ljava/lang/String;->getChars(II[CI)V
.line 22
iput v2, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
const/4 p1, -0x1
move p1, v8
const/4 v1, -0x1
const/4 v3, 0x0
:goto_7f
if-ge p1, v9, :cond_9d
.line 23
iget-object v10, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
aget-char v10, v10, p1
if-le v10, v5, :cond_96
if-eq v10, v6, :cond_96
if-eq v10, v7, :cond_96
if-ne v10, v4, :cond_9a
.line 24
iget v11, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I
sget-object v12, Lcom/alibaba/fastjson/serializer/SerializerFeature;->WriteSlashAsSpecial:Lcom/alibaba/fastjson/serializer/SerializerFeature;
iget v12, v12, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I
and-int/2addr v11, v12
if-eqz v11, :cond_9a
:cond_96
add-int/lit8 v0, v0, 0x1
move v1, p1
move v3, v10
:cond_9a
add-int/lit8 p1, p1, 0x1
goto :goto_7f
:cond_9d
add-int/2addr v2, v0
.line 25
iget-object p1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
array-length p1, p1
if-le v2, p1, :cond_a6
.line 26
invoke-virtual {p0, v2}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->expandCapacity(I)V
.line 27
:cond_a6
iput v2, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
const/4 p1, 0x1
if-ne v0, p1, :cond_c1
.line 28
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
add-int/lit8 v2, v1, 0x1
add-int/lit8 v4, v1, 0x2
sub-int/2addr v9, v1
sub-int/2addr v9, p1
invoke-static {v0, v2, v0, v4, v9}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 29
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
aput-char v6, v0, v1
.line 30
sget-object v1, Lcom/alibaba/fastjson/serializer/SerializeWriter;->replaceChars:[C
aget-char v1, v1, v3
aput-char v1, v0, v2
goto :goto_10e
:cond_c1
if-le v0, p1, :cond_10e
.line 31
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
add-int/lit8 v2, v1, 0x1
add-int/lit8 v10, v1, 0x2
sub-int v11, v9, v1
sub-int/2addr v11, p1
invoke-static {v0, v2, v0, v10, v11}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 32
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
aput-char v6, v0, v1
.line 33
sget-object v1, Lcom/alibaba/fastjson/serializer/SerializeWriter;->replaceChars:[C
aget-char v1, v1, v3
aput-char v1, v0, v2
add-int/2addr v9, p1
add-int/lit8 v2, v2, -0x2
:goto_dc
if-lt v2, v8, :cond_10e
.line 34
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
aget-char v0, v0, v2
if-le v0, v5, :cond_f3
if-eq v0, v6, :cond_f3
if-eq v0, v7, :cond_f3
if-ne v0, v4, :cond_10b
.line 35
iget v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->features:I
sget-object v3, Lcom/alibaba/fastjson/serializer/SerializerFeature;->WriteSlashAsSpecial:Lcom/alibaba/fastjson/serializer/SerializerFeature;
iget v3, v3, Lcom/alibaba/fastjson/serializer/SerializerFeature;->mask:I
and-int/2addr v1, v3
if-eqz v1, :cond_10b
.line 36
:cond_f3
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
add-int/lit8 v3, v2, 0x1
add-int/lit8 v10, v2, 0x2
sub-int v11, v9, v2
sub-int/2addr v11, p1
invoke-static {v1, v3, v1, v10, v11}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 37
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
aput-char v6, v1, v2
.line 38
sget-object v10, Lcom/alibaba/fastjson/serializer/SerializeWriter;->replaceChars:[C
aget-char v0, v10, v0
aput-char v0, v1, v3
add-int/lit8 v9, v9, 0x1
:cond_10b
add-int/lit8 v2, v2, -0x1
goto :goto_dc
.line 39
:cond_10e
:goto_10e
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
iget v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
sub-int/2addr v1, p1
aput-char v7, v0, v1
return-void
.end method
.method public writeTo(Ljava/io/OutputStream;Ljava/lang/String;)V
.registers 3
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 4
invoke-static {p2}, Ljava/nio/charset/Charset;->forName(Ljava/lang/String;)Ljava/nio/charset/Charset;
move-result-object p2
invoke-virtual {p0, p1, p2}, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writeTo(Ljava/io/OutputStream;Ljava/nio/charset/Charset;)V
return-void
.end method
.method public writeTo(Ljava/io/OutputStream;Ljava/nio/charset/Charset;)V
.registers 7
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 5
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writer:Ljava/io/Writer;
if-nez v0, :cond_1a
.line 6
new-instance v0, Ljava/lang/String;
iget-object v1, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
const/4 v2, 0x0
iget v3, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
invoke-direct {v0, v1, v2, v3}, Ljava/lang/String;-><init>([CII)V
invoke-virtual {p2}, Ljava/nio/charset/Charset;->name()Ljava/lang/String;
move-result-object p2
invoke-virtual {v0, p2}, Ljava/lang/String;->getBytes(Ljava/lang/String;)[B
move-result-object p2
.line 7
invoke-virtual {p1, p2}, Ljava/io/OutputStream;->write([B)V
return-void
.line 8
:cond_1a
new-instance p1, Ljava/lang/UnsupportedOperationException;
const-string/jumbo p2, "writer not null"
invoke-direct {p1, p2}, Ljava/lang/UnsupportedOperationException;-><init>(Ljava/lang/String;)V
throw p1
.end method
.method public writeTo(Ljava/io/Writer;)V
.registers 5
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 1
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->writer:Ljava/io/Writer;
if-nez v0, :cond_d
.line 2
iget-object v0, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->buf:[C
const/4 v1, 0x0
iget v2, p0, Lcom/alibaba/fastjson/serializer/SerializeWriter;->count:I
invoke-virtual {p1, v0, v1, v2}, Ljava/io/Writer;->write([CII)V
return-void
.line 3
:cond_d
new-instance p1, Ljava/lang/UnsupportedOperationException;
const-string/jumbo v0, "writer not null"
invoke-direct {p1, v0}, Ljava/lang/UnsupportedOperationException;-><init>(Ljava/lang/String;)V
throw p1
.end method