line |
true |
false |
branch |
433
|
57 |
0 |
if ( !cxt->mojo_boolean_stash ) |
435
|
57 |
0 |
if ( !cxt->jsonold_boolean_stash ) |
460
|
0 |
114 |
if (!SvOBJECT(sv) || !SvSTASH(sv)) { |
|
0 |
0 |
if (!SvOBJECT(sv) || !SvSTASH(sv)) { |
476
|
200 |
0 |
if (SvLEN (sv) > SvCUR (sv) + 1) |
494
|
2791 |
0 |
if (LIKELY(len >= 2 |
|
1308 |
1483 |
if (LIKELY(len >= 2 |
|
1308 |
1483 |
if (LIKELY(len >= 2 |
|
1306 |
2 |
if (LIKELY(len >= 2 |
506
|
4 |
1481 |
UV c = utf8n_to_uvuni (s, len, clen, |
572
|
0 |
1335 |
if (UNLIKELY(ch < 0x000080)) |
574
|
736 |
599 |
else if (LIKELY(ch < 0x000800)) |
577
|
267 |
332 |
else if (ch < 0x010000) |
581
|
332 |
0 |
else if (ch < 0x110000) |
596
|
50 |
303 |
: offset; |
722
|
17 |
62 |
if (*s == '-') |
740
|
17 |
62 |
return neg ? -accum : accum; |
747
|
26 |
39 |
return (stash == gv_stashpvs ("Math::BigInt", 0) || stash == gv_stashpvs ("Math::BigFloat", 0)) ? 1 : 0; |
|
25 |
1 |
return (stash == gv_stashpvs ("Math::BigInt", 0) || stash == gv_stashpvs ("Math::BigFloat", 0)) ? 1 : 0; |
760
|
73 |
58 |
return (stash == bstash || stash == mstash || stash == oldstash) ? 1 : 0; |
|
73 |
0 |
return (stash == bstash || stash == mstash || stash == oldstash) ? 1 : 0; |
|
0 |
73 |
return (stash == bstash || stash == mstash || stash == oldstash) ? 1 : 0; |
769
|
27 |
1821 |
if (svt < SVt_PVAV) |
772
|
24 |
3 |
char *pv = svt ? SvPV_nomg (sv, len) : 0; |
|
9 |
15 |
char *pv = svt ? SvPV_nomg (sv, len) : 0; |
774
|
9 |
18 |
if (len == 1) { |
775
|
5 |
4 |
if (*pv == '1') |
777
|
3 |
1 |
else if (*pv == '0') |
790
|
7 |
1835 |
if (!SvROK (scalar)) |
795
|
1821 |
14 |
if (!SvOBJECT (scalar) && ref_bool_type (aTHX_ scalar) >= 0) |
|
0 |
1821 |
if (!SvOBJECT (scalar) && ref_bool_type (aTHX_ scalar) >= 0) |
798
|
14 |
1821 |
if (SvOBJECT (scalar) && is_bool_obj (aTHX_ scalar)) |
|
2 |
12 |
if (SvOBJECT (scalar) && is_bool_obj (aTHX_ scalar)) |
826
|
3172 |
57475 |
if (UNLIKELY(enc->cur + len >= enc->end)) |
829
|
3172 |
0 |
SvGROW (enc->sv, cur + (len < (cur >> 2) ? cur >> 2 : len) + 1); |
|
1863 |
1309 |
SvGROW (enc->sv, cur + (len < (cur >> 2) ? cur >> 2 : len) + 1); |
859
|
48004 |
2344 |
while (str < end) |
866
|
46114 |
1890 |
if (LIKELY(ch >= 0x20 && ch < 0x80)) /* most common case */ |
|
39754 |
6360 |
if (LIKELY(ch >= 0x20 && ch < 0x80)) /* most common case */ |
869
|
225 |
39529 |
if (UNLIKELY(ch == '"')) /* but with slow exceptions */ |
876
|
414 |
39115 |
else if (UNLIKELY(ch == '\\')) |
883
|
39 |
39076 |
else if (UNLIKELY(ch == '/' && (enc->json.flags & F_ESCAPE_SLASH))) |
|
1 |
38 |
else if (UNLIKELY(ch == '/' && (enc->json.flags & F_ESCAPE_SLASH))) |
918
|
3637 |
4053 |
if (is_utf8 && !(enc->json.flags & F_BINARY)) |
|
1620 |
2017 |
if (is_utf8 && !(enc->json.flags & F_BINARY)) |
922
|
0 |
1620 |
if (clen == (STRLEN)-1) |
931
|
6360 |
1330 |
if (uch < 0x80/*0x20*/ || uch >= enc->limit) |
|
5195 |
1165 |
if (uch < 0x80/*0x20*/ || uch >= enc->limit) |
933
|
5015 |
1510 |
if (enc->json.flags & F_BINARY) |
943
|
320 |
1190 |
else if (uch >= 0x10000UL) |
945
|
0 |
320 |
if (uch >= 0x110000UL) |
969
|
8 |
1157 |
else if (enc->json.flags & F_LATIN1) |
975
|
0 |
1157 |
else if (enc->json.flags & F_BINARY) |
981
|
915 |
242 |
else if (is_utf8) |
989
|
1851 |
915 |
while (--clen); |
1015
|
32 |
3695 |
if (enc->json.flags & F_INDENT) |
1034
|
40 |
3810 |
if (enc->json.flags & F_INDENT) |
1045
|
8 |
1201 |
if (enc->json.flags & F_INDENT) |
1047
|
0 |
1201 |
else if (enc->json.flags & F_SPACE_AFTER) |
1059
|
1 |
896 |
if (enc->indent >= enc->json.max_depth) |
1062
|
0 |
896 |
SvGETMAGIC (typesv); |
|
0 |
0 |
SvGETMAGIC (typesv); |
1064
|
874 |
22 |
if (UNLIKELY (SvOK (typesv))) |
|
874 |
0 |
if (UNLIKELY (SvOK (typesv))) |
|
0 |
874 |
if (UNLIKELY (SvOK (typesv))) |
|
0 |
874 |
if (UNLIKELY (SvOK (typesv))) |
1066
|
22 |
0 |
if (SvROK (typesv) && |
|
16 |
6 |
if (SvROK (typesv) && |
1067
|
11 |
5 |
SvOBJECT (SvRV (typesv)) && |
1071
|
11 |
0 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
|
11 |
0 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
|
11 |
0 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
|
0 |
11 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
|
0 |
0 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
|
11 |
0 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
|
0 |
11 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
1072
|
11 |
0 |
if (LIKELY (name && strEQ (name, JSON_TYPE_ANYOF_CLASS))) |
|
11 |
0 |
if (LIKELY (name && strEQ (name, JSON_TYPE_ANYOF_CLASS))) |
1076
|
0 |
11 |
if (UNLIKELY (!typesv_ref)) |
1077
|
0 |
0 |
croak ("incorrectly constructed anyof type (%s, 0x%x) was specified for '%s'", |
|
0 |
0 |
croak ("incorrectly constructed anyof type (%s, 0x%x) was specified for '%s'", |
1081
|
0 |
11 |
SvGETMAGIC (typesv); |
|
0 |
0 |
SvGETMAGIC (typesv); |
1082
|
0 |
11 |
if (!SvOK (typesv)) |
|
0 |
0 |
if (!SvOK (typesv)) |
|
0 |
0 |
if (!SvOK (typesv)) |
1083
|
0 |
0 |
croak ("no array alternative in anyof was specified for '%s'", |
1088
|
0 |
22 |
if (UNLIKELY (!SvROK (typesv))) |
1089
|
0 |
0 |
croak ("encountered type (%s, 0x%x) was specified for '%s'", |
|
0 |
0 |
croak ("encountered type (%s, 0x%x) was specified for '%s'", |
1093
|
9 |
13 |
if (!SvOBJECT (SvRV (typesv)) && SvTYPE (SvRV (typesv)) == SVt_PVAV) |
|
9 |
0 |
if (!SvOBJECT (SvRV (typesv)) && SvTYPE (SvRV (typesv)) == SVt_PVAV) |
1096
|
0 |
9 |
if (len != av_len (typeav)) |
1097
|
0 |
0 |
croak ("array '%s' has different number of elements as in specified type '%s'", |
|
0 |
0 |
croak ("array '%s' has different number of elements as in specified type '%s'", |
1101
|
13 |
0 |
else if (SvOBJECT (SvRV (typesv)) && |
|
13 |
0 |
else if (SvOBJECT (SvRV (typesv)) && |
1105
|
13 |
0 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
|
13 |
0 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
|
13 |
0 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
|
0 |
13 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
|
0 |
0 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
|
13 |
0 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
|
0 |
13 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
1106
|
13 |
0 |
if (LIKELY (name && strEQ (name, JSON_TYPE_ARRAYOF_CLASS))) |
|
13 |
0 |
if (LIKELY (name && strEQ (name, JSON_TYPE_ARRAYOF_CLASS))) |
1109
|
0 |
0 |
croak ("encountered type (%s, 0x%x) was specified for '%s'", |
|
0 |
0 |
croak ("encountered type (%s, 0x%x) was specified for '%s'", |
1114
|
0 |
0 |
croak ("encountered type (%s, 0x%x) was specified for '%s'", |
|
0 |
0 |
croak ("encountered type (%s, 0x%x) was specified for '%s'", |
1121
|
886 |
10 |
if (len >= 0) |
1125
|
1732 |
871 |
for (i = 0; i <= len; ++i) |
1129
|
23 |
1709 |
if (typeav) |
1132
|
23 |
0 |
if (typerv) |
1138
|
1730 |
2 |
if (svp) |
1143
|
846 |
871 |
if (i < len) |
1158
|
1 |
745 |
if (He_IS_SVKEY(he)) |
1161
|
1 |
0 |
SV *sv = HeSVKEY (he); |
|
1 |
0 |
SV *sv = HeSVKEY (he); |
1162
|
1 |
0 |
*key = SvPV (sv, len); |
1173
|
4 |
742 |
if (utf8) *klen = -(*klen); |
1183
|
7 |
739 |
if (enc->json.flags & F_SPACE_BEFORE) encode_space (aTHX_ enc); |
1185
|
7 |
739 |
if (enc->json.flags & F_SPACE_AFTER ) encode_space (aTHX_ enc); |
1200
|
198 |
112 |
if (!(cmp = memcmp (HeKEY (b), HeKEY (a), lb < la ? lb : la))) |
1211
|
357 |
0 |
return sv_cmp (HeSVKEY_force (*(HE **)b), HeSVKEY_force (*(HE **)a)); |
|
0 |
357 |
return sv_cmp (HeSVKEY_force (*(HE **)b), HeSVKEY_force (*(HE **)a)); |
|
4 |
353 |
return sv_cmp (HeSVKEY_force (*(HE **)b), HeSVKEY_force (*(HE **)a)); |
|
357 |
0 |
return sv_cmp (HeSVKEY_force (*(HE **)b), HeSVKEY_force (*(HE **)a)); |
|
0 |
357 |
return sv_cmp (HeSVKEY_force (*(HE **)b), HeSVKEY_force (*(HE **)a)); |
|
7 |
350 |
return sv_cmp (HeSVKEY_force (*(HE **)b), HeSVKEY_force (*(HE **)a)); |
1220
|
1 |
393 |
if (enc->indent >= enc->json.max_depth) |
1223
|
0 |
393 |
SvGETMAGIC (typesv); |
|
0 |
0 |
SvGETMAGIC (typesv); |
1225
|
376 |
17 |
if (UNLIKELY (SvOK (typesv))) |
|
376 |
0 |
if (UNLIKELY (SvOK (typesv))) |
|
0 |
376 |
if (UNLIKELY (SvOK (typesv))) |
|
0 |
376 |
if (UNLIKELY (SvOK (typesv))) |
1227
|
17 |
0 |
if (SvROK (typesv) && |
|
6 |
11 |
if (SvROK (typesv) && |
1228
|
4 |
2 |
SvOBJECT (SvRV (typesv)) && |
1232
|
4 |
0 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
|
4 |
0 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
|
4 |
0 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
|
0 |
4 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
|
0 |
0 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
|
4 |
0 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
|
0 |
4 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
1233
|
4 |
0 |
if (LIKELY (name && strEQ (name, JSON_TYPE_ANYOF_CLASS))) |
|
4 |
0 |
if (LIKELY (name && strEQ (name, JSON_TYPE_ANYOF_CLASS))) |
1237
|
0 |
4 |
if (UNLIKELY (!typesv_ref)) |
1238
|
0 |
0 |
croak ("incorrectly constructed anyof type (%s, 0x%x) was specified for '%s'", |
|
0 |
0 |
croak ("incorrectly constructed anyof type (%s, 0x%x) was specified for '%s'", |
1242
|
0 |
4 |
SvGETMAGIC (typesv); |
|
0 |
0 |
SvGETMAGIC (typesv); |
1243
|
0 |
4 |
if (!SvOK (typesv)) |
|
0 |
0 |
if (!SvOK (typesv)) |
|
0 |
0 |
if (!SvOK (typesv)) |
1244
|
0 |
0 |
croak ("no hash alternative in anyof was specified for '%s'", |
1249
|
0 |
17 |
if (UNLIKELY (!SvROK (typesv))) |
1250
|
0 |
0 |
croak ("encountered type (%s, 0x%x) was specified for '%s'", |
|
0 |
0 |
croak ("encountered type (%s, 0x%x) was specified for '%s'", |
1254
|
13 |
4 |
if (!SvOBJECT (SvRV (typesv)) && SvTYPE (SvRV (typesv)) == SVt_PVHV) |
|
13 |
0 |
if (!SvOBJECT (SvRV (typesv)) && SvTYPE (SvRV (typesv)) == SVt_PVHV) |
1256
|
4 |
0 |
else if (SvOBJECT (SvRV (typesv)) && |
|
4 |
0 |
else if (SvOBJECT (SvRV (typesv)) && |
1260
|
4 |
0 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
|
4 |
0 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
|
4 |
0 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
|
0 |
4 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
|
0 |
0 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
|
4 |
0 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
|
0 |
4 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
1261
|
4 |
0 |
if (LIKELY (name && strEQ (name, JSON_TYPE_HASHOF_CLASS))) |
|
4 |
0 |
if (LIKELY (name && strEQ (name, JSON_TYPE_HASHOF_CLASS))) |
1264
|
0 |
0 |
croak ("encountered type (%s, 0x%x) was specified for '%s'", |
|
0 |
0 |
croak ("encountered type (%s, 0x%x) was specified for '%s'", |
1269
|
0 |
0 |
croak ("encountered type (%s, 0x%x) was specified for '%s'", |
|
0 |
0 |
croak ("encountered type (%s, 0x%x) was specified for '%s'", |
1279
|
239 |
154 |
if (enc->json.flags & F_CANONICAL && !SvTIED_mg((SV*)hv, PERL_MAGIC_tied)) |
|
0 |
239 |
if (enc->json.flags & F_CANONICAL && !SvTIED_mg((SV*)hv, PERL_MAGIC_tied)) |
|
0 |
0 |
if (enc->json.flags & F_CANONICAL && !SvTIED_mg((SV*)hv, PERL_MAGIC_tied)) |
1283
|
0 |
239 |
if (SvMAGICAL (hv)) |
1291
|
0 |
0 |
while (hv_iternext (hv)) |
1297
|
233 |
6 |
if (count) |
1304
|
0 |
233 |
if (count > STACK_HES) |
1311
|
584 |
233 |
while ((he = hv_iternext (hv))) |
1314
|
584 |
0 |
if (HeKLEN (he) < 0 || HeKUTF8 (he)) |
|
3 |
581 |
if (HeKLEN (he) < 0 || HeKUTF8 (he)) |
1320
|
230 |
3 |
if (fast) |
1336
|
3 |
0 |
FREETMPS; |
1342
|
584 |
232 |
while (count--) |
1352
|
29 |
555 |
if (UNLIKELY (PTR2ul (typehv))) |
1355
|
0 |
29 |
if (UNLIKELY (!typesv_ref)) |
1361
|
0 |
584 |
encode_sv (aTHX_ enc, UNLIKELY(SvMAGICAL (hv)) ? hv_iterval (hv, he) : HeVAL (he), typesv); |
1363
|
351 |
232 |
if (count) |
1372
|
5 |
149 |
if (hv_iterinit (hv) || SvMAGICAL (hv)) |
|
1 |
4 |
if (hv_iterinit (hv) || SvMAGICAL (hv)) |
1373
|
150 |
0 |
if ((he = hv_iternext (hv))) |
1386
|
0 |
162 |
if (UNLIKELY (PTR2ul (typehv))) |
1389
|
0 |
0 |
if (UNLIKELY (!typesv_ref)) |
1395
|
1 |
161 |
encode_sv (aTHX_ enc, UNLIKELY(SvMAGICAL (hv)) ? hv_iterval (hv, he) : HeVAL (he), typesv); |
1397
|
146 |
12 |
if (!(he = hv_iternext (hv))) |
1435
|
9 |
2 |
if (isref && SvAMAGIC(sv)) |
|
9 |
0 |
if (isref && SvAMAGIC(sv)) |
|
9 |
0 |
if (isref && SvAMAGIC(sv)) |
|
9 |
0 |
if (isref && SvAMAGIC(sv)) |
1438
|
2 |
0 |
else if (!MyAMG(sv) && !(enc->json.flags & F_ALLOW_STRINGIFY)) { |
|
2 |
0 |
else if (!MyAMG(sv) && !(enc->json.flags & F_ALLOW_STRINGIFY)) { |
|
2 |
0 |
else if (!MyAMG(sv) && !(enc->json.flags & F_ALLOW_STRINGIFY)) { |
1439
|
0 |
2 |
if (isref && !(enc->json.flags & F_ALLOW_UNKNOWN)) |
|
0 |
0 |
if (isref && !(enc->json.flags & F_ALLOW_UNKNOWN)) |
1440
|
0 |
0 |
croak ("cannot encode reference to scalar '%s' unless the scalar is 0 or 1", |
1446
|
9 |
0 |
if (type != SVt_PVAV && type != SVt_PVHV && type != SVt_PVFM) { |
|
9 |
0 |
if (type != SVt_PVAV && type != SVt_PVHV && type != SVt_PVFM) { |
|
9 |
0 |
if (type != SVt_PVAV && type != SVt_PVHV && type != SVt_PVFM) { |
1451
|
0 |
9 |
SvSETMAGIC(pv); |
1452
|
0 |
9 |
str = SvPVutf8_force(pv, len); |
1473
|
0 |
9 |
if (!len) { |
1480
|
0 |
0 |
if (SvGMAGICAL(sv)) mg_get(sv); |
1481
|
0 |
0 |
if (MyAMG(sv)) { /* force a RV here */ |
|
0 |
0 |
if (MyAMG(sv)) { /* force a RV here */ |
1496
|
0 |
0 |
TAINT_IF(pv && SvTAINTED(pv)); |
|
0 |
0 |
TAINT_IF(pv && SvTAINTED(pv)); |
|
0 |
0 |
TAINT_IF(pv && SvTAINTED(pv)); |
|
0 |
0 |
TAINT_IF(pv && SvTAINTED(pv)); |
1497
|
0 |
0 |
if (pv && SvPOK(pv)) { |
|
0 |
0 |
if (pv && SvPOK(pv)) { |
1498
|
0 |
0 |
str = SvPVutf8_force(pv, len); |
1508
|
9 |
0 |
if (UNLIKELY(isref == 1 && (enc->json.flags & F_ALLOW_BIGNUM) && str && str[0] == '+')) { |
|
9 |
0 |
if (UNLIKELY(isref == 1 && (enc->json.flags & F_ALLOW_BIGNUM) && str && str[0] == '+')) { |
|
9 |
0 |
if (UNLIKELY(isref == 1 && (enc->json.flags & F_ALLOW_BIGNUM) && str && str[0] == '+')) { |
|
9 |
0 |
if (UNLIKELY(isref == 1 && (enc->json.flags & F_ALLOW_BIGNUM) && str && str[0] == '+')) { |
|
9 |
0 |
if (UNLIKELY(isref == 1 && (enc->json.flags & F_ALLOW_BIGNUM) && str && str[0] == '+')) { |
|
0 |
9 |
if (UNLIKELY(isref == 1 && (enc->json.flags & F_ALLOW_BIGNUM) && str && str[0] == '+')) { |
1513
|
9 |
0 |
if (UNLIKELY( |
|
9 |
0 |
if (UNLIKELY( |
|
9 |
0 |
if (UNLIKELY( |
|
9 |
0 |
if (UNLIKELY( |
|
9 |
0 |
if (UNLIKELY( |
|
6 |
3 |
if (UNLIKELY( |
|
0 |
6 |
if (UNLIKELY( |
|
6 |
3 |
if (UNLIKELY( |
|
2 |
4 |
if (UNLIKELY( |
|
4 |
5 |
if (UNLIKELY( |
|
2 |
2 |
if (UNLIKELY( |
|
7 |
2 |
if (UNLIKELY( |
1520
|
7 |
0 |
if (is_bignum_obj (aTHX_ SvRV (sv))) |
1522
|
4 |
3 |
if (enc->json.infnan_mode == 0) { |
1524
|
4 |
0 |
if (pv) SvREFCNT_dec(pv); |
1526
|
3 |
0 |
} else if (enc->json.infnan_mode == 3) { |
1527
|
2 |
1 |
if (memEQc(str, "NaN") || memEQc(str, "nan")) |
|
0 |
2 |
if (memEQc(str, "NaN") || memEQc(str, "nan")) |
1529
|
1 |
1 |
else if (memEQc(str, "inf")) |
1533
|
3 |
0 |
if (pv) SvREFCNT_dec(pv); |
1538
|
0 |
2 |
if (!str) |
1541
|
0 |
2 |
if (isref != 1) |
1544
|
0 |
2 |
if (isref != 1) |
1553
|
37 |
28 |
if (is_bool_obj (aTHX_ sv)) |
1555
|
3 |
34 |
if (as_string) |
1557
|
37 |
0 |
if (SvIV_nomg (sv)) |
|
21 |
16 |
if (SvIV_nomg (sv)) |
1561
|
3 |
34 |
if (as_string) |
1564
|
0 |
28 |
else if (force_conversion && enc->json.flags & F_CONV_BLESSED) |
|
0 |
0 |
else if (force_conversion && enc->json.flags & F_CONV_BLESSED) |
1566
|
0 |
0 |
if (as_string) |
1568
|
0 |
0 |
if (SvTRUE_nomg (sv)) |
|
0 |
0 |
if (SvTRUE_nomg (sv)) |
|
0 |
0 |
if (SvTRUE_nomg (sv)) |
|
0 |
0 |
if (SvTRUE_nomg (sv)) |
|
0 |
0 |
if (SvTRUE_nomg (sv)) |
|
0 |
0 |
if (SvTRUE_nomg (sv)) |
|
0 |
0 |
if (SvTRUE_nomg (sv)) |
|
0 |
0 |
if (SvTRUE_nomg (sv)) |
|
0 |
0 |
if (SvTRUE_nomg (sv)) |
|
0 |
0 |
if (SvTRUE_nomg (sv)) |
|
0 |
0 |
if (SvTRUE_nomg (sv)) |
|
0 |
0 |
if (SvTRUE_nomg (sv)) |
|
0 |
0 |
if (SvTRUE_nomg (sv)) |
|
0 |
0 |
if (SvTRUE_nomg (sv)) |
|
0 |
0 |
if (SvTRUE_nomg (sv)) |
|
0 |
0 |
if (SvTRUE_nomg (sv)) |
|
0 |
0 |
if (SvTRUE_nomg (sv)) |
1572
|
0 |
0 |
if (as_string) |
1586
|
5 |
22 |
if (bool_type == 1) |
1588
|
3 |
19 |
else if (bool_type == 0) |
1608
|
53 |
29 |
if (UNLIKELY (SvOBJECT (sv))) |
1610
|
28 |
25 |
if (!encode_bool_obj (aTHX_ enc, sv, 0, 0)) |
1613
|
7 |
21 |
if ((enc->json.flags & F_ALLOW_TAGS) |
1614
|
6 |
1 |
&& (method = gv_fetchmethod_autoload (stash, "FREEZE", 0))) |
1620
|
0 |
6 |
ENTER; SAVETMPS; SAVESTACK_POS (); PUSHMARK (SP); |
|
0 |
6 |
ENTER; SAVETMPS; SAVESTACK_POS (); PUSHMARK (SP); |
1621
|
0 |
6 |
EXTEND (SP, 2); |
1631
|
2 |
4 |
if (SvROK (TOPs) && SvRV (TOPs) == sv) |
|
0 |
2 |
if (SvROK (TOPs) && SvRV (TOPs) == sv) |
1632
|
0 |
0 |
croak ("%s::FREEZE method returned same object as was passed instead of a new one", |
|
0 |
0 |
croak ("%s::FREEZE method returned same object as was passed instead of a new one", |
1633
|
0 |
0 |
HvNAME (SvSTASH (sv))); |
|
0 |
0 |
HvNAME (SvSTASH (sv))); |
|
0 |
0 |
HvNAME (SvSTASH (sv))); |
|
0 |
0 |
HvNAME (SvSTASH (sv))); |
1637
|
6 |
0 |
encode_str (aTHX_ enc, HvNAME (stash), HvNAMELEN (stash), HvNAMEUTF8 (stash)); |
|
6 |
0 |
encode_str (aTHX_ enc, HvNAME (stash), HvNAMELEN (stash), HvNAMEUTF8 (stash)); |
|
0 |
6 |
encode_str (aTHX_ enc, HvNAME (stash), HvNAMELEN (stash), HvNAMEUTF8 (stash)); |
|
0 |
0 |
encode_str (aTHX_ enc, HvNAME (stash), HvNAMELEN (stash), HvNAMEUTF8 (stash)); |
|
6 |
0 |
encode_str (aTHX_ enc, HvNAME (stash), HvNAMELEN (stash), HvNAMEUTF8 (stash)); |
|
0 |
6 |
encode_str (aTHX_ enc, HvNAME (stash), HvNAMELEN (stash), HvNAMEUTF8 (stash)); |
|
0 |
6 |
encode_str (aTHX_ enc, HvNAME (stash), HvNAMELEN (stash), HvNAMEUTF8 (stash)); |
|
6 |
0 |
encode_str (aTHX_ enc, HvNAME (stash), HvNAMELEN (stash), HvNAMEUTF8 (stash)); |
|
6 |
0 |
encode_str (aTHX_ enc, HvNAME (stash), HvNAMELEN (stash), HvNAMEUTF8 (stash)); |
|
0 |
6 |
encode_str (aTHX_ enc, HvNAME (stash), HvNAMELEN (stash), HvNAMEUTF8 (stash)); |
|
0 |
0 |
encode_str (aTHX_ enc, HvNAME (stash), HvNAMELEN (stash), HvNAMEUTF8 (stash)); |
|
6 |
0 |
encode_str (aTHX_ enc, HvNAME (stash), HvNAMELEN (stash), HvNAMEUTF8 (stash)); |
|
0 |
6 |
encode_str (aTHX_ enc, HvNAME (stash), HvNAMELEN (stash), HvNAMEUTF8 (stash)); |
|
6 |
0 |
encode_str (aTHX_ enc, HvNAME (stash), HvNAMELEN (stash), HvNAMEUTF8 (stash)); |
|
6 |
0 |
encode_str (aTHX_ enc, HvNAME (stash), HvNAMELEN (stash), HvNAMEUTF8 (stash)); |
|
0 |
6 |
encode_str (aTHX_ enc, HvNAME (stash), HvNAMELEN (stash), HvNAMEUTF8 (stash)); |
|
0 |
0 |
encode_str (aTHX_ enc, HvNAME (stash), HvNAMELEN (stash), HvNAMEUTF8 (stash)); |
|
6 |
0 |
encode_str (aTHX_ enc, HvNAME (stash), HvNAMELEN (stash), HvNAMEUTF8 (stash)); |
|
0 |
6 |
encode_str (aTHX_ enc, HvNAME (stash), HvNAMELEN (stash), HvNAMEUTF8 (stash)); |
1642
|
255 |
6 |
while (count) |
1647
|
249 |
6 |
if (count) |
1656
|
6 |
0 |
FREETMPS; LEAVE; |
1658
|
18 |
4 |
else if ((enc->json.flags & F_CONV_BLESSED) |
1659
|
7 |
11 |
&& (method = gv_fetchmethod_autoload (stash, "TO_JSON", 0))) |
1663
|
0 |
7 |
ENTER; SAVETMPS; PUSHMARK (SP); |
1665
|
0 |
7 |
XPUSHs (rv); |
1673
|
3 |
4 |
if (SvROK (TOPs) && SvRV (TOPs) == sv) |
|
1 |
2 |
if (SvROK (TOPs) && SvRV (TOPs) == sv) |
1674
|
1 |
0 |
croak ("%s::TO_JSON method returned same object as was passed instead of a new one", HvNAME (SvSTASH (sv))); |
|
1 |
0 |
croak ("%s::TO_JSON method returned same object as was passed instead of a new one", HvNAME (SvSTASH (sv))); |
|
0 |
1 |
croak ("%s::TO_JSON method returned same object as was passed instead of a new one", HvNAME (SvSTASH (sv))); |
|
0 |
0 |
croak ("%s::TO_JSON method returned same object as was passed instead of a new one", HvNAME (SvSTASH (sv))); |
|
1 |
0 |
croak ("%s::TO_JSON method returned same object as was passed instead of a new one", HvNAME (SvSTASH (sv))); |
|
0 |
1 |
croak ("%s::TO_JSON method returned same object as was passed instead of a new one", HvNAME (SvSTASH (sv))); |
1681
|
6 |
0 |
FREETMPS; LEAVE; |
1683
|
9 |
6 |
else if ((enc->json.flags & F_ALLOW_BIGNUM) && is_bignum_obj (aTHX_ sv)) |
|
9 |
0 |
else if ((enc->json.flags & F_ALLOW_BIGNUM) && is_bignum_obj (aTHX_ sv)) |
1685
|
2 |
4 |
else if (enc->json.flags & F_CONV_BLESSED) |
1687
|
2 |
2 |
else if (enc->json.flags & F_ALLOW_BLESSED) |
1690
|
0 |
2 |
croak ("encountered object '%s', but neither allow_blessed, convert_blessed nor allow_tags settings are enabled (or TO_JSON/FREEZE method missing)", |
1694
|
26 |
3 |
else if (svt < SVt_PVAV && svt != SVt_PVGV && svt != SVt_PVHV && svt != SVt_PVAV) |
|
24 |
2 |
else if (svt < SVt_PVAV && svt != SVt_PVGV && svt != SVt_PVHV && svt != SVt_PVAV) |
|
24 |
0 |
else if (svt < SVt_PVAV && svt != SVt_PVGV && svt != SVt_PVHV && svt != SVt_PVAV) |
|
24 |
0 |
else if (svt < SVt_PVAV && svt != SVt_PVGV && svt != SVt_PVHV && svt != SVt_PVAV) |
1696
|
19 |
5 |
if (!encode_bool_ref (aTHX_ enc, sv)) |
1698
|
0 |
19 |
if (enc->json.flags & F_ALLOW_STRINGIFY) |
1700
|
7 |
12 |
else if (enc->json.flags & F_ALLOW_UNKNOWN) |
1703
|
0 |
12 |
croak ("cannot encode reference to scalar '%s' unless the scalar is 0 or 1", |
1707
|
2 |
3 |
else if (enc->json.flags & F_ALLOW_UNKNOWN) |
1710
|
0 |
3 |
croak ("encountered %s, but JSON can only represent references to arrays or hashes", |
1719
|
95 |
12 |
if (!SvROK (sv)) |
1721
|
8 |
87 |
if (UNLIKELY (sv == &PL_sv_yes)) |
1723
|
6 |
81 |
else if (UNLIKELY (sv == &PL_sv_no)) |
1725
|
1 |
80 |
else if (!SvOK (sv)) |
|
1 |
0 |
else if (!SvOK (sv)) |
|
1 |
0 |
else if (!SvOK (sv)) |
1727
|
80 |
0 |
else if (SvTRUE_nomg (sv)) |
|
0 |
80 |
else if (SvTRUE_nomg (sv)) |
|
0 |
0 |
else if (SvTRUE_nomg (sv)) |
|
0 |
0 |
else if (SvTRUE_nomg (sv)) |
|
46 |
34 |
else if (SvTRUE_nomg (sv)) |
|
46 |
0 |
else if (SvTRUE_nomg (sv)) |
|
15 |
31 |
else if (SvTRUE_nomg (sv)) |
|
12 |
3 |
else if (SvTRUE_nomg (sv)) |
|
6 |
6 |
else if (SvTRUE_nomg (sv)) |
|
37 |
9 |
else if (SvTRUE_nomg (sv)) |
|
34 |
0 |
else if (SvTRUE_nomg (sv)) |
|
18 |
16 |
else if (SvTRUE_nomg (sv)) |
|
2 |
16 |
else if (SvTRUE_nomg (sv)) |
|
16 |
2 |
else if (SvTRUE_nomg (sv)) |
|
12 |
4 |
else if (SvTRUE_nomg (sv)) |
|
28 |
6 |
else if (SvTRUE_nomg (sv)) |
|
0 |
0 |
else if (SvTRUE_nomg (sv)) |
1737
|
9 |
3 |
if (UNLIKELY (SvOBJECT (sv))) |
1739
|
0 |
9 |
if (!encode_bool_obj (aTHX_ enc, sv, 1, 0)) |
1740
|
0 |
0 |
croak ("encountered object '%s', but convert_blessed is not enabled", |
1743
|
3 |
0 |
else if (svt < SVt_PVAV && svt != SVt_PVGV) |
|
3 |
0 |
else if (svt < SVt_PVAV && svt != SVt_PVGV) |
1745
|
0 |
3 |
if (!encode_bool_ref (aTHX_ enc, sv)) |
1746
|
0 |
0 |
croak ("cannot encode reference to scalar '%s' unless the scalar is 0 or 1", |
1750
|
0 |
0 |
croak ("encountered %s, but does not represent boolean", |
1758
|
0 |
31 |
*iv = SvIV_nomg (sv); |
1762
|
9 |
22 |
if (!*is_neg) |
1764
|
0 |
9 |
*uv = SvUV_nomg (sv); |
1777
|
3 |
4087 |
SvGETMAGIC (sv); |
|
0 |
3 |
SvGETMAGIC (sv); |
1779
|
3656 |
434 |
if (UNLIKELY (!(SvOK (typesv)) && (enc->json.flags & F_REQUIRE_TYPES))) |
|
3656 |
0 |
if (UNLIKELY (!(SvOK (typesv)) && (enc->json.flags & F_REQUIRE_TYPES))) |
|
3656 |
0 |
if (UNLIKELY (!(SvOK (typesv)) && (enc->json.flags & F_REQUIRE_TYPES))) |
|
3656 |
0 |
if (UNLIKELY (!(SvOK (typesv)) && (enc->json.flags & F_REQUIRE_TYPES))) |
|
3656 |
434 |
if (UNLIKELY (!(SvOK (typesv)) && (enc->json.flags & F_REQUIRE_TYPES))) |
|
8 |
3648 |
if (UNLIKELY (!(SvOK (typesv)) && (enc->json.flags & F_REQUIRE_TYPES))) |
1780
|
0 |
8 |
croak ("type for '%s' was not specified", SvPV_nolen (sv)); |
1782
|
1428 |
2654 |
if (SvROK (sv) && !SvOBJECT (SvRV (sv))) |
|
1323 |
105 |
if (SvROK (sv) && !SvOBJECT (SvRV (sv))) |
1785
|
394 |
929 |
if (svt == SVt_PVHV) |
1790
|
897 |
32 |
else if (svt == SVt_PVAV) |
1797
|
0 |
2791 |
SvGETMAGIC (typesv); |
|
0 |
0 |
SvGETMAGIC (typesv); |
1799
|
2396 |
395 |
if (UNLIKELY (SvOK (typesv))) |
|
2396 |
0 |
if (UNLIKELY (SvOK (typesv))) |
|
0 |
2396 |
if (UNLIKELY (SvOK (typesv))) |
|
0 |
2396 |
if (UNLIKELY (SvOK (typesv))) |
1801
|
55 |
340 |
if (SvROK (sv) && SvOBJECT (SvRV (sv)) && !(enc->json.flags & (F_ALLOW_TAGS|F_CONV_BLESSED|F_ALLOW_BLESSED)) && !is_bool_obj (aTHX_ SvRV (sv)) && !is_bignum_obj (aTHX_ SvRV (sv))) |
|
52 |
3 |
if (SvROK (sv) && SvOBJECT (SvRV (sv)) && !(enc->json.flags & (F_ALLOW_TAGS|F_CONV_BLESSED|F_ALLOW_BLESSED)) && !is_bool_obj (aTHX_ SvRV (sv)) && !is_bignum_obj (aTHX_ SvRV (sv))) |
|
52 |
0 |
if (SvROK (sv) && SvOBJECT (SvRV (sv)) && !(enc->json.flags & (F_ALLOW_TAGS|F_CONV_BLESSED|F_ALLOW_BLESSED)) && !is_bool_obj (aTHX_ SvRV (sv)) && !is_bignum_obj (aTHX_ SvRV (sv))) |
|
33 |
19 |
if (SvROK (sv) && SvOBJECT (SvRV (sv)) && !(enc->json.flags & (F_ALLOW_TAGS|F_CONV_BLESSED|F_ALLOW_BLESSED)) && !is_bool_obj (aTHX_ SvRV (sv)) && !is_bignum_obj (aTHX_ SvRV (sv))) |
|
1 |
32 |
if (SvROK (sv) && SvOBJECT (SvRV (sv)) && !(enc->json.flags & (F_ALLOW_TAGS|F_CONV_BLESSED|F_ALLOW_BLESSED)) && !is_bool_obj (aTHX_ SvRV (sv)) && !is_bignum_obj (aTHX_ SvRV (sv))) |
1802
|
0 |
1 |
croak ("encountered object '%s', but neither allow_blessed, convert_blessed nor allow_tags settings are enabled (or TO_JSON/FREEZE method missing)", SvPV_nolen (sv)); |
1804
|
83 |
311 |
if (!SvIOKp (typesv)) |
1806
|
83 |
0 |
if (SvROK (typesv) && |
|
83 |
0 |
if (SvROK (typesv) && |
1807
|
83 |
0 |
SvOBJECT (SvRV (typesv)) && |
1811
|
83 |
0 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
|
83 |
0 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
|
83 |
0 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
|
0 |
83 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
|
0 |
0 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
|
83 |
0 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
|
0 |
83 |
char *name = LIKELY (!!stash) ? HvNAME (stash) : NULL; |
1812
|
83 |
0 |
if (LIKELY (name && strEQ (name, JSON_TYPE_ANYOF_CLASS))) |
|
83 |
0 |
if (LIKELY (name && strEQ (name, JSON_TYPE_ANYOF_CLASS))) |
1816
|
0 |
83 |
if (UNLIKELY (!typesv_ref)) |
1817
|
0 |
0 |
croak ("incorrectly constructed anyof type (%s, 0x%x) was specified for '%s'", |
|
0 |
0 |
croak ("incorrectly constructed anyof type (%s, 0x%x) was specified for '%s'", |
1821
|
0 |
83 |
SvGETMAGIC (typesv); |
|
0 |
0 |
SvGETMAGIC (typesv); |
1822
|
0 |
83 |
if (!SvIOKp (typesv)) |
1823
|
0 |
0 |
croak ("no scalar alternative in anyof was specified for '%s'", SvPV_nolen (sv)); |
1826
|
0 |
0 |
croak ("encountered type (%s, 0x%x) was specified for '%s'", |
|
0 |
0 |
croak ("encountered type (%s, 0x%x) was specified for '%s'", |
1831
|
0 |
0 |
croak ("encountered type (%s, 0x%x) was specified for '%s'", |
|
0 |
0 |
croak ("encountered type (%s, 0x%x) was specified for '%s'", |
1838
|
392 |
2398 |
if (UNLIKELY (type)) |
1846
|
2394 |
4 |
if (UNLIKELY (sv == &PL_sv_yes || sv == &PL_sv_no)) type = JSON_TYPE_BOOL; |
|
4 |
2390 |
if (UNLIKELY (sv == &PL_sv_yes || sv == &PL_sv_no)) type = JSON_TYPE_BOOL; |
1847
|
80 |
2310 |
else if (SvNOKp (sv)) type = JSON_TYPE_FLOAT; |
1848
|
872 |
1438 |
else if (SvIOKp (sv)) type = JSON_TYPE_INT; |
1849
|
1314 |
124 |
else if (SvPOKp (sv)) type = JSON_TYPE_STRING; |
1850
|
82 |
42 |
else if (SvROK (sv)) process_ref = 1; |
1851
|
42 |
0 |
else if (!SvOK (sv)) can_be_null = 1; |
|
42 |
0 |
else if (!SvOK (sv)) can_be_null = 1; |
|
42 |
0 |
else if (!SvOK (sv)) can_be_null = 1; |
1854
|
150 |
2640 |
if (can_be_null && !SvOK (sv)) |
|
55 |
95 |
if (can_be_null && !SvOK (sv)) |
|
55 |
0 |
if (can_be_null && !SvOK (sv)) |
|
55 |
0 |
if (can_be_null && !SvOK (sv)) |
1856
|
107 |
2628 |
else if (type == JSON_TYPE_BOOL) |
1858
|
163 |
2465 |
else if (type == JSON_TYPE_FLOAT) |
1874
|
19 |
144 |
if (UNLIKELY (SvROK (sv) && SvOBJECT (SvRV (sv))) && (enc->json.flags & F_ALLOW_BIGNUM) && is_bignum_obj (aTHX_ SvRV (sv))) |
|
19 |
0 |
if (UNLIKELY (SvROK (sv) && SvOBJECT (SvRV (sv))) && (enc->json.flags & F_ALLOW_BIGNUM) && is_bignum_obj (aTHX_ SvRV (sv))) |
|
16 |
3 |
if (UNLIKELY (SvROK (sv) && SvOBJECT (SvRV (sv))) && (enc->json.flags & F_ALLOW_BIGNUM) && is_bignum_obj (aTHX_ SvRV (sv))) |
|
16 |
0 |
if (UNLIKELY (SvROK (sv) && SvOBJECT (SvRV (sv))) && (enc->json.flags & F_ALLOW_BIGNUM) && is_bignum_obj (aTHX_ SvRV (sv))) |
1877
|
16 |
147 |
if (UNLIKELY (is_bigobj)) |
1880
|
0 |
16 |
char *str = SvPV_nomg (sv, len); |
1881
|
0 |
16 |
if (UNLIKELY (str[0] == '+')) |
1886
|
14 |
2 |
if (UNLIKELY (memEQc (str, "NaN") || memEQc (str, "nan"))) |
|
0 |
14 |
if (UNLIKELY (memEQc (str, "NaN") || memEQc (str, "nan"))) |
1891
|
2 |
12 |
else if (UNLIKELY (memEQc (str, "inf"))) |
1896
|
2 |
10 |
else if (UNLIKELY (memEQc (str, "-inf"))) |
1910
|
118 |
29 |
else if (SvNOKp (sv)) |
1916
|
15 |
14 |
if (enc->json.flags & F_ALLOW_BIGNUM) |
1924
|
15 |
0 |
str = SvPV_nomg (sv, len); |
1927
|
2 |
13 |
if (UNLIKELY (numtype & IS_NUMBER_INFINITY)) |
1928
|
1 |
1 |
nv = (numtype & IS_NUMBER_NEG) ? -NV_INF : NV_INF; |
1929
|
1 |
12 |
else if (UNLIKELY (numtype & IS_NUMBER_NAN)) |
1931
|
0 |
12 |
else if (UNLIKELY (!numtype)) |
1932
|
0 |
0 |
nv = SvNV_nomg (sv); |
1943
|
12 |
0 |
errsv = ERRSV; |
1944
|
0 |
12 |
if (SvROK (errsv)) |
1946
|
12 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
12 |
else if (SvTRUE (errsv)) |
|
0 |
12 |
else if (SvTRUE (errsv)) |
|
0 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
0 |
else if (SvTRUE (errsv)) |
|
12 |
0 |
else if (SvTRUE (errsv)) |
|
12 |
0 |
else if (SvTRUE (errsv)) |
|
12 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
12 |
else if (SvTRUE (errsv)) |
|
0 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
12 |
else if (SvTRUE (errsv)) |
1955
|
0 |
12 |
str = SvPV (pv, len); |
1956
|
0 |
12 |
if (UNLIKELY (str[0] == '+')) |
1988
|
0 |
14 |
nv = SvNV_nomg (sv); |
1993
|
141 |
22 |
if (LIKELY (!is_bigobj)) |
2000
|
61 |
80 |
if (force_conversion) |
2006
|
16 |
45 |
if (UNLIKELY(isinf(nv))) |
2008
|
8 |
8 |
nv = (nv > 0) ? NV_MAX : -NV_MAX; |
2012
|
6 |
55 |
if (UNLIKELY(isnan(nv))) |
2017
|
63 |
17 |
else if (enc->json.infnan_mode == 0) |
2022
|
2 |
61 |
if (UNLIKELY(isinf(nv))) |
2025
|
1 |
1 |
inf_or_nan = (nv > 0) ? 1 : 2; |
2031
|
3 |
58 |
if (UNLIKELY(isnan(nv))) |
2086
|
3 |
133 |
if (UNLIKELY(strEQc(enc->cur, STR_INF))) |
2107
|
3 |
130 |
(UNLIKELY(strEQc(enc->cur, STR_NAN))) |
2110
|
25 |
105 |
else if (*enc->cur == '-') { |
2120
|
3 |
22 |
if (UNLIKELY(strEQc(enc->cur+1, STR_INF))) |
2135
|
6 |
16 |
(UNLIKELY(strEQc(enc->cur+1, STR_NAN))) |
2139
|
15 |
121 |
if (UNLIKELY(inf_or_nan)) { |
2141
|
5 |
15 |
if (enc->json.infnan_mode == 0) { |
2144
|
5 |
10 |
else if (enc->json.infnan_mode == 1) { |
2151
|
5 |
5 |
else if (enc->json.infnan_mode == 3) { |
2152
|
1 |
4 |
if (inf_or_nan == 1) |
2154
|
1 |
3 |
else if (inf_or_nan == 2) |
2156
|
3 |
0 |
else if (inf_or_nan == 3) |
2159
|
0 |
5 |
else if (enc->json.infnan_mode != 2) { |
2167
|
80 |
83 |
if (!force_conversion && SvPOKp (sv) && !strEQ(enc->cur, SvPVX (sv))) { |
|
6 |
74 |
if (!force_conversion && SvPOKp (sv) && !strEQ(enc->cur, SvPVX (sv))) { |
|
4 |
2 |
if (!force_conversion && SvPOKp (sv) && !strEQ(enc->cur, SvPVX (sv))) { |
2179
|
139 |
20 |
if (!( inf_or_nan || (had_nokp && Perl_modf(SvNVX(sv), &intpart)) || (!force_conversion && SvIOK(sv)) |
|
56 |
83 |
if (!( inf_or_nan || (had_nokp && Perl_modf(SvNVX(sv), &intpart)) || (!force_conversion && SvIOK(sv)) |
|
31 |
25 |
if (!( inf_or_nan || (had_nokp && Perl_modf(SvNVX(sv), &intpart)) || (!force_conversion && SvIOK(sv)) |
|
31 |
83 |
if (!( inf_or_nan || (had_nokp && Perl_modf(SvNVX(sv), &intpart)) || (!force_conversion && SvIOK(sv)) |
|
25 |
6 |
if (!( inf_or_nan || (had_nokp && Perl_modf(SvNVX(sv), &intpart)) || (!force_conversion && SvIOK(sv)) |
|
73 |
12 |
if (!( inf_or_nan || (had_nokp && Perl_modf(SvNVX(sv), &intpart)) || (!force_conversion && SvIOK(sv)) |
2180
|
85 |
23 |
|| strchr(enc->cur,'e') || strchr(enc->cur,'E') || strchr(savecur,'.') |
|
85 |
0 |
|| strchr(enc->cur,'e') || strchr(enc->cur,'E') || strchr(savecur,'.') |
2194
|
1014 |
1451 |
else if (type == JSON_TYPE_INT) |
2204
|
20 |
994 |
if (UNLIKELY (SvROK (sv) && SvOBJECT (SvRV (sv))) && (enc->json.flags & F_ALLOW_BIGNUM)) |
|
20 |
0 |
if (UNLIKELY (SvROK (sv) && SvOBJECT (SvRV (sv))) && (enc->json.flags & F_ALLOW_BIGNUM)) |
|
16 |
4 |
if (UNLIKELY (SvROK (sv) && SvOBJECT (SvRV (sv))) && (enc->json.flags & F_ALLOW_BIGNUM)) |
2207
|
16 |
0 |
int is_bigint = (stash && stash == gv_stashpvs ("Math::BigInt", 0)); |
|
8 |
8 |
int is_bigint = (stash && stash == gv_stashpvs ("Math::BigInt", 0)); |
2208
|
16 |
0 |
int is_bigfloat = (stash && stash == gv_stashpvs ("Math::BigFloat", 0)); |
|
8 |
8 |
int is_bigfloat = (stash && stash == gv_stashpvs ("Math::BigFloat", 0)); |
2210
|
8 |
8 |
if (is_bigint || is_bigfloat) |
|
8 |
0 |
if (is_bigint || is_bigfloat) |
2215
|
8 |
8 |
if (is_bigfloat) |
2223
|
0 |
8 |
PUSHMARK (SP); |
2224
|
0 |
8 |
XPUSHs (sv); |
2230
|
8 |
0 |
is_negative = SvTRUEx (POPs); |
|
0 |
8 |
is_negative = SvTRUEx (POPs); |
|
0 |
0 |
is_negative = SvTRUEx (POPs); |
|
0 |
8 |
is_negative = SvTRUEx (POPs); |
|
0 |
0 |
is_negative = SvTRUEx (POPs); |
|
0 |
0 |
is_negative = SvTRUEx (POPs); |
|
0 |
8 |
is_negative = SvTRUEx (POPs); |
|
0 |
0 |
is_negative = SvTRUEx (POPs); |
|
0 |
0 |
is_negative = SvTRUEx (POPs); |
|
0 |
0 |
is_negative = SvTRUEx (POPs); |
|
0 |
0 |
is_negative = SvTRUEx (POPs); |
|
0 |
0 |
is_negative = SvTRUEx (POPs); |
|
8 |
0 |
is_negative = SvTRUEx (POPs); |
|
8 |
0 |
is_negative = SvTRUEx (POPs); |
|
5 |
3 |
is_negative = SvTRUEx (POPs); |
|
0 |
5 |
is_negative = SvTRUEx (POPs); |
|
0 |
0 |
is_negative = SvTRUEx (POPs); |
|
3 |
5 |
is_negative = SvTRUEx (POPs); |
|
0 |
0 |
is_negative = SvTRUEx (POPs); |
2233
|
0 |
8 |
PUSHMARK (SP); |
2234
|
0 |
8 |
XPUSHs (sv); |
2242
|
3 |
5 |
call_method (is_negative ? "bceil" : "bfloor", G_SCALAR); |
2249
|
0 |
16 |
str = SvPV_nomg (sv, len); |
2250
|
0 |
16 |
if (UNLIKELY (str[0] == '+')) |
2256
|
14 |
2 |
if (UNLIKELY (strEQc (str, "NaN") || strEQc (str, "nan"))) |
|
0 |
14 |
if (UNLIKELY (strEQc (str, "NaN") || strEQc (str, "nan"))) |
2260
|
2 |
12 |
else if (UNLIKELY (strEQc (str, "inf"))) |
2267
|
2 |
10 |
else if (UNLIKELY (strEQc (str, "-inf"))) |
2284
|
8 |
8 |
if (is_bigfloat) |
2286
|
8 |
0 |
FREETMPS; |
2294
|
915 |
83 |
if (SvIOK (sv)) |
2300
|
56 |
27 |
else if (SvPOKp (sv)) |
2303
|
42 |
14 |
if (numtype & IS_NUMBER_IN_UV) |
2305
|
10 |
32 |
if (numtype & IS_NUMBER_NEG) |
2308
|
3 |
7 |
if (LIKELY(uv <= (UV)(IV_MAX) + 1)) |
2320
|
2 |
12 |
else if (UNLIKELY (numtype & IS_NUMBER_INFINITY)) |
2323
|
1 |
1 |
if (is_neg) |
2335
|
20 |
36 |
if ((numtype & (IS_NUMBER_GREATER_THAN_UV_MAX|IS_NUMBER_NOT_INT)) && (enc->json.flags & F_ALLOW_BIGNUM)) |
|
12 |
8 |
if ((numtype & (IS_NUMBER_GREATER_THAN_UV_MAX|IS_NUMBER_NOT_INT)) && (enc->json.flags & F_ALLOW_BIGNUM)) |
2342
|
6 |
6 |
if (numtype & IS_NUMBER_NOT_INT) |
2349
|
6 |
6 |
if (numtype & IS_NUMBER_NOT_INT) |
2363
|
12 |
0 |
errsv = ERRSV; |
2364
|
0 |
12 |
if (SvROK (errsv)) |
2366
|
12 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
12 |
else if (SvTRUE (errsv)) |
|
0 |
12 |
else if (SvTRUE (errsv)) |
|
0 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
0 |
else if (SvTRUE (errsv)) |
|
12 |
0 |
else if (SvTRUE (errsv)) |
|
12 |
0 |
else if (SvTRUE (errsv)) |
|
12 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
12 |
else if (SvTRUE (errsv)) |
|
0 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
12 |
else if (SvTRUE (errsv)) |
2375
|
0 |
12 |
str = SvPV (pv, len); |
2376
|
0 |
12 |
if (UNLIKELY (str[0] == '+')) |
2390
|
4 |
40 |
else if (!(numtype & (IS_NUMBER_IN_UV|IS_NUMBER_INFINITY|IS_NUMBER_NAN))) |
2425
|
943 |
43 |
if (is_neg ? iv <= 59000 && iv >= -59000 |
|
940 |
3 |
if (is_neg ? iv <= 59000 && iv >= -59000 |
|
930 |
10 |
if (is_neg ? iv <= 59000 && iv >= -59000 |
|
957 |
29 |
if (is_neg ? iv <= 59000 && iv >= -59000 |
2439
|
10 |
947 |
*enc->cur = '-'; enc->cur += i < 0 ? 1 : 0; |
2450
|
957 |
0 |
digit = u >> 28; *enc->cur = digit + '0'; enc->cur += (nz = nz || digit); u = (u & 0xfffffffUL) * 5; |
|
7 |
950 |
digit = u >> 28; *enc->cur = digit + '0'; enc->cur += (nz = nz || digit); u = (u & 0xfffffffUL) * 5; |
2451
|
950 |
7 |
digit = u >> 27; *enc->cur = digit + '0'; enc->cur += (nz = nz || digit); u = (u & 0x7ffffffUL) * 5; |
|
4 |
946 |
digit = u >> 27; *enc->cur = digit + '0'; enc->cur += (nz = nz || digit); u = (u & 0x7ffffffUL) * 5; |
2452
|
946 |
11 |
digit = u >> 26; *enc->cur = digit + '0'; enc->cur += (nz = nz || digit); u = (u & 0x3ffffffUL) * 5; |
|
5 |
941 |
digit = u >> 26; *enc->cur = digit + '0'; enc->cur += (nz = nz || digit); u = (u & 0x3ffffffUL) * 5; |
2453
|
941 |
16 |
digit = u >> 25; *enc->cur = digit + '0'; enc->cur += (nz = nz || digit); u = (u & 0x1ffffffUL) * 5; |
|
68 |
873 |
digit = u >> 25; *enc->cur = digit + '0'; enc->cur += (nz = nz || digit); u = (u & 0x1ffffffUL) * 5; |
2466
|
16 |
13 |
: snprintf (enc->cur, IVUV_MAXCHARS, "%" IVdf, iv); |
2469
|
872 |
114 |
if (!force_conversion && SvPOKp (sv) && !strEQ(savecur, SvPVX (sv))) { |
|
19 |
853 |
if (!force_conversion && SvPOKp (sv) && !strEQ(savecur, SvPVX (sv))) { |
|
1 |
18 |
if (!force_conversion && SvPOKp (sv) && !strEQ(savecur, SvPVX (sv))) { |
2480
|
1369 |
82 |
else if (type == JSON_TYPE_STRING) |
2482
|
0 |
1369 |
if (UNLIKELY (sv == &PL_sv_yes)) |
2488
|
0 |
1369 |
else if (UNLIKELY (sv == &PL_sv_no)) |
2494
|
3 |
1366 |
else if (!UNLIKELY (SvROK(sv) && SvOBJECT (SvRV(sv))) || !encode_bool_obj (aTHX_ enc, SvRV(sv), 0, 1)) |
|
3 |
0 |
else if (!UNLIKELY (SvROK(sv) && SvOBJECT (SvRV(sv))) || !encode_bool_obj (aTHX_ enc, SvRV(sv), 0, 1)) |
|
0 |
3 |
else if (!UNLIKELY (SvROK(sv) && SvOBJECT (SvRV(sv))) || !encode_bool_obj (aTHX_ enc, SvRV(sv), 0, 1)) |
2498
|
1351 |
15 |
if (SvPOKp (sv)) |
2505
|
0 |
15 |
str = SvPV_nomg (sv, len); |
2512
|
82 |
0 |
else if (process_ref) |
2514
|
0 |
0 |
else if (enc->json.flags & F_ALLOW_UNKNOWN) |
2517
|
0 |
0 |
croak ("encountered perl type (%s,0x%x) that JSON cannot handle, check your input data", |
2526
|
957 |
396 |
if (!(json->flags & F_ALLOW_NONREF) && json_nonref (aTHX_ scalar)) |
|
0 |
957 |
if (!(json->flags & F_ALLOW_NONREF) && json_nonref (aTHX_ scalar)) |
2535
|
1241 |
112 |
: enc.json.flags & F_BINARY ? 0x000080UL |
2536
|
1038 |
203 |
: enc.json.flags & F_LATIN1 ? 0x000100UL |
2537
|
5 |
1033 |
: 0x110000UL; |
2546
|
674 |
650 |
if (!(enc.json.flags & (F_ASCII | F_LATIN1 | F_BINARY | F_UTF8))) |
2549
|
200 |
1124 |
if (enc.json.flags & F_SHRINK) |
2574
|
47 |
0 |
while (*dec->cur && *dec->cur != 0x0a && *dec->cur != 0x0d) |
|
38 |
9 |
while (*dec->cur && *dec->cur != 0x0a && *dec->cur != 0x0d) |
|
38 |
0 |
while (*dec->cur && *dec->cur != 0x0a && *dec->cur != 0x0d) |
2585
|
31974 |
56223 |
if (ch > 0x20) |
2587
|
11 |
31963 |
if (UNLIKELY(ch == '#')) |
2589
|
9 |
2 |
if (dec->json.flags & F_RELAXED) |
2597
|
6852 |
49371 |
else if (ch != 0x20 && ch != 0x0a && ch != 0x0d && ch != 0x09) |
|
865 |
5987 |
else if (ch != 0x20 && ch != 0x0a && ch != 0x0d && ch != 0x09) |
|
865 |
0 |
else if (ch != 0x20 && ch != 0x0a && ch != 0x0d && ch != 0x09) |
|
863 |
2 |
else if (ch != 0x20 && ch != 0x0a && ch != 0x0d && ch != 0x09) |
3147
|
3 |
2141 |
d1 = decode_hexdigit [cur [0]]; if (UNLIKELY(d1 < 0)) ERR ("exactly four hexadecimal digits expected"); |
3148
|
2 |
2139 |
d2 = decode_hexdigit [cur [1]]; if (UNLIKELY(d2 < 0)) ERR ("exactly four hexadecimal digits expected"); |
3149
|
1 |
2138 |
d3 = decode_hexdigit [cur [2]]; if (UNLIKELY(d3 < 0)) ERR ("exactly four hexadecimal digits expected"); |
3150
|
1 |
2137 |
d4 = decode_hexdigit [cur [3]]; if (UNLIKELY(d4 < 0)) ERR ("exactly four hexadecimal digits expected"); |
3169
|
0 |
2506 |
d1 = decode_hexdigit [cur [0]]; if (UNLIKELY(d1 < 0)) ERR ("exactly two hexadecimal digits expected"); |
3170
|
0 |
2506 |
d2 = decode_hexdigit [cur [1]]; if (UNLIKELY(d2 < 0)) ERR ("exactly two hexadecimal digits expected"); |
3184
|
0 |
0 |
d1 = (IV)(cur[0] - '0'); if (d1 < 0 || d1 > 7) ERR ("exactly three octal digits expected"); |
|
0 |
0 |
d1 = (IV)(cur[0] - '0'); if (d1 < 0 || d1 > 7) ERR ("exactly three octal digits expected"); |
3185
|
0 |
0 |
d2 = (IV)(cur[1] - '0'); if (d2 < 0 || d2 > 7) ERR ("exactly three octal digits expected"); |
|
0 |
0 |
d2 = (IV)(cur[1] - '0'); if (d2 < 0 || d2 > 7) ERR ("exactly three octal digits expected"); |
3186
|
0 |
0 |
d3 = (IV)(cur[2] - '0'); if (d3 < 0 || d3 > 7) ERR ("exactly three octal digits expected"); |
|
0 |
0 |
d3 = (IV)(cur[2] - '0'); if (d3 < 0 || d3 > 7) ERR ("exactly three octal digits expected"); |
3211
|
4934 |
115305 |
if (UNLIKELY(ch == endstr)) |
3213
|
7 |
4927 |
if (ch == 0x27 && !(dec->json.flags & F_ALLOW_SQUOTE)) { |
|
0 |
7 |
if (ch == 0x27 && !(dec->json.flags & F_ALLOW_SQUOTE)) { |
3219
|
5436 |
109869 |
else if (UNLIKELY(ch == '\\')) |
3236
|
2 |
2506 |
if (!(dec->json.flags & F_BINARY)) |
3241
|
0 |
2506 |
if (c == (UV)-1) |
3251
|
1 |
0 |
if (!(dec->json.flags & F_BINARY)) |
3255
|
0 |
0 |
if (c == (UV)-1) |
3269
|
3 |
1799 |
if (hi == (UV)-1) |
3271
|
0 |
1799 |
if (dec->json.flags & F_BINARY) |
3275
|
372 |
1427 |
if (hi >= 0xd800) { |
3276
|
352 |
20 |
if (hi < 0xdc00) { |
3277
|
345 |
7 |
if (dec_cur [0] != '\\' || dec_cur [1] != 'u') |
|
3 |
342 |
if (dec_cur [0] != '\\' || dec_cur [1] != 'u') |
3285
|
4 |
338 |
if (lo == (UV)-1) |
3288
|
332 |
6 |
if (lo < 0xdc00 || lo >= 0xe000) |
|
0 |
332 |
if (lo < 0xdc00 || lo >= 0xe000) |
3292
|
330 |
2 |
if (UNLIKELY( |
|
325 |
5 |
if (UNLIKELY( |
|
0 |
325 |
if (UNLIKELY( |
|
5 |
325 |
if (UNLIKELY( |
3299
|
9 |
11 |
else if (UNLIKELY(hi < 0xe000)) { |
3323
|
8 |
3 |
if (UNLIKELY( |
|
4 |
4 |
if (UNLIKELY( |
|
2 |
2 |
if (UNLIKELY( |
|
6 |
2 |
if (UNLIKELY( |
|
2 |
4 |
if (UNLIKELY( |
|
2 |
0 |
if (UNLIKELY( |
|
2 |
4 |
if (UNLIKELY( |
|
4 |
4 |
if (UNLIKELY( |
3330
|
1093 |
677 |
if (hi >= 0x80) |
3345
|
109852 |
17 |
else if (LIKELY(ch >= 0x20 && ch < 0x80)) { |
|
108681 |
1171 |
else if (LIKELY(ch >= 0x20 && ch < 0x80)) { |
3349
|
1171 |
17 |
else if (ch >= 0x80) |
3357
|
60 |
1111 |
if (clen == (STRLEN)-1) |
3362
|
1831 |
1111 |
while (--clen); |
3366
|
1 |
16 |
else if (dec->json.flags & F_RELAXED && ch == '\t') { |
|
1 |
0 |
else if (dec->json.flags & F_RELAXED && ch == '\t') { |
3372
|
9 |
7 |
if (!ch) |
3378
|
115182 |
2 |
while (cur < buf + SHORT_STRING_LEN); |
3383
|
1 |
4935 |
if (sv) |
3387
|
1 |
0 |
if (SvLEN (sv) <= cur + len) |
3388
|
1 |
0 |
SvGROW (sv, cur + (len < (cur >> 2) ? cur >> 2 : len) + 1); |
|
1 |
0 |
SvGROW (sv, cur + (len < (cur >> 2) ? cur >> 2 : len) + 1); |
3397
|
1 |
4935 |
while (*dec_cur != endstr); |
3401
|
4935 |
0 |
if (sv) |
3406
|
435 |
4500 |
if (utf8) |
3439
|
57 |
909 |
if (*dec->cur == '-') |
3442
|
118 |
848 |
if (*dec->cur == '0') |
3445
|
29 |
89 |
if (*dec->cur >= '0' && *dec->cur <= '9') |
|
6 |
23 |
if (*dec->cur >= '0' && *dec->cur <= '9') |
3448
|
846 |
2 |
else if (*dec->cur < '0' || *dec->cur > '9') |
|
5 |
841 |
else if (*dec->cur < '0' || *dec->cur > '9') |
3455
|
635 |
605 |
while (*dec->cur >= '0' && *dec->cur <= '9'); |
|
399 |
236 |
while (*dec->cur >= '0' && *dec->cur <= '9'); |
3458
|
66 |
887 |
if (*dec->cur == '.') |
3462
|
65 |
1 |
if (*dec->cur < '0' || *dec->cur > '9') |
|
7 |
58 |
if (*dec->cur < '0' || *dec->cur > '9') |
3469
|
231 |
24 |
while (*dec->cur >= '0' && *dec->cur <= '9'); |
|
197 |
34 |
while (*dec->cur >= '0' && *dec->cur <= '9'); |
3475
|
892 |
53 |
if (*dec->cur == 'e' || *dec->cur == 'E') |
|
8 |
884 |
if (*dec->cur == 'e' || *dec->cur == 'E') |
3479
|
50 |
11 |
if (*dec->cur == '-' || *dec->cur == '+') |
|
23 |
27 |
if (*dec->cur == '-' || *dec->cur == '+') |
3482
|
57 |
4 |
if (*dec->cur < '0' || *dec->cur > '9') |
|
13 |
44 |
if (*dec->cur < '0' || *dec->cur > '9') |
3489
|
200 |
21 |
while (*dec->cur >= '0' && *dec->cur <= '9'); |
|
177 |
23 |
while (*dec->cur >= '0' && *dec->cur <= '9'); |
3494
|
847 |
81 |
if (!is_nv) |
3498
|
7 |
840 |
if (typesv) |
3502
|
28 |
819 |
if (*start == '-') |
3524
|
10 |
6 |
if (numtype & IS_NUMBER_IN_UV) { |
3525
|
2 |
8 |
if (numtype & IS_NUMBER_NEG) |
3527
|
2 |
0 |
if (uv <= (UV)(IV_MAX) + 1) |
3538
|
0 |
6 |
if ((sizeof (NV) == sizeof (double) && DBL_DIG >= len) |
3546
|
2 |
4 |
if (dec->json.flags & F_ALLOW_BIGNUM) { |
3554
|
2 |
0 |
errsv = ERRSV; |
3555
|
0 |
2 |
if (SvROK (errsv)) |
3557
|
2 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
2 |
else if (SvTRUE (errsv)) |
|
0 |
2 |
else if (SvTRUE (errsv)) |
|
0 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
0 |
else if (SvTRUE (errsv)) |
|
2 |
0 |
else if (SvTRUE (errsv)) |
|
2 |
0 |
else if (SvTRUE (errsv)) |
|
2 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
2 |
else if (SvTRUE (errsv)) |
|
0 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
2 |
else if (SvTRUE (errsv)) |
3571
|
4 |
77 |
if (typesv) |
3574
|
2 |
79 |
if (dec->json.flags & F_ALLOW_BIGNUM) { |
3582
|
2 |
0 |
errsv = ERRSV; |
3583
|
0 |
2 |
if (SvROK (errsv)) |
3585
|
2 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
2 |
else if (SvTRUE (errsv)) |
|
0 |
2 |
else if (SvTRUE (errsv)) |
|
0 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
0 |
else if (SvTRUE (errsv)) |
|
2 |
0 |
else if (SvTRUE (errsv)) |
|
2 |
0 |
else if (SvTRUE (errsv)) |
|
2 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
2 |
else if (SvTRUE (errsv)) |
|
0 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
0 |
else if (SvTRUE (errsv)) |
|
0 |
2 |
else if (SvTRUE (errsv)) |
3609
|
5 |
4218 |
DEC_INC_DEPTH; |
3612
|
5 |
4213 |
if (typesv) |
3616
|
5 |
0 |
SvSetMagicSV (typesv, typerv); |
|
0 |
5 |
SvSetMagicSV (typesv, typerv); |
3619
|
29 |
4189 |
if (*dec->cur == ']') |
3627
|
13 |
6337 |
if (typesv) |
3634
|
1506 |
4844 |
if (!value) |
3641
|
2654 |
2190 |
if (*dec->cur == ']') |
3647
|
27 |
2163 |
if (*dec->cur != ',') |
3654
|
5 |
2158 |
if (*dec->cur == ']' && dec->json.flags & F_RELAXED) |
|
2 |
3 |
if (*dec->cur == ']' && dec->json.flags & F_RELAXED) |
3682
|
0 |
2584 |
DEC_INC_DEPTH; |
3685
|
2 |
2582 |
if (typesv) |
3689
|
2 |
0 |
SvSetMagicSV (typesv, typerv); |
|
0 |
2 |
SvSetMagicSV (typesv, typerv); |
3692
|
17 |
2567 |
if (*dec->cur == '}') |
3699
|
19 |
5031 |
if (UNLIKELY(allow_barekey |
|
6 |
13 |
if (UNLIKELY(allow_barekey |
|
6 |
5044 |
if (UNLIKELY(allow_barekey |
|
6 |
0 |
if (UNLIKELY(allow_barekey |
3702
|
16 |
5028 |
else if (UNLIKELY(allow_squote)) { |
3703
|
5 |
11 |
if (*dec->cur != '"' && *dec->cur != 0x27) { |
|
1 |
4 |
if (*dec->cur != '"' && *dec->cur != 0x27) { |
3706
|
4 |
11 |
else if (*dec->cur == 0x27) |
3711
|
24 |
5004 |
EXPECT_CH ('"'); |
3729
|
31145 |
21 |
if (!is_bare && |
|
31143 |
2 |
if (!is_bare && |
3730
|
31139 |
4 |
(p == e || *p < 0x20 || *(U8*)p >= 0x80 || *p == '\\' |
|
31139 |
0 |
(p == e || *p < 0x20 || *(U8*)p >= 0x80 || *p == '\\' |
|
30936 |
203 |
(p == e || *p < 0x20 || *(U8*)p >= 0x80 || *p == '\\' |
3731
|
14 |
30922 |
|| allow_squote)) |
3736
|
4 |
219 |
if (!key) |
3739
|
211 |
8 |
if (!allow_dupkeys && UNLIKELY(hv_exists_ent (hv, key, 0))) { |
|
1 |
210 |
if (!allow_dupkeys && UNLIKELY(hv_exists_ent (hv, key, 0))) { |
3742
|
0 |
218 |
decode_ws (dec); EXPECT_CH (':'); |
3745
|
0 |
218 |
if (typesv) |
3752
|
1 |
217 |
if (!value) |
3763
|
26147 |
4796 |
else if (*p == endstr |
3764
|
21 |
26126 |
|| (is_bare && |
|
17 |
4 |
|| (is_bare && |
3765
|
16 |
1 |
(*p == ':' || *p == ' ' || *p == 0x0a |
|
16 |
0 |
(*p == ':' || *p == ' ' || *p == 0x0a |
3766
|
16 |
0 |
|| *p == 0x0d || *p == 0x09))) |
|
1 |
15 |
|| *p == 0x0d || *p == 0x09))) |
3775
|
0 |
4802 |
if (UNLIKELY(p - key > I32_MAX)) |
3778
|
4795 |
7 |
if (!allow_dupkeys && UNLIKELY(hv_exists (hv, key, len))) { |
|
6 |
4789 |
if (!allow_dupkeys && UNLIKELY(hv_exists (hv, key, len))) { |
3783
|
4792 |
4 |
decode_ws (dec); if (*p != ':') EXPECT_CH (':'); |
|
8 |
4784 |
decode_ws (dec); if (*p != ':') EXPECT_CH (':'); |
3786
|
9 |
4779 |
if (typesv) |
3793
|
776 |
4012 |
if (!value) |
3812
|
1740 |
2489 |
if (*dec->cur == '}') |
3818
|
5 |
2484 |
if (*dec->cur != ',') |
3825
|
3 |
2481 |
if (*dec->cur == '}' && dec->json.flags & F_RELAXED) |
|
1 |
2 |
if (*dec->cur == '}' && dec->json.flags & F_RELAXED) |
3836
|
14 |
1744 |
if (dec->json.flags & F_HOOK) |
3838
|
11 |
3 |
if (dec->json.cb_sk_object && HvKEYS (hv) == 1) |
|
0 |
11 |
if (dec->json.cb_sk_object && HvKEYS (hv) == 1) |
|
7 |
4 |
if (dec->json.cb_sk_object && HvKEYS (hv) == 1) |
3848
|
7 |
0 |
if (LIKELY((long)he)) |
3851
|
6 |
1 |
if (cb) |
3856
|
0 |
6 |
ENTER; SAVETMPS; SAVESTACK_POS (); PUSHMARK (SP); |
|
0 |
6 |
ENTER; SAVETMPS; SAVESTACK_POS (); PUSHMARK (SP); |
3857
|
0 |
6 |
XPUSHs (HeVAL (he)); |
3862
|
4 |
2 |
if (count == 1) |
3865
|
4 |
0 |
PUTBACK; FREETMPS; LEAVE; |
3871
|
2 |
0 |
PUTBACK; FREETMPS; LEAVE; |
3875
|
8 |
2 |
if (dec->json.cb_object) |
3880
|
0 |
8 |
ENTER; SAVETMPS; SAVESTACK_POS (); PUSHMARK (SP); |
|
0 |
8 |
ENTER; SAVETMPS; SAVESTACK_POS (); PUSHMARK (SP); |
3881
|
0 |
8 |
XPUSHs (sv_2mortal (sv)); |
3885
|
3 |
5 |
if (count == 1) |
3888
|
3 |
0 |
PUTBACK; FREETMPS; LEAVE; |
3894
|
5 |
0 |
PUTBACK; FREETMPS; LEAVE; |
3912
|
0 |
1 |
if (!(dec->json.flags & F_ALLOW_TAGS)) |
3920
|
0 |
1 |
if (!tag) |
3923
|
0 |
1 |
if (!SvPOK (tag)) |
3928
|
0 |
1 |
if (*dec->cur != ')') |
3936
|
0 |
1 |
if (!val) |
3939
|
1 |
0 |
if (!SvROK (val) || SvTYPE (SvRV (val)) != SVt_PVAV) |
|
0 |
1 |
if (!SvROK (val) || SvTYPE (SvRV (val)) != SVt_PVAV) |
3951
|
0 |
1 |
if (!stash) |
3956
|
0 |
1 |
if (!method) |
3959
|
0 |
1 |
ENTER; SAVETMPS; SAVESTACK_POS (); PUSHMARK (SP); |
|
0 |
1 |
ENTER; SAVETMPS; SAVESTACK_POS (); PUSHMARK (SP); |
3960
|
1 |
0 |
EXTEND (SP, len + 2); |
|
0 |
1 |
EXTEND (SP, len + 2); |
3965
|
3 |
1 |
for (i = 0; i < len; ++i) |
3978
|
1 |
0 |
FREETMPS; LEAVE; |
3998
|
5 |
4825 |
if (typesv) |
4002
|
3 |
3 |
if (dec->json.flags & F_ALLOW_SQUOTE) { |
4004
|
0 |
3 |
if (typesv) |
4020
|
31 |
1 |
if (dec->end - dec->cur >= 4 && memEQc(dec->cur, "true")) |
|
28 |
3 |
if (dec->end - dec->cur >= 4 && memEQc(dec->cur, "true")) |
4024
|
5 |
23 |
if (typesv) |
4026
|
4 |
24 |
if (dec->json.flags & F_UNBLESSED_BOOL) |
4036
|
24 |
1 |
if (dec->end - dec->cur >= 5 && memEQc(dec->cur, "false")) |
|
23 |
1 |
if (dec->end - dec->cur >= 5 && memEQc(dec->cur, "false")) |
4040
|
5 |
18 |
if (typesv) |
4042
|
4 |
19 |
if (dec->json.flags & F_UNBLESSED_BOOL) |
4052
|
58 |
1 |
if (dec->end - dec->cur >= 4 && memEQc(dec->cur, "null")) |
|
56 |
2 |
if (dec->end - dec->cur >= 4 && memEQc(dec->cur, "null")) |
4055
|
3 |
53 |
if (typesv) |
4097
|
0 |
8 |
PUSHMARK(SP); |
4098
|
0 |
8 |
XPUSHs(newSVpvn(encoding, strlen(encoding))); |
4099
|
0 |
8 |
XPUSHs(string); |
4110
|
8 |
0 |
if (items >= 0 && SvPOK(TOPs)) { |
|
8 |
0 |
if (items >= 0 && SvPOK(TOPs)) { |
4137
|
1333 |
111 |
if (SvMAGICAL (string) || !SvPOK (string) || SvIsCOW_shared_hash(string)) |
|
1328 |
5 |
if (SvMAGICAL (string) || !SvPOK (string) || SvIsCOW_shared_hash(string)) |
|
198 |
1130 |
if (SvMAGICAL (string) || !SvPOK (string) || SvIsCOW_shared_hash(string)) |
|
1 |
197 |
if (SvMAGICAL (string) || !SvPOK (string) || SvIsCOW_shared_hash(string)) |
4140
|
4 |
1440 |
SvUPGRADE (string, SVt_PV); |
4159
|
1438 |
6 |
if (UNLIKELY(len > json->max_size && json->max_size)) |
|
1 |
1437 |
if (UNLIKELY(len > json->max_size && json->max_size)) |
4172
|
1395 |
48 |
if (UNLIKELY(len > 2 && SvPOK(string) && !json->incr_pos)) { |
|
1395 |
0 |
if (UNLIKELY(len > 2 && SvPOK(string) && !json->incr_pos)) { |
|
1395 |
48 |
if (UNLIKELY(len > 2 && SvPOK(string) && !json->incr_pos)) { |
|
1126 |
269 |
if (UNLIKELY(len > 2 && SvPOK(string) && !json->incr_pos)) { |
4174
|
12 |
1114 |
if (*s >= 0xEF) { |
4175
|
12 |
0 |
if (len >= 3 && memEQc(s, UTF8BOM)) { |
|
5 |
7 |
if (len >= 3 && memEQc(s, UTF8BOM)) { |
4183
|
7 |
0 |
} else if (len >= 4 && memEQc(s, UTF32BOM)) { |
|
2 |
5 |
} else if (len >= 4 && memEQc(s, UTF32BOM)) { |
4187
|
2 |
3 |
} else if (memEQc(s, UTF16BOM)) { |
4191
|
2 |
1 |
} else if (memEQc(s, UTF16BOM_BE)) { |
4196
|
1071 |
43 |
} else if (UNLIKELY(len >= 4 && !*s && memEQc(s, UTF32BOM_BE))) { |
|
2 |
1069 |
} else if (UNLIKELY(len >= 4 && !*s && memEQc(s, UTF32BOM_BE))) { |
|
2 |
1112 |
} else if (UNLIKELY(len >= 4 && !*s && memEQc(s, UTF32BOM_BE))) { |
|
2 |
0 |
} else if (UNLIKELY(len >= 4 && !*s && memEQc(s, UTF32BOM_BE))) { |
4203
|
1430 |
13 |
if (LIKELY(!converted)) { |
4204
|
752 |
678 |
if (DECODE_WANTS_OCTETS (json)) |
4211
|
0 |
1442 |
if (!SvPOK(string)) |
4212
|
0 |
0 |
SvGROW (string, SvCUR (string) + 1); |
|
0 |
0 |
SvGROW (string, SvCUR (string) + 1); |
4220
|
1432 |
10 |
if (dec.json.cb_object || dec.json.cb_sk_object) |
|
4 |
1428 |
if (dec.json.cb_object || dec.json.cb_sk_object) |
4228
|
283 |
1159 |
if (offset_return) { |
4229
|
283 |
0 |
if (dec.cur < SvPVX (string) || dec.cur > SvEND (string)) |
|
0 |
283 |
if (dec.cur < SvPVX (string) || dec.cur > SvEND (string)) |
4235
|
1159 |
283 |
if (!(offset_return || !sv)) |
|
841 |
318 |
if (!(offset_return || !sv)) |
4240
|
820 |
21 |
if ((dec.end - dec.cur) || *dec.cur) |
|
0 |
820 |
if ((dec.end - dec.cur) || *dec.cur) |
4248
|
5 |
1437 |
if (UNLIKELY(offset)) { |
4253
|
343 |
1099 |
if (!sv) |
4268
|
306 |
37 |
croak ("%s, at character offset %d (before \"%s\")", |
4271
|
306 |
0 |
dec.cur != dec.end ? SvPV_nolen (uni) : "(end of string)"); |
4274
|
885 |
214 |
if (!(dec.json.flags & F_ALLOW_NONREF) && json_nonref(aTHX_ sv)) |
|
9 |
876 |
if (!(dec.json.flags & F_ALLOW_NONREF) && json_nonref(aTHX_ sv)) |
4277
|
12 |
1078 |
if (UNLIKELY(converted && !(converted - 1))) /* with BOM, and UTF8 was not set */ |
|
1 |
11 |
if (UNLIKELY(converted && !(converted - 1))) /* with BOM, and UTF8 was not set */ |
4302
|
278 |
278 |
if (*p > 0x20) |
4304
|
6 |
272 |
if (*p == '#') |
4315
|
42 |
236 |
else if (!*p) |
4323
|
0 |
0 |
if (!*p) |
4336
|
9 |
36 |
if (*p == '\n') |
4338
|
6 |
3 |
self->incr_mode = self->incr_mode == INCR_M_C0 ? INCR_M_WS : INCR_M_JSON; |
4341
|
0 |
36 |
else if (!*p) |
4354
|
583 |
1502 |
if (*p == '"') |
4359
|
15 |
568 |
if (!self->incr_nest) |
4364
|
498 |
1004 |
else if (*p == '\\') |
4368
|
0 |
498 |
if (!*p) /* if at end of string we have to switch modes */ |
4374
|
2 |
1002 |
else if (!*p) |
4395
|
0 |
682 |
if (!self->incr_nest) |
4409
|
1 |
357 |
if (++self->incr_nest > (int)self->max_depth) |
4415
|
256 |
99 |
if (--self->incr_nest <= 0) |
4507
|
0 |
217 |
XPUSHs (sv_2mortal (sv_bless ( |
|
217 |
0 |
XPUSHs (sv_2mortal (sv_bless ( |
4539
|
292 |
14 |
if (enable) |
4543
|
0 |
306 |
XPUSHs (ST (0)); |
4571
|
0 |
0 |
XPUSHs (boolSV (self->flags & ix)); |
|
0 |
0 |
XPUSHs (boolSV (self->flags & ix)); |
4575
|
1 |
0 |
if (0 <= val && val <= 15) { |
|
1 |
0 |
if (0 <= val && val <= 15) { |
4580
|
0 |
1 |
XPUSHs (ST (0)); |
4591
|
0 |
5 |
XPUSHs (ST (0)); |
4602
|
0 |
3 |
XPUSHs (ST (0)); |
4612
|
11 |
0 |
if (infnan_mode > 3 || infnan_mode < 0) { |
|
0 |
11 |
if (infnan_mode > 3 || infnan_mode < 0) { |
4616
|
0 |
11 |
XPUSHs (ST (0)); |
4628
|
0 |
3 |
self->cb_sort_by = SvOK (cb) ? newSVsv (cb) : 0; |
|
0 |
0 |
self->cb_sort_by = SvOK (cb) ? newSVsv (cb) : 0; |
|
0 |
0 |
self->cb_sort_by = SvOK (cb) ? newSVsv (cb) : 0; |
4629
|
3 |
0 |
if (self->cb_sort_by) |
4632
|
0 |
3 |
XPUSHs (ST (0)); |
4640
|
1 |
4 |
self->cb_object = SvOK (cb) ? newSVsv (cb) : 0; |
|
1 |
0 |
self->cb_object = SvOK (cb) ? newSVsv (cb) : 0; |
|
0 |
1 |
self->cb_object = SvOK (cb) ? newSVsv (cb) : 0; |
4642
|
0 |
5 |
XPUSHs (ST (0)); |
4648
|
3 |
3 |
if (!self->cb_sk_object) |
4651
|
1 |
5 |
if (SvOK (cb)) |
|
1 |
0 |
if (SvOK (cb)) |
|
0 |
1 |
if (SvOK (cb)) |
4657
|
0 |
1 |
if (!HvKEYS (self->cb_sk_object)) |
|
0 |
1 |
if (!HvKEYS (self->cb_sk_object)) |
4664
|
0 |
6 |
XPUSHs (ST (0)); |
4670
|
0 |
1109 |
XPUSHs (scalar); |
4675
|
0 |
648 |
XPUSHs (jsonstr); |
4683
|
0 |
10 |
EXTEND (SP, 2); |
4691
|
27 |
599 |
if (!self->incr_text) |
4695
|
27 |
599 |
if (!DECODE_WANTS_OCTETS (self) == !SvUTF8 (self->incr_text)) { |
4696
|
0 |
27 |
if (DECODE_WANTS_OCTETS (self)) |
4698
|
0 |
0 |
if (self->incr_pos) |
4708
|
0 |
27 |
if (self->incr_pos) |
4715
|
321 |
305 |
if (jsonstr) |
4718
|
319 |
2 |
if (SvUTF8 (jsonstr) != SvUTF8 (self->incr_text)) { |
4719
|
0 |
319 |
if (SvUTF8 (jsonstr)) |
4728
|
321 |
0 |
const char *str = SvPV (jsonstr, len); |
4731
|
147 |
174 |
if (SvLEN (self->incr_text) <= cur + len) |
4732
|
147 |
0 |
SvGROW (self->incr_text, cur + (len < (cur >> 2) ? cur >> 2 : len) + 1); |
|
147 |
0 |
SvGROW (self->incr_text, cur + (len < (cur >> 2) ? cur >> 2 : len) + 1); |
4740
|
626 |
0 |
if (GIMME_V != G_VOID) |
|
317 |
309 |
if (GIMME_V != G_VOID) |
4747
|
317 |
2 |
if (!INCR_DONE (self)) |
|
316 |
1 |
if (!INCR_DONE (self)) |
4751
|
278 |
39 |
if (UNLIKELY(self->incr_pos > self->max_size && self->max_size)) |
|
1 |
277 |
if (UNLIKELY(self->incr_pos > self->max_size && self->max_size)) |
4755
|
314 |
2 |
if (!INCR_DONE (self)) |
|
44 |
270 |
if (!INCR_DONE (self)) |
4758
|
42 |
4 |
if (self->incr_mode == INCR_M_WS && self->incr_pos) |
|
4 |
38 |
if (self->incr_mode == INCR_M_WS && self->incr_pos) |
4769
|
0 |
267 |
XPUSHs (sv); |
4781
|
267 |
0 |
while (GIMME_V == G_ARRAY); |
|
2 |
265 |
while (GIMME_V == G_ARRAY); |
4791
|
0 |
290 |
if (UNLIKELY(self->incr_pos)) |
4798
|
289 |
1 |
ST(0) = self->incr_text ? self->incr_text : &PL_sv_undef; |
4819
|
2 |
0 |
if (self->incr_pos) |
4821
|
2 |
0 |
sv_chop (self->incr_text, SvPV_nolen (self->incr_text) + self->incr_pos); |
4831
|
1 |
0 |
if (self->incr_text) |
4860
|
0 |
215 |
XPUSHs (scalar); |
4872
|
216 |
0 |
if (ix && allow_nonref) |
|
9 |
207 |
if (ix && allow_nonref) |
4875
|
0 |
165 |
XPUSHs (jsonstr); |