line |
true |
false |
branch |
434
|
58 |
0 |
if ( !cxt->mojo_boolean_stash ) |
436
|
58 |
0 |
if ( !cxt->jsonold_boolean_stash ) |
461
|
0 |
116 |
if (!SvOBJECT(sv) || !SvSTASH(sv)) { |
|
0 |
0 |
if (!SvOBJECT(sv) || !SvSTASH(sv)) { |
477
|
200 |
0 |
if (SvLEN (sv) > SvCUR (sv) + 1) |
495
|
2791 |
0 |
if (LIKELY(len >= 2 |
|
1308 |
1483 |
if (LIKELY(len >= 2 |
|
1308 |
1483 |
if (LIKELY(len >= 2 |
|
1306 |
2 |
if (LIKELY(len >= 2 |
507
|
4 |
1481 |
UV c = utf8n_to_uvuni (s, len, clen, |
573
|
0 |
1335 |
if (UNLIKELY(ch < 0x000080)) |
575
|
736 |
599 |
else if (LIKELY(ch < 0x000800)) |
578
|
267 |
332 |
else if (ch < 0x010000) |
582
|
332 |
0 |
else if (ch < 0x110000) |
597
|
50 |
303 |
: offset; |
723
|
17 |
62 |
if (*s == '-') |
741
|
17 |
62 |
return neg ? -accum : accum; |
748
|
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; |
761
|
73 |
56 |
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; |
770
|
27 |
1819 |
if (svt < SVt_PVAV) |
773
|
24 |
3 |
char *pv = svt ? SvPV_nomg (sv, len) : 0; |
|
9 |
15 |
char *pv = svt ? SvPV_nomg (sv, len) : 0; |
775
|
9 |
18 |
if (len == 1) { |
776
|
5 |
4 |
if (*pv == '1') |
778
|
3 |
1 |
else if (*pv == '0') |
791
|
7 |
1833 |
if (!SvROK (scalar)) |
796
|
1819 |
14 |
if (!SvOBJECT (scalar) && ref_bool_type (aTHX_ scalar) >= 0) |
|
0 |
1819 |
if (!SvOBJECT (scalar) && ref_bool_type (aTHX_ scalar) >= 0) |
799
|
14 |
1819 |
if (SvOBJECT (scalar) && is_bool_obj (aTHX_ scalar)) |
|
2 |
12 |
if (SvOBJECT (scalar) && is_bool_obj (aTHX_ scalar)) |
827
|
3174 |
57494 |
if (UNLIKELY(enc->cur + len >= enc->end)) |
830
|
3174 |
0 |
SvGROW (enc->sv, cur + (len < (cur >> 2) ? cur >> 2 : len) + 1); |
|
1860 |
1314 |
SvGROW (enc->sv, cur + (len < (cur >> 2) ? cur >> 2 : len) + 1); |
860
|
48006 |
2349 |
while (str < end) |
867
|
46116 |
1890 |
if (LIKELY(ch >= 0x20 && ch < 0x80)) /* most common case */ |
|
39756 |
6360 |
if (LIKELY(ch >= 0x20 && ch < 0x80)) /* most common case */ |
870
|
225 |
39531 |
if (UNLIKELY(ch == '"')) /* but with slow exceptions */ |
877
|
414 |
39117 |
else if (UNLIKELY(ch == '\\')) |
884
|
39 |
39078 |
else if (UNLIKELY(ch == '/' && (enc->json.flags & F_ESCAPE_SLASH))) |
|
1 |
38 |
else if (UNLIKELY(ch == '/' && (enc->json.flags & F_ESCAPE_SLASH))) |
919
|
3637 |
4053 |
if (is_utf8 && !(enc->json.flags & F_BINARY)) |
|
1620 |
2017 |
if (is_utf8 && !(enc->json.flags & F_BINARY)) |
923
|
0 |
1620 |
if (clen == (STRLEN)-1) |
932
|
6360 |
1330 |
if (uch < 0x80/*0x20*/ || uch >= enc->limit) |
|
5195 |
1165 |
if (uch < 0x80/*0x20*/ || uch >= enc->limit) |
934
|
5015 |
1510 |
if (enc->json.flags & F_BINARY) |
944
|
320 |
1190 |
else if (uch >= 0x10000UL) |
946
|
0 |
320 |
if (uch >= 0x110000UL) |
970
|
8 |
1157 |
else if (enc->json.flags & F_LATIN1) |
976
|
0 |
1157 |
else if (enc->json.flags & F_BINARY) |
982
|
915 |
242 |
else if (is_utf8) |
990
|
1851 |
915 |
while (--clen); |
1016
|
32 |
3698 |
if (enc->json.flags & F_INDENT) |
1035
|
40 |
3812 |
if (enc->json.flags & F_INDENT) |
1046
|
8 |
1204 |
if (enc->json.flags & F_INDENT) |
1048
|
0 |
1204 |
else if (enc->json.flags & F_SPACE_AFTER) |
1060
|
1 |
897 |
if (enc->indent >= enc->json.max_depth) |
1063
|
875 |
22 |
if (UNLIKELY (SvOK (typesv))) |
|
875 |
0 |
if (UNLIKELY (SvOK (typesv))) |
|
0 |
875 |
if (UNLIKELY (SvOK (typesv))) |
|
0 |
875 |
if (UNLIKELY (SvOK (typesv))) |
1065
|
22 |
0 |
if (SvROK (typesv) && |
|
16 |
6 |
if (SvROK (typesv) && |
1066
|
11 |
5 |
SvOBJECT (SvRV (typesv)) && |
1070
|
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; |
1071
|
11 |
0 |
if (LIKELY (name && strEQ (name, JSON_TYPE_ANYOF_CLASS))) |
|
11 |
0 |
if (LIKELY (name && strEQ (name, JSON_TYPE_ANYOF_CLASS))) |
1075
|
0 |
11 |
if (UNLIKELY (!typesv_ref)) |
1076
|
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'", |
1080
|
0 |
11 |
SvGETMAGIC (typesv); |
|
0 |
0 |
SvGETMAGIC (typesv); |
1081
|
0 |
11 |
if (!SvOK (typesv)) |
|
0 |
0 |
if (!SvOK (typesv)) |
|
0 |
0 |
if (!SvOK (typesv)) |
1082
|
0 |
0 |
croak ("no array alternative in anyof was specified for '%s'", |
1087
|
0 |
22 |
if (UNLIKELY (!SvROK (typesv))) |
1088
|
0 |
0 |
croak ("encountered type (%s, 0x%x) was specified for '%s'", |
|
0 |
0 |
croak ("encountered type (%s, 0x%x) was specified for '%s'", |
1092
|
9 |
13 |
if (!SvOBJECT (SvRV (typesv)) && SvTYPE (SvRV (typesv)) == SVt_PVAV) |
|
9 |
0 |
if (!SvOBJECT (SvRV (typesv)) && SvTYPE (SvRV (typesv)) == SVt_PVAV) |
1095
|
0 |
9 |
if (len != av_len (typeav)) |
1096
|
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'", |
1100
|
13 |
0 |
else if (SvOBJECT (SvRV (typesv)) && |
|
13 |
0 |
else if (SvOBJECT (SvRV (typesv)) && |
1104
|
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; |
1105
|
13 |
0 |
if (LIKELY (name && strEQ (name, JSON_TYPE_ARRAYOF_CLASS))) |
|
13 |
0 |
if (LIKELY (name && strEQ (name, JSON_TYPE_ARRAYOF_CLASS))) |
1108
|
0 |
0 |
croak ("encountered type (%s, 0x%x) was specified for '%s'", |
|
0 |
0 |
croak ("encountered type (%s, 0x%x) was specified for '%s'", |
1113
|
0 |
0 |
croak ("encountered type (%s, 0x%x) was specified for '%s'", |
|
0 |
0 |
croak ("encountered type (%s, 0x%x) was specified for '%s'", |
1120
|
887 |
10 |
if (len >= 0) |
1124
|
1736 |
872 |
for (i = 0; i <= len; ++i) |
1128
|
23 |
1713 |
if (typeav) |
1131
|
23 |
0 |
if (typerv) |
1137
|
1734 |
2 |
if (svp) |
1142
|
849 |
872 |
if (i < len) |
1157
|
1 |
744 |
if (He_IS_SVKEY(he)) |
1160
|
1 |
0 |
SV *sv = HeSVKEY (he); |
|
1 |
0 |
SV *sv = HeSVKEY (he); |
1161
|
1 |
0 |
*key = SvPV (sv, len); |
1172
|
4 |
741 |
if (utf8) *klen = -(*klen); |
1182
|
7 |
738 |
if (enc->json.flags & F_SPACE_BEFORE) encode_space (aTHX_ enc); |
1184
|
7 |
738 |
if (enc->json.flags & F_SPACE_AFTER ) encode_space (aTHX_ enc); |
1199
|
198 |
118 |
if (!(cmp = memcmp (HeKEY (b), HeKEY (a), lb < la ? lb : la))) |
1210
|
371 |
0 |
return sv_cmp (HeSVKEY_force (*(HE **)b), HeSVKEY_force (*(HE **)a)); |
|
0 |
371 |
return sv_cmp (HeSVKEY_force (*(HE **)b), HeSVKEY_force (*(HE **)a)); |
|
9 |
362 |
return sv_cmp (HeSVKEY_force (*(HE **)b), HeSVKEY_force (*(HE **)a)); |
|
371 |
0 |
return sv_cmp (HeSVKEY_force (*(HE **)b), HeSVKEY_force (*(HE **)a)); |
|
0 |
371 |
return sv_cmp (HeSVKEY_force (*(HE **)b), HeSVKEY_force (*(HE **)a)); |
|
13 |
358 |
return sv_cmp (HeSVKEY_force (*(HE **)b), HeSVKEY_force (*(HE **)a)); |
1219
|
1 |
392 |
if (enc->indent >= enc->json.max_depth) |
1222
|
375 |
17 |
if (UNLIKELY (SvOK (typesv))) |
|
375 |
0 |
if (UNLIKELY (SvOK (typesv))) |
|
0 |
375 |
if (UNLIKELY (SvOK (typesv))) |
|
0 |
375 |
if (UNLIKELY (SvOK (typesv))) |
1224
|
17 |
0 |
if (SvROK (typesv) && |
|
6 |
11 |
if (SvROK (typesv) && |
1225
|
4 |
2 |
SvOBJECT (SvRV (typesv)) && |
1229
|
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; |
1230
|
4 |
0 |
if (LIKELY (name && strEQ (name, JSON_TYPE_ANYOF_CLASS))) |
|
4 |
0 |
if (LIKELY (name && strEQ (name, JSON_TYPE_ANYOF_CLASS))) |
1234
|
0 |
4 |
if (UNLIKELY (!typesv_ref)) |
1235
|
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'", |
1239
|
0 |
4 |
SvGETMAGIC (typesv); |
|
0 |
0 |
SvGETMAGIC (typesv); |
1240
|
0 |
4 |
if (!SvOK (typesv)) |
|
0 |
0 |
if (!SvOK (typesv)) |
|
0 |
0 |
if (!SvOK (typesv)) |
1241
|
0 |
0 |
croak ("no hash alternative in anyof was specified for '%s'", |
1246
|
0 |
17 |
if (UNLIKELY (!SvROK (typesv))) |
1247
|
0 |
0 |
croak ("encountered type (%s, 0x%x) was specified for '%s'", |
|
0 |
0 |
croak ("encountered type (%s, 0x%x) was specified for '%s'", |
1251
|
13 |
4 |
if (!SvOBJECT (SvRV (typesv)) && SvTYPE (SvRV (typesv)) == SVt_PVHV) |
|
13 |
0 |
if (!SvOBJECT (SvRV (typesv)) && SvTYPE (SvRV (typesv)) == SVt_PVHV) |
1253
|
4 |
0 |
else if (SvOBJECT (SvRV (typesv)) && |
|
4 |
0 |
else if (SvOBJECT (SvRV (typesv)) && |
1257
|
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; |
1258
|
4 |
0 |
if (LIKELY (name && strEQ (name, JSON_TYPE_HASHOF_CLASS))) |
|
4 |
0 |
if (LIKELY (name && strEQ (name, JSON_TYPE_HASHOF_CLASS))) |
1261
|
0 |
0 |
croak ("encountered type (%s, 0x%x) was specified for '%s'", |
|
0 |
0 |
croak ("encountered type (%s, 0x%x) was specified for '%s'", |
1266
|
0 |
0 |
croak ("encountered type (%s, 0x%x) was specified for '%s'", |
|
0 |
0 |
croak ("encountered type (%s, 0x%x) was specified for '%s'", |
1276
|
240 |
152 |
if (enc->json.flags & F_CANONICAL && !SvTIED_mg((SV*)hv, PERL_MAGIC_tied)) |
|
0 |
240 |
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)) |
1280
|
0 |
240 |
if (SvMAGICAL (hv)) |
1288
|
0 |
0 |
while (hv_iternext (hv)) |
1294
|
234 |
6 |
if (count) |
1301
|
0 |
234 |
if (count > STACK_HES) |
1308
|
585 |
234 |
while ((he = hv_iternext (hv))) |
1311
|
585 |
0 |
if (HeKLEN (he) < 0 || HeKUTF8 (he)) |
|
3 |
582 |
if (HeKLEN (he) < 0 || HeKUTF8 (he)) |
1317
|
231 |
3 |
if (fast) |
1333
|
3 |
0 |
FREETMPS; |
1339
|
585 |
233 |
while (count--) |
1349
|
29 |
556 |
if (UNLIKELY (PTR2ul (typehv))) |
1352
|
0 |
29 |
if (UNLIKELY (!typesv_ref)) |
1358
|
0 |
585 |
encode_sv (aTHX_ enc, UNLIKELY(SvMAGICAL (hv)) ? hv_iterval (hv, he) : HeVAL (he), typesv); |
1360
|
351 |
233 |
if (count) |
1369
|
5 |
147 |
if (hv_iterinit (hv) || SvMAGICAL (hv)) |
|
1 |
4 |
if (hv_iterinit (hv) || SvMAGICAL (hv)) |
1370
|
148 |
0 |
if ((he = hv_iternext (hv))) |
1383
|
0 |
160 |
if (UNLIKELY (PTR2ul (typehv))) |
1386
|
0 |
0 |
if (UNLIKELY (!typesv_ref)) |
1392
|
1 |
159 |
encode_sv (aTHX_ enc, UNLIKELY(SvMAGICAL (hv)) ? hv_iterval (hv, he) : HeVAL (he), typesv); |
1394
|
144 |
12 |
if (!(he = hv_iternext (hv))) |
1432
|
9 |
2 |
if (isref && SvAMAGIC(sv)) |
|
9 |
0 |
if (isref && SvAMAGIC(sv)) |
|
9 |
0 |
if (isref && SvAMAGIC(sv)) |
|
9 |
0 |
if (isref && SvAMAGIC(sv)) |
1435
|
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)) { |
1436
|
0 |
2 |
if (isref && !(enc->json.flags & F_ALLOW_UNKNOWN)) |
|
0 |
0 |
if (isref && !(enc->json.flags & F_ALLOW_UNKNOWN)) |
1437
|
0 |
0 |
croak ("cannot encode reference to scalar '%s' unless the scalar is 0 or 1", |
1443
|
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) { |
1448
|
0 |
9 |
SvSETMAGIC(pv); |
1449
|
0 |
9 |
str = SvPVutf8_force(pv, len); |
1470
|
0 |
9 |
if (!len) { |
1477
|
0 |
0 |
if (SvGMAGICAL(sv)) mg_get(sv); |
1478
|
0 |
0 |
if (MyAMG(sv)) { /* force a RV here */ |
|
0 |
0 |
if (MyAMG(sv)) { /* force a RV here */ |
1493
|
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)); |
1494
|
0 |
0 |
if (pv && SvPOK(pv)) { |
|
0 |
0 |
if (pv && SvPOK(pv)) { |
1495
|
0 |
0 |
str = SvPVutf8_force(pv, len); |
1505
|
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] == '+')) { |
1510
|
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( |
1517
|
7 |
0 |
if (is_bignum_obj (aTHX_ SvRV (sv))) |
1519
|
4 |
3 |
if (enc->json.infnan_mode == 0) { |
1521
|
4 |
0 |
if (pv) SvREFCNT_dec(pv); |
1523
|
3 |
0 |
} else if (enc->json.infnan_mode == 3) { |
1524
|
2 |
1 |
if (memEQc(str, "NaN") || memEQc(str, "nan")) |
|
0 |
2 |
if (memEQc(str, "NaN") || memEQc(str, "nan")) |
1526
|
1 |
1 |
else if (memEQc(str, "inf")) |
1530
|
3 |
0 |
if (pv) SvREFCNT_dec(pv); |
1535
|
0 |
2 |
if (!str) |
1538
|
0 |
2 |
if (isref != 1) |
1541
|
0 |
2 |
if (isref != 1) |
1550
|
35 |
28 |
if (is_bool_obj (aTHX_ sv)) |
1552
|
3 |
32 |
if (as_string) |
1554
|
35 |
0 |
if (SvIV_nomg (sv)) |
|
20 |
15 |
if (SvIV_nomg (sv)) |
1558
|
3 |
32 |
if (as_string) |
1561
|
0 |
28 |
else if (force_conversion && enc->json.flags & F_CONV_BLESSED) |
|
0 |
0 |
else if (force_conversion && enc->json.flags & F_CONV_BLESSED) |
1563
|
0 |
0 |
if (as_string) |
1565
|
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)) |
1569
|
0 |
0 |
if (as_string) |
1583
|
5 |
22 |
if (bool_type == 1) |
1585
|
3 |
19 |
else if (bool_type == 0) |
1605
|
51 |
29 |
if (UNLIKELY (SvOBJECT (sv))) |
1607
|
28 |
23 |
if (!encode_bool_obj (aTHX_ enc, sv, 0, 0)) |
1610
|
7 |
21 |
if ((enc->json.flags & F_ALLOW_TAGS) |
1611
|
6 |
1 |
&& (method = gv_fetchmethod_autoload (stash, "FREEZE", 0))) |
1617
|
0 |
6 |
ENTER; SAVETMPS; SAVESTACK_POS (); PUSHMARK (SP); |
|
0 |
6 |
ENTER; SAVETMPS; SAVESTACK_POS (); PUSHMARK (SP); |
1618
|
0 |
6 |
EXTEND (SP, 2); |
1628
|
2 |
4 |
if (SvROK (TOPs) && SvRV (TOPs) == sv) |
|
0 |
2 |
if (SvROK (TOPs) && SvRV (TOPs) == sv) |
1629
|
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", |
1630
|
0 |
0 |
HvNAME (SvSTASH (sv))); |
|
0 |
0 |
HvNAME (SvSTASH (sv))); |
|
0 |
0 |
HvNAME (SvSTASH (sv))); |
|
0 |
0 |
HvNAME (SvSTASH (sv))); |
1634
|
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)); |
1639
|
255 |
6 |
while (count) |
1644
|
249 |
6 |
if (count) |
1653
|
6 |
0 |
FREETMPS; LEAVE; |
1655
|
18 |
4 |
else if ((enc->json.flags & F_CONV_BLESSED) |
1656
|
7 |
11 |
&& (method = gv_fetchmethod_autoload (stash, "TO_JSON", 0))) |
1660
|
0 |
7 |
ENTER; SAVETMPS; PUSHMARK (SP); |
1662
|
0 |
7 |
XPUSHs (rv); |
1670
|
3 |
4 |
if (SvROK (TOPs) && SvRV (TOPs) == sv) |
|
1 |
2 |
if (SvROK (TOPs) && SvRV (TOPs) == sv) |
1671
|
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))); |
1678
|
6 |
0 |
FREETMPS; LEAVE; |
1680
|
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)) |
1682
|
2 |
4 |
else if (enc->json.flags & F_CONV_BLESSED) |
1684
|
2 |
2 |
else if (enc->json.flags & F_ALLOW_BLESSED) |
1687
|
0 |
2 |
croak ("encountered object '%s', but neither allow_blessed, convert_blessed nor allow_tags settings are enabled (or TO_JSON/FREEZE method missing)", |
1691
|
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) |
1693
|
19 |
5 |
if (!encode_bool_ref (aTHX_ enc, sv)) |
1695
|
0 |
19 |
if (enc->json.flags & F_ALLOW_STRINGIFY) |
1697
|
7 |
12 |
else if (enc->json.flags & F_ALLOW_UNKNOWN) |
1700
|
0 |
12 |
croak ("cannot encode reference to scalar '%s' unless the scalar is 0 or 1", |
1704
|
2 |
3 |
else if (enc->json.flags & F_ALLOW_UNKNOWN) |
1707
|
0 |
3 |
croak ("encountered %s, but JSON can only represent references to arrays or hashes", |
1716
|
95 |
12 |
if (!SvROK (sv)) |
1718
|
8 |
87 |
if (UNLIKELY (sv == &PL_sv_yes)) |
1720
|
6 |
81 |
else if (UNLIKELY (sv == &PL_sv_no)) |
1722
|
1 |
80 |
else if (!SvOK (sv)) |
|
1 |
0 |
else if (!SvOK (sv)) |
|
1 |
0 |
else if (!SvOK (sv)) |
1724
|
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)) |
1734
|
9 |
3 |
if (UNLIKELY (SvOBJECT (sv))) |
1736
|
0 |
9 |
if (!encode_bool_obj (aTHX_ enc, sv, 1, 0)) |
1737
|
0 |
0 |
croak ("encountered object '%s', but convert_blessed is not enabled", |
1740
|
3 |
0 |
else if (svt < SVt_PVAV && svt != SVt_PVGV) |
|
3 |
0 |
else if (svt < SVt_PVAV && svt != SVt_PVGV) |
1742
|
0 |
3 |
if (!encode_bool_ref (aTHX_ enc, sv)) |
1743
|
0 |
0 |
croak ("cannot encode reference to scalar '%s' unless the scalar is 0 or 1", |
1747
|
0 |
0 |
croak ("encountered %s, but does not represent boolean", |
1755
|
0 |
31 |
*iv = SvIV_nomg (sv); |
1759
|
9 |
22 |
if (!*is_neg) |
1761
|
0 |
9 |
*uv = SvUV_nomg (sv); |
1774
|
3 |
4092 |
SvGETMAGIC (sv); |
|
0 |
3 |
SvGETMAGIC (sv); |
1775
|
0 |
4095 |
SvGETMAGIC (typesv); |
|
0 |
0 |
SvGETMAGIC (typesv); |
1777
|
3661 |
434 |
if (UNLIKELY (!(SvOK (typesv)) && (enc->json.flags & F_REQUIRE_TYPES) && !(enc->json.flags & F_TYPE_ALL_STRING))) |
|
3661 |
0 |
if (UNLIKELY (!(SvOK (typesv)) && (enc->json.flags & F_REQUIRE_TYPES) && !(enc->json.flags & F_TYPE_ALL_STRING))) |
|
3661 |
0 |
if (UNLIKELY (!(SvOK (typesv)) && (enc->json.flags & F_REQUIRE_TYPES) && !(enc->json.flags & F_TYPE_ALL_STRING))) |
|
3661 |
0 |
if (UNLIKELY (!(SvOK (typesv)) && (enc->json.flags & F_REQUIRE_TYPES) && !(enc->json.flags & F_TYPE_ALL_STRING))) |
|
3661 |
434 |
if (UNLIKELY (!(SvOK (typesv)) && (enc->json.flags & F_REQUIRE_TYPES) && !(enc->json.flags & F_TYPE_ALL_STRING))) |
|
20 |
3641 |
if (UNLIKELY (!(SvOK (typesv)) && (enc->json.flags & F_REQUIRE_TYPES) && !(enc->json.flags & F_TYPE_ALL_STRING))) |
|
20 |
4075 |
if (UNLIKELY (!(SvOK (typesv)) && (enc->json.flags & F_REQUIRE_TYPES) && !(enc->json.flags & F_TYPE_ALL_STRING))) |
|
8 |
12 |
if (UNLIKELY (!(SvOK (typesv)) && (enc->json.flags & F_REQUIRE_TYPES) && !(enc->json.flags & F_TYPE_ALL_STRING))) |
1778
|
0 |
8 |
croak ("type for '%s' was not specified", SvPV_nolen (sv)); |
1780
|
1426 |
2661 |
if (SvROK (sv) && !SvOBJECT (SvRV (sv))) |
|
1323 |
103 |
if (SvROK (sv) && !SvOBJECT (SvRV (sv))) |
1783
|
393 |
930 |
if (svt == SVt_PVHV) |
1788
|
898 |
32 |
else if (svt == SVt_PVAV) |
1795
|
2401 |
395 |
if (UNLIKELY (!(SvOK (typesv)) && (enc->json.flags & F_TYPE_ALL_STRING))) |
|
2401 |
0 |
if (UNLIKELY (!(SvOK (typesv)) && (enc->json.flags & F_TYPE_ALL_STRING))) |
|
2401 |
0 |
if (UNLIKELY (!(SvOK (typesv)) && (enc->json.flags & F_TYPE_ALL_STRING))) |
|
2401 |
0 |
if (UNLIKELY (!(SvOK (typesv)) && (enc->json.flags & F_TYPE_ALL_STRING))) |
|
2401 |
395 |
if (UNLIKELY (!(SvOK (typesv)) && (enc->json.flags & F_TYPE_ALL_STRING))) |
|
9 |
2392 |
if (UNLIKELY (!(SvOK (typesv)) && (enc->json.flags & F_TYPE_ALL_STRING))) |
1798
|
2392 |
404 |
if (UNLIKELY (SvOK (typesv))) |
|
2392 |
0 |
if (UNLIKELY (SvOK (typesv))) |
|
0 |
2392 |
if (UNLIKELY (SvOK (typesv))) |
|
0 |
2392 |
if (UNLIKELY (SvOK (typesv))) |
1800
|
55 |
349 |
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))) |
1801
|
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)); |
1803
|
83 |
320 |
if (!SvIOKp (typesv)) |
1805
|
83 |
0 |
if (SvROK (typesv) && |
|
83 |
0 |
if (SvROK (typesv) && |
1806
|
83 |
0 |
SvOBJECT (SvRV (typesv)) && |
1810
|
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; |
1811
|
83 |
0 |
if (LIKELY (name && strEQ (name, JSON_TYPE_ANYOF_CLASS))) |
|
83 |
0 |
if (LIKELY (name && strEQ (name, JSON_TYPE_ANYOF_CLASS))) |
1815
|
0 |
83 |
if (UNLIKELY (!typesv_ref)) |
1816
|
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'", |
1820
|
0 |
83 |
SvGETMAGIC (typesv); |
|
0 |
0 |
SvGETMAGIC (typesv); |
1821
|
0 |
83 |
if (!SvIOKp (typesv)) |
1822
|
0 |
0 |
croak ("no scalar alternative in anyof was specified for '%s'", SvPV_nolen (sv)); |
1825
|
0 |
0 |
croak ("encountered type (%s, 0x%x) was specified for '%s'", |
|
0 |
0 |
croak ("encountered type (%s, 0x%x) was specified for '%s'", |
1830
|
0 |
0 |
croak ("encountered type (%s, 0x%x) was specified for '%s'", |
|
0 |
0 |
croak ("encountered type (%s, 0x%x) was specified for '%s'", |
1837
|
401 |
2394 |
if (UNLIKELY (type)) |
1845
|
2390 |
4 |
if (UNLIKELY (sv == &PL_sv_yes || sv == &PL_sv_no)) type = JSON_TYPE_BOOL; |
|
4 |
2386 |
if (UNLIKELY (sv == &PL_sv_yes || sv == &PL_sv_no)) type = JSON_TYPE_BOOL; |
1846
|
78 |
2308 |
else if (SvNOKp (sv)) type = JSON_TYPE_FLOAT; |
1847
|
872 |
1436 |
else if (SvIOKp (sv)) type = JSON_TYPE_INT; |
1848
|
1314 |
122 |
else if (SvPOKp (sv)) type = JSON_TYPE_STRING; |
1849
|
80 |
42 |
else if (SvROK (sv)) process_ref = 1; |
1850
|
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; |
1853
|
159 |
2636 |
if (can_be_null && !SvOK (sv)) |
|
55 |
104 |
if (can_be_null && !SvOK (sv)) |
|
55 |
0 |
if (can_be_null && !SvOK (sv)) |
|
55 |
0 |
if (can_be_null && !SvOK (sv)) |
1855
|
107 |
2633 |
else if (type == JSON_TYPE_BOOL) |
1857
|
161 |
2472 |
else if (type == JSON_TYPE_FLOAT) |
1873
|
19 |
142 |
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))) |
1876
|
16 |
145 |
if (UNLIKELY (is_bigobj)) |
1879
|
0 |
16 |
char *str = SvPV_nomg (sv, len); |
1880
|
0 |
16 |
if (UNLIKELY (str[0] == '+')) |
1885
|
14 |
2 |
if (UNLIKELY (memEQc (str, "NaN") || memEQc (str, "nan"))) |
|
0 |
14 |
if (UNLIKELY (memEQc (str, "NaN") || memEQc (str, "nan"))) |
1890
|
2 |
12 |
else if (UNLIKELY (memEQc (str, "inf"))) |
1895
|
2 |
10 |
else if (UNLIKELY (memEQc (str, "-inf"))) |
1909
|
116 |
29 |
else if (SvNOKp (sv)) |
1915
|
15 |
14 |
if (enc->json.flags & F_ALLOW_BIGNUM) |
1923
|
15 |
0 |
str = SvPV_nomg (sv, len); |
1926
|
2 |
13 |
if (UNLIKELY (numtype & IS_NUMBER_INFINITY)) |
1927
|
1 |
1 |
nv = (numtype & IS_NUMBER_NEG) ? -NV_INF : NV_INF; |
1928
|
1 |
12 |
else if (UNLIKELY (numtype & IS_NUMBER_NAN)) |
1930
|
0 |
12 |
else if (UNLIKELY (!numtype)) |
1931
|
0 |
0 |
nv = SvNV_nomg (sv); |
1942
|
12 |
0 |
errsv = ERRSV; |
1943
|
0 |
12 |
if (SvROK (errsv)) |
1945
|
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)) |
1954
|
0 |
12 |
str = SvPV (pv, len); |
1955
|
0 |
12 |
if (UNLIKELY (str[0] == '+')) |
1987
|
0 |
14 |
nv = SvNV_nomg (sv); |
1992
|
139 |
22 |
if (LIKELY (!is_bigobj)) |
1999
|
61 |
78 |
if (force_conversion) |
2005
|
16 |
45 |
if (UNLIKELY(isinf(nv))) |
2007
|
8 |
8 |
nv = (nv > 0) ? NV_MAX : -NV_MAX; |
2011
|
6 |
55 |
if (UNLIKELY(isnan(nv))) |
2016
|
63 |
15 |
else if (enc->json.infnan_mode == 0) |
2021
|
2 |
61 |
if (UNLIKELY(isinf(nv))) |
2024
|
1 |
1 |
inf_or_nan = (nv > 0) ? 1 : 2; |
2030
|
3 |
58 |
if (UNLIKELY(isnan(nv))) |
2085
|
3 |
131 |
if (UNLIKELY(strEQc(enc->cur, STR_INF))) |
2106
|
3 |
128 |
(UNLIKELY(strEQc(enc->cur, STR_NAN))) |
2109
|
25 |
103 |
else if (*enc->cur == '-') { |
2119
|
3 |
22 |
if (UNLIKELY(strEQc(enc->cur+1, STR_INF))) |
2134
|
6 |
16 |
(UNLIKELY(strEQc(enc->cur+1, STR_NAN))) |
2138
|
15 |
119 |
if (UNLIKELY(inf_or_nan)) { |
2140
|
5 |
15 |
if (enc->json.infnan_mode == 0) { |
2143
|
5 |
10 |
else if (enc->json.infnan_mode == 1) { |
2150
|
5 |
5 |
else if (enc->json.infnan_mode == 3) { |
2151
|
1 |
4 |
if (inf_or_nan == 1) |
2153
|
1 |
3 |
else if (inf_or_nan == 2) |
2155
|
3 |
0 |
else if (inf_or_nan == 3) |
2158
|
0 |
5 |
else if (enc->json.infnan_mode != 2) { |
2166
|
78 |
83 |
if (!force_conversion && SvPOKp (sv) && !strEQ(enc->cur, SvPVX (sv))) { |
|
4 |
74 |
if (!force_conversion && SvPOKp (sv) && !strEQ(enc->cur, SvPVX (sv))) { |
|
3 |
1 |
if (!force_conversion && SvPOKp (sv) && !strEQ(enc->cur, SvPVX (sv))) { |
2178
|
138 |
20 |
if (!( inf_or_nan || (had_nokp && Perl_modf(SvNVX(sv), &intpart)) || (!force_conversion && SvIOK(sv)) |
|
55 |
83 |
if (!( inf_or_nan || (had_nokp && Perl_modf(SvNVX(sv), &intpart)) || (!force_conversion && SvIOK(sv)) |
|
30 |
25 |
if (!( inf_or_nan || (had_nokp && Perl_modf(SvNVX(sv), &intpart)) || (!force_conversion && SvIOK(sv)) |
|
30 |
83 |
if (!( inf_or_nan || (had_nokp && Perl_modf(SvNVX(sv), &intpart)) || (!force_conversion && SvIOK(sv)) |
|
25 |
5 |
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)) |
2179
|
85 |
23 |
|| strchr(enc->cur,'e') || strchr(enc->cur,'E') || strchr(savecur,'.') |
|
85 |
0 |
|| strchr(enc->cur,'e') || strchr(enc->cur,'E') || strchr(savecur,'.') |
2193
|
1014 |
1458 |
else if (type == JSON_TYPE_INT) |
2203
|
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)) |
2206
|
16 |
0 |
int is_bigint = (stash && stash == gv_stashpvs ("Math::BigInt", 0)); |
|
8 |
8 |
int is_bigint = (stash && stash == gv_stashpvs ("Math::BigInt", 0)); |
2207
|
16 |
0 |
int is_bigfloat = (stash && stash == gv_stashpvs ("Math::BigFloat", 0)); |
|
8 |
8 |
int is_bigfloat = (stash && stash == gv_stashpvs ("Math::BigFloat", 0)); |
2209
|
8 |
8 |
if (is_bigint || is_bigfloat) |
|
8 |
0 |
if (is_bigint || is_bigfloat) |
2214
|
8 |
8 |
if (is_bigfloat) |
2222
|
0 |
8 |
PUSHMARK (SP); |
2223
|
0 |
8 |
XPUSHs (sv); |
2229
|
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); |
2232
|
0 |
8 |
PUSHMARK (SP); |
2233
|
0 |
8 |
XPUSHs (sv); |
2241
|
3 |
5 |
call_method (is_negative ? "bceil" : "bfloor", G_SCALAR); |
2248
|
0 |
16 |
str = SvPV_nomg (sv, len); |
2249
|
0 |
16 |
if (UNLIKELY (str[0] == '+')) |
2255
|
14 |
2 |
if (UNLIKELY (strEQc (str, "NaN") || strEQc (str, "nan"))) |
|
0 |
14 |
if (UNLIKELY (strEQc (str, "NaN") || strEQc (str, "nan"))) |
2259
|
2 |
12 |
else if (UNLIKELY (strEQc (str, "inf"))) |
2266
|
2 |
10 |
else if (UNLIKELY (strEQc (str, "-inf"))) |
2283
|
8 |
8 |
if (is_bigfloat) |
2285
|
8 |
0 |
FREETMPS; |
2293
|
915 |
83 |
if (SvIOK (sv)) |
2299
|
56 |
27 |
else if (SvPOKp (sv)) |
2302
|
42 |
14 |
if (numtype & IS_NUMBER_IN_UV) |
2304
|
10 |
32 |
if (numtype & IS_NUMBER_NEG) |
2307
|
3 |
7 |
if (LIKELY(uv <= (UV)(IV_MAX) + 1)) |
2319
|
2 |
12 |
else if (UNLIKELY (numtype & IS_NUMBER_INFINITY)) |
2322
|
1 |
1 |
if (is_neg) |
2334
|
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)) |
2341
|
6 |
6 |
if (numtype & IS_NUMBER_NOT_INT) |
2348
|
6 |
6 |
if (numtype & IS_NUMBER_NOT_INT) |
2362
|
12 |
0 |
errsv = ERRSV; |
2363
|
0 |
12 |
if (SvROK (errsv)) |
2365
|
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)) |
2374
|
0 |
12 |
str = SvPV (pv, len); |
2375
|
0 |
12 |
if (UNLIKELY (str[0] == '+')) |
2389
|
4 |
40 |
else if (!(numtype & (IS_NUMBER_IN_UV|IS_NUMBER_INFINITY|IS_NUMBER_NAN))) |
2424
|
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 |
2438
|
10 |
947 |
*enc->cur = '-'; enc->cur += i < 0 ? 1 : 0; |
2449
|
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; |
2450
|
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; |
2451
|
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; |
2452
|
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; |
2465
|
16 |
13 |
: snprintf (enc->cur, IVUV_MAXCHARS, "%" IVdf, iv); |
2468
|
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))) { |
2479
|
1378 |
80 |
else if (type == JSON_TYPE_STRING) |
2481
|
0 |
1378 |
if (UNLIKELY (sv == &PL_sv_yes)) |
2487
|
0 |
1378 |
else if (UNLIKELY (sv == &PL_sv_no)) |
2493
|
3 |
1375 |
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)) |
2497
|
1355 |
20 |
if (SvPOKp (sv)) |
2504
|
0 |
20 |
str = SvPV_nomg (sv, len); |
2511
|
80 |
0 |
else if (process_ref) |
2513
|
0 |
0 |
else if (enc->json.flags & F_ALLOW_UNKNOWN) |
2516
|
0 |
0 |
croak ("encountered perl type (%s,0x%x) that JSON cannot handle, check your input data", |
2525
|
955 |
400 |
if (!(json->flags & F_ALLOW_NONREF) && json_nonref (aTHX_ scalar)) |
|
0 |
955 |
if (!(json->flags & F_ALLOW_NONREF) && json_nonref (aTHX_ scalar)) |
2534
|
1243 |
112 |
: enc.json.flags & F_BINARY ? 0x000080UL |
2535
|
1040 |
203 |
: enc.json.flags & F_LATIN1 ? 0x000100UL |
2536
|
5 |
1035 |
: 0x110000UL; |
2545
|
677 |
649 |
if (!(enc.json.flags & (F_ASCII | F_LATIN1 | F_BINARY | F_UTF8))) |
2548
|
200 |
1126 |
if (enc.json.flags & F_SHRINK) |
2573
|
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) |
2584
|
38262 |
80408 |
if (ch > 0x20) |
2586
|
11 |
38251 |
if (UNLIKELY(ch == '#')) |
2588
|
9 |
2 |
if (dec->json.flags & F_RELAXED) |
2596
|
8577 |
71831 |
else if (ch != 0x20 && ch != 0x0a && ch != 0x0d && ch != 0x09) |
|
863 |
7714 |
else if (ch != 0x20 && ch != 0x0a && ch != 0x0d && ch != 0x09) |
|
863 |
0 |
else if (ch != 0x20 && ch != 0x0a && ch != 0x0d && ch != 0x09) |
|
861 |
2 |
else if (ch != 0x20 && ch != 0x0a && ch != 0x0d && ch != 0x09) |
3146
|
3 |
2141 |
d1 = decode_hexdigit [cur [0]]; if (UNLIKELY(d1 < 0)) ERR ("exactly four hexadecimal digits expected"); |
3147
|
2 |
2139 |
d2 = decode_hexdigit [cur [1]]; if (UNLIKELY(d2 < 0)) ERR ("exactly four hexadecimal digits expected"); |
3148
|
1 |
2138 |
d3 = decode_hexdigit [cur [2]]; if (UNLIKELY(d3 < 0)) ERR ("exactly four hexadecimal digits expected"); |
3149
|
1 |
2137 |
d4 = decode_hexdigit [cur [3]]; if (UNLIKELY(d4 < 0)) ERR ("exactly four hexadecimal digits expected"); |
3168
|
0 |
2506 |
d1 = decode_hexdigit [cur [0]]; if (UNLIKELY(d1 < 0)) ERR ("exactly two hexadecimal digits expected"); |
3169
|
0 |
2506 |
d2 = decode_hexdigit [cur [1]]; if (UNLIKELY(d2 < 0)) ERR ("exactly two hexadecimal digits expected"); |
3183
|
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"); |
3184
|
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"); |
3185
|
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"); |
3210
|
6445 |
121509 |
if (UNLIKELY(ch == endstr)) |
3212
|
7 |
6438 |
if (ch == 0x27 && !(dec->json.flags & F_ALLOW_SQUOTE)) { |
|
0 |
7 |
if (ch == 0x27 && !(dec->json.flags & F_ALLOW_SQUOTE)) { |
3218
|
5436 |
116073 |
else if (UNLIKELY(ch == '\\')) |
3235
|
2 |
2506 |
if (!(dec->json.flags & F_BINARY)) |
3240
|
0 |
2506 |
if (c == (UV)-1) |
3250
|
1 |
0 |
if (!(dec->json.flags & F_BINARY)) |
3254
|
0 |
0 |
if (c == (UV)-1) |
3268
|
3 |
1799 |
if (hi == (UV)-1) |
3270
|
0 |
1799 |
if (dec->json.flags & F_BINARY) |
3274
|
372 |
1427 |
if (hi >= 0xd800) { |
3275
|
352 |
20 |
if (hi < 0xdc00) { |
3276
|
345 |
7 |
if (dec_cur [0] != '\\' || dec_cur [1] != 'u') |
|
3 |
342 |
if (dec_cur [0] != '\\' || dec_cur [1] != 'u') |
3284
|
4 |
338 |
if (lo == (UV)-1) |
3287
|
332 |
6 |
if (lo < 0xdc00 || lo >= 0xe000) |
|
0 |
332 |
if (lo < 0xdc00 || lo >= 0xe000) |
3291
|
330 |
2 |
if (UNLIKELY( |
|
325 |
5 |
if (UNLIKELY( |
|
0 |
325 |
if (UNLIKELY( |
|
5 |
325 |
if (UNLIKELY( |
3298
|
9 |
11 |
else if (UNLIKELY(hi < 0xe000)) { |
3322
|
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( |
3329
|
1093 |
677 |
if (hi >= 0x80) |
3344
|
116056 |
17 |
else if (LIKELY(ch >= 0x20 && ch < 0x80)) { |
|
114885 |
1171 |
else if (LIKELY(ch >= 0x20 && ch < 0x80)) { |
3348
|
1171 |
17 |
else if (ch >= 0x80) |
3356
|
60 |
1111 |
if (clen == (STRLEN)-1) |
3361
|
1831 |
1111 |
while (--clen); |
3365
|
1 |
16 |
else if (dec->json.flags & F_RELAXED && ch == '\t') { |
|
1 |
0 |
else if (dec->json.flags & F_RELAXED && ch == '\t') { |
3371
|
9 |
7 |
if (!ch) |
3377
|
121386 |
2 |
while (cur < buf + SHORT_STRING_LEN); |
3382
|
1 |
6446 |
if (sv) |
3386
|
1 |
0 |
if (SvLEN (sv) <= cur + len) |
3387
|
1 |
0 |
SvGROW (sv, cur + (len < (cur >> 2) ? cur >> 2 : len) + 1); |
|
1 |
0 |
SvGROW (sv, cur + (len < (cur >> 2) ? cur >> 2 : len) + 1); |
3396
|
1 |
6446 |
while (*dec_cur != endstr); |
3400
|
6446 |
0 |
if (sv) |
3405
|
435 |
6011 |
if (utf8) |
3438
|
57 |
909 |
if (*dec->cur == '-') |
3441
|
119 |
847 |
if (*dec->cur == '0') |
3444
|
29 |
90 |
if (*dec->cur >= '0' && *dec->cur <= '9') |
|
6 |
23 |
if (*dec->cur >= '0' && *dec->cur <= '9') |
3447
|
845 |
2 |
else if (*dec->cur < '0' || *dec->cur > '9') |
|
5 |
840 |
else if (*dec->cur < '0' || *dec->cur > '9') |
3454
|
635 |
604 |
while (*dec->cur >= '0' && *dec->cur <= '9'); |
|
399 |
236 |
while (*dec->cur >= '0' && *dec->cur <= '9'); |
3457
|
66 |
887 |
if (*dec->cur == '.') |
3461
|
65 |
1 |
if (*dec->cur < '0' || *dec->cur > '9') |
|
7 |
58 |
if (*dec->cur < '0' || *dec->cur > '9') |
3468
|
231 |
24 |
while (*dec->cur >= '0' && *dec->cur <= '9'); |
|
197 |
34 |
while (*dec->cur >= '0' && *dec->cur <= '9'); |
3474
|
892 |
53 |
if (*dec->cur == 'e' || *dec->cur == 'E') |
|
8 |
884 |
if (*dec->cur == 'e' || *dec->cur == 'E') |
3478
|
50 |
11 |
if (*dec->cur == '-' || *dec->cur == '+') |
|
23 |
27 |
if (*dec->cur == '-' || *dec->cur == '+') |
3481
|
57 |
4 |
if (*dec->cur < '0' || *dec->cur > '9') |
|
13 |
44 |
if (*dec->cur < '0' || *dec->cur > '9') |
3488
|
200 |
21 |
while (*dec->cur >= '0' && *dec->cur <= '9'); |
|
177 |
23 |
while (*dec->cur >= '0' && *dec->cur <= '9'); |
3493
|
847 |
81 |
if (!is_nv) |
3497
|
7 |
840 |
if (typesv) |
3501
|
28 |
819 |
if (*start == '-') |
3523
|
10 |
6 |
if (numtype & IS_NUMBER_IN_UV) { |
3524
|
2 |
8 |
if (numtype & IS_NUMBER_NEG) |
3526
|
2 |
0 |
if (uv <= (UV)(IV_MAX) + 1) |
3537
|
0 |
6 |
if ((sizeof (NV) == sizeof (double) && DBL_DIG >= len) |
3545
|
2 |
4 |
if (dec->json.flags & F_ALLOW_BIGNUM) { |
3553
|
2 |
0 |
errsv = ERRSV; |
3554
|
0 |
2 |
if (SvROK (errsv)) |
3556
|
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)) |
3570
|
4 |
77 |
if (typesv) |
3573
|
2 |
79 |
if (dec->json.flags & F_ALLOW_BIGNUM) { |
3581
|
2 |
0 |
errsv = ERRSV; |
3582
|
0 |
2 |
if (SvROK (errsv)) |
3584
|
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)) |
3608
|
5 |
4222 |
DEC_INC_DEPTH; |
3611
|
5 |
4217 |
if (typesv) |
3615
|
5 |
0 |
SvSetMagicSV (typesv, typerv); |
|
0 |
5 |
SvSetMagicSV (typesv, typerv); |
3618
|
29 |
4193 |
if (*dec->cur == ']') |
3626
|
13 |
6364 |
if (typesv) |
3633
|
1506 |
4871 |
if (!value) |
3640
|
2658 |
2213 |
if (*dec->cur == ']') |
3646
|
27 |
2186 |
if (*dec->cur != ',') |
3653
|
5 |
2181 |
if (*dec->cur == ']' && dec->json.flags & F_RELAXED) |
|
2 |
3 |
if (*dec->cur == ']' && dec->json.flags & F_RELAXED) |
3681
|
0 |
2713 |
DEC_INC_DEPTH; |
3684
|
2 |
2711 |
if (typesv) |
3688
|
2 |
0 |
SvSetMagicSV (typesv, typerv); |
|
0 |
2 |
SvSetMagicSV (typesv, typerv); |
3691
|
17 |
2696 |
if (*dec->cur == '}') |
3698
|
19 |
6590 |
if (UNLIKELY(allow_barekey |
|
6 |
13 |
if (UNLIKELY(allow_barekey |
|
6 |
6603 |
if (UNLIKELY(allow_barekey |
|
6 |
0 |
if (UNLIKELY(allow_barekey |
3701
|
16 |
6587 |
else if (UNLIKELY(allow_squote)) { |
3702
|
5 |
11 |
if (*dec->cur != '"' && *dec->cur != 0x27) { |
|
1 |
4 |
if (*dec->cur != '"' && *dec->cur != 0x27) { |
3705
|
4 |
11 |
else if (*dec->cur == 0x27) |
3710
|
24 |
6563 |
EXPECT_CH ('"'); |
3728
|
52845 |
21 |
if (!is_bare && |
|
52785 |
60 |
if (!is_bare && |
3729
|
52781 |
4 |
(p == e || *p < 0x20 || *(U8*)p >= 0x80 || *p == '\\' |
|
52781 |
0 |
(p == e || *p < 0x20 || *(U8*)p >= 0x80 || *p == '\\' |
|
52578 |
203 |
(p == e || *p < 0x20 || *(U8*)p >= 0x80 || *p == '\\' |
3730
|
14 |
52564 |
|| allow_squote)) |
3735
|
4 |
277 |
if (!key) |
3738
|
269 |
8 |
if (!allow_dupkeys && UNLIKELY(hv_exists_ent (hv, key, 0))) { |
|
1 |
268 |
if (!allow_dupkeys && UNLIKELY(hv_exists_ent (hv, key, 0))) { |
3741
|
0 |
276 |
decode_ws (dec); EXPECT_CH (':'); |
3744
|
0 |
276 |
if (typesv) |
3751
|
1 |
275 |
if (!value) |
3762
|
46288 |
6297 |
else if (*p == endstr |
3763
|
21 |
46267 |
|| (is_bare && |
|
17 |
4 |
|| (is_bare && |
3764
|
16 |
1 |
(*p == ':' || *p == ' ' || *p == 0x0a |
|
16 |
0 |
(*p == ':' || *p == ' ' || *p == 0x0a |
3765
|
16 |
0 |
|| *p == 0x0d || *p == 0x09))) |
|
1 |
15 |
|| *p == 0x0d || *p == 0x09))) |
3774
|
0 |
6303 |
if (UNLIKELY(p - key > I32_MAX)) |
3777
|
6298 |
5 |
if (!allow_dupkeys && UNLIKELY(hv_exists (hv, key, len))) { |
|
6 |
6292 |
if (!allow_dupkeys && UNLIKELY(hv_exists (hv, key, len))) { |
3782
|
6293 |
4 |
decode_ws (dec); if (*p != ':') EXPECT_CH (':'); |
|
8 |
6285 |
decode_ws (dec); if (*p != ':') EXPECT_CH (':'); |
3785
|
9 |
6280 |
if (typesv) |
3792
|
776 |
5513 |
if (!value) |
3811
|
1869 |
3919 |
if (*dec->cur == '}') |
3817
|
5 |
3914 |
if (*dec->cur != ',') |
3824
|
3 |
3911 |
if (*dec->cur == '}' && dec->json.flags & F_RELAXED) |
|
1 |
2 |
if (*dec->cur == '}' && dec->json.flags & F_RELAXED) |
3835
|
14 |
1873 |
if (dec->json.flags & F_HOOK) |
3837
|
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) |
3847
|
7 |
0 |
if (LIKELY((long)he)) |
3850
|
6 |
1 |
if (cb) |
3855
|
0 |
6 |
ENTER; SAVETMPS; SAVESTACK_POS (); PUSHMARK (SP); |
|
0 |
6 |
ENTER; SAVETMPS; SAVESTACK_POS (); PUSHMARK (SP); |
3856
|
0 |
6 |
XPUSHs (HeVAL (he)); |
3861
|
4 |
2 |
if (count == 1) |
3864
|
4 |
0 |
PUTBACK; FREETMPS; LEAVE; |
3870
|
2 |
0 |
PUTBACK; FREETMPS; LEAVE; |
3874
|
8 |
2 |
if (dec->json.cb_object) |
3879
|
0 |
8 |
ENTER; SAVETMPS; SAVESTACK_POS (); PUSHMARK (SP); |
|
0 |
8 |
ENTER; SAVETMPS; SAVESTACK_POS (); PUSHMARK (SP); |
3880
|
0 |
8 |
XPUSHs (sv_2mortal (sv)); |
3884
|
3 |
5 |
if (count == 1) |
3887
|
3 |
0 |
PUTBACK; FREETMPS; LEAVE; |
3893
|
5 |
0 |
PUTBACK; FREETMPS; LEAVE; |
3911
|
0 |
1 |
if (!(dec->json.flags & F_ALLOW_TAGS)) |
3919
|
0 |
1 |
if (!tag) |
3922
|
0 |
1 |
if (!SvPOK (tag)) |
3927
|
0 |
1 |
if (*dec->cur != ')') |
3935
|
0 |
1 |
if (!val) |
3938
|
1 |
0 |
if (!SvROK (val) || SvTYPE (SvRV (val)) != SVt_PVAV) |
|
0 |
1 |
if (!SvROK (val) || SvTYPE (SvRV (val)) != SVt_PVAV) |
3950
|
0 |
1 |
if (!stash) |
3955
|
0 |
1 |
if (!method) |
3958
|
0 |
1 |
ENTER; SAVETMPS; SAVESTACK_POS (); PUSHMARK (SP); |
|
0 |
1 |
ENTER; SAVETMPS; SAVESTACK_POS (); PUSHMARK (SP); |
3959
|
1 |
0 |
EXTEND (SP, len + 2); |
|
0 |
1 |
EXTEND (SP, len + 2); |
3964
|
3 |
1 |
for (i = 0; i < len; ++i) |
3977
|
1 |
0 |
FREETMPS; LEAVE; |
3997
|
5 |
6278 |
if (typesv) |
4001
|
3 |
3 |
if (dec->json.flags & F_ALLOW_SQUOTE) { |
4003
|
0 |
3 |
if (typesv) |
4019
|
30 |
1 |
if (dec->end - dec->cur >= 4 && memEQc(dec->cur, "true")) |
|
27 |
3 |
if (dec->end - dec->cur >= 4 && memEQc(dec->cur, "true")) |
4023
|
5 |
22 |
if (typesv) |
4025
|
4 |
23 |
if (dec->json.flags & F_UNBLESSED_BOOL) |
4035
|
23 |
1 |
if (dec->end - dec->cur >= 5 && memEQc(dec->cur, "false")) |
|
22 |
1 |
if (dec->end - dec->cur >= 5 && memEQc(dec->cur, "false")) |
4039
|
5 |
17 |
if (typesv) |
4041
|
4 |
18 |
if (dec->json.flags & F_UNBLESSED_BOOL) |
4051
|
58 |
1 |
if (dec->end - dec->cur >= 4 && memEQc(dec->cur, "null")) |
|
56 |
2 |
if (dec->end - dec->cur >= 4 && memEQc(dec->cur, "null")) |
4054
|
3 |
53 |
if (typesv) |
4096
|
0 |
8 |
PUSHMARK(SP); |
4097
|
0 |
8 |
XPUSHs(newSVpvn(encoding, strlen(encoding))); |
4098
|
0 |
8 |
XPUSHs(string); |
4109
|
8 |
0 |
if (items >= 0 && SvPOK(TOPs)) { |
|
8 |
0 |
if (items >= 0 && SvPOK(TOPs)) { |
4136
|
1331 |
111 |
if (SvMAGICAL (string) || !SvPOK (string) || SvIsCOW_shared_hash(string)) |
|
1326 |
5 |
if (SvMAGICAL (string) || !SvPOK (string) || SvIsCOW_shared_hash(string)) |
|
196 |
1130 |
if (SvMAGICAL (string) || !SvPOK (string) || SvIsCOW_shared_hash(string)) |
|
1 |
195 |
if (SvMAGICAL (string) || !SvPOK (string) || SvIsCOW_shared_hash(string)) |
4139
|
4 |
1438 |
SvUPGRADE (string, SVt_PV); |
4158
|
1436 |
6 |
if (UNLIKELY(len > json->max_size && json->max_size)) |
|
1 |
1435 |
if (UNLIKELY(len > json->max_size && json->max_size)) |
4171
|
1393 |
48 |
if (UNLIKELY(len > 2 && SvPOK(string) && !json->incr_pos)) { |
|
1393 |
0 |
if (UNLIKELY(len > 2 && SvPOK(string) && !json->incr_pos)) { |
|
1393 |
48 |
if (UNLIKELY(len > 2 && SvPOK(string) && !json->incr_pos)) { |
|
1124 |
269 |
if (UNLIKELY(len > 2 && SvPOK(string) && !json->incr_pos)) { |
4173
|
12 |
1112 |
if (*s >= 0xEF) { |
4174
|
12 |
0 |
if (len >= 3 && memEQc(s, UTF8BOM)) { |
|
5 |
7 |
if (len >= 3 && memEQc(s, UTF8BOM)) { |
4182
|
7 |
0 |
} else if (len >= 4 && memEQc(s, UTF32BOM)) { |
|
2 |
5 |
} else if (len >= 4 && memEQc(s, UTF32BOM)) { |
4186
|
2 |
3 |
} else if (memEQc(s, UTF16BOM)) { |
4190
|
2 |
1 |
} else if (memEQc(s, UTF16BOM_BE)) { |
4195
|
1069 |
43 |
} else if (UNLIKELY(len >= 4 && !*s && memEQc(s, UTF32BOM_BE))) { |
|
2 |
1067 |
} else if (UNLIKELY(len >= 4 && !*s && memEQc(s, UTF32BOM_BE))) { |
|
2 |
1110 |
} else if (UNLIKELY(len >= 4 && !*s && memEQc(s, UTF32BOM_BE))) { |
|
2 |
0 |
} else if (UNLIKELY(len >= 4 && !*s && memEQc(s, UTF32BOM_BE))) { |
4202
|
1428 |
13 |
if (LIKELY(!converted)) { |
4203
|
751 |
677 |
if (DECODE_WANTS_OCTETS (json)) |
4210
|
0 |
1440 |
if (!SvPOK(string)) |
4211
|
0 |
0 |
SvGROW (string, SvCUR (string) + 1); |
|
0 |
0 |
SvGROW (string, SvCUR (string) + 1); |
4219
|
1430 |
10 |
if (dec.json.cb_object || dec.json.cb_sk_object) |
|
4 |
1426 |
if (dec.json.cb_object || dec.json.cb_sk_object) |
4227
|
283 |
1157 |
if (offset_return) { |
4228
|
283 |
0 |
if (dec.cur < SvPVX (string) || dec.cur > SvEND (string)) |
|
0 |
283 |
if (dec.cur < SvPVX (string) || dec.cur > SvEND (string)) |
4234
|
1157 |
283 |
if (!(offset_return || !sv)) |
|
839 |
318 |
if (!(offset_return || !sv)) |
4239
|
818 |
21 |
if ((dec.end - dec.cur) || *dec.cur) |
|
0 |
818 |
if ((dec.end - dec.cur) || *dec.cur) |
4247
|
5 |
1435 |
if (UNLIKELY(offset)) { |
4252
|
343 |
1097 |
if (!sv) |
4267
|
306 |
37 |
croak ("%s, at character offset %d (before \"%s\")", |
4270
|
306 |
0 |
dec.cur != dec.end ? SvPV_nolen (uni) : "(end of string)"); |
4273
|
885 |
212 |
if (!(dec.json.flags & F_ALLOW_NONREF) && json_nonref(aTHX_ sv)) |
|
9 |
876 |
if (!(dec.json.flags & F_ALLOW_NONREF) && json_nonref(aTHX_ sv)) |
4276
|
12 |
1076 |
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 */ |
4301
|
278 |
278 |
if (*p > 0x20) |
4303
|
6 |
272 |
if (*p == '#') |
4314
|
42 |
236 |
else if (!*p) |
4322
|
0 |
0 |
if (!*p) |
4335
|
9 |
36 |
if (*p == '\n') |
4337
|
6 |
3 |
self->incr_mode = self->incr_mode == INCR_M_C0 ? INCR_M_WS : INCR_M_JSON; |
4340
|
0 |
36 |
else if (!*p) |
4353
|
583 |
1502 |
if (*p == '"') |
4358
|
15 |
568 |
if (!self->incr_nest) |
4363
|
498 |
1004 |
else if (*p == '\\') |
4367
|
0 |
498 |
if (!*p) /* if at end of string we have to switch modes */ |
4373
|
2 |
1002 |
else if (!*p) |
4394
|
0 |
682 |
if (!self->incr_nest) |
4408
|
1 |
357 |
if (++self->incr_nest > (int)self->max_depth) |
4414
|
256 |
99 |
if (--self->incr_nest <= 0) |
4506
|
0 |
216 |
XPUSHs (sv_2mortal (sv_bless ( |
|
216 |
0 |
XPUSHs (sv_2mortal (sv_bless ( |
4539
|
283 |
14 |
if (enable) |
4543
|
0 |
297 |
XPUSHs (ST (0)); |
4572
|
0 |
0 |
XPUSHs (boolSV (self->flags & ix)); |
|
0 |
0 |
XPUSHs (boolSV (self->flags & ix)); |
4576
|
1 |
0 |
if (0 <= val && val <= 15) { |
|
1 |
0 |
if (0 <= val && val <= 15) { |
4581
|
0 |
1 |
XPUSHs (ST (0)); |
4592
|
0 |
5 |
XPUSHs (ST (0)); |
4603
|
0 |
3 |
XPUSHs (ST (0)); |
4613
|
9 |
0 |
if (infnan_mode > 3 || infnan_mode < 0) { |
|
0 |
9 |
if (infnan_mode > 3 || infnan_mode < 0) { |
4617
|
0 |
9 |
XPUSHs (ST (0)); |
4629
|
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; |
4630
|
3 |
0 |
if (self->cb_sort_by) |
4633
|
0 |
3 |
XPUSHs (ST (0)); |
4641
|
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; |
4643
|
0 |
5 |
XPUSHs (ST (0)); |
4649
|
3 |
3 |
if (!self->cb_sk_object) |
4652
|
1 |
5 |
if (SvOK (cb)) |
|
1 |
0 |
if (SvOK (cb)) |
|
0 |
1 |
if (SvOK (cb)) |
4658
|
0 |
1 |
if (!HvKEYS (self->cb_sk_object)) |
|
0 |
1 |
if (!HvKEYS (self->cb_sk_object)) |
4665
|
0 |
6 |
XPUSHs (ST (0)); |
4671
|
0 |
1111 |
XPUSHs (scalar); |
4676
|
0 |
646 |
XPUSHs (jsonstr); |
4684
|
0 |
10 |
EXTEND (SP, 2); |
4692
|
27 |
599 |
if (!self->incr_text) |
4696
|
27 |
599 |
if (!DECODE_WANTS_OCTETS (self) == !SvUTF8 (self->incr_text)) { |
4697
|
0 |
27 |
if (DECODE_WANTS_OCTETS (self)) |
4699
|
0 |
0 |
if (self->incr_pos) |
4709
|
0 |
27 |
if (self->incr_pos) |
4716
|
321 |
305 |
if (jsonstr) |
4719
|
319 |
2 |
if (SvUTF8 (jsonstr) != SvUTF8 (self->incr_text)) { |
4720
|
0 |
319 |
if (SvUTF8 (jsonstr)) |
4729
|
321 |
0 |
const char *str = SvPV (jsonstr, len); |
4732
|
147 |
174 |
if (SvLEN (self->incr_text) <= cur + len) |
4733
|
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); |
4741
|
626 |
0 |
if (GIMME_V != G_VOID) |
|
317 |
309 |
if (GIMME_V != G_VOID) |
4748
|
317 |
2 |
if (!INCR_DONE (self)) |
|
316 |
1 |
if (!INCR_DONE (self)) |
4752
|
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)) |
4756
|
314 |
2 |
if (!INCR_DONE (self)) |
|
44 |
270 |
if (!INCR_DONE (self)) |
4759
|
42 |
4 |
if (self->incr_mode == INCR_M_WS && self->incr_pos) |
|
4 |
38 |
if (self->incr_mode == INCR_M_WS && self->incr_pos) |
4770
|
0 |
267 |
XPUSHs (sv); |
4782
|
267 |
0 |
while (GIMME_V == G_ARRAY); |
|
2 |
265 |
while (GIMME_V == G_ARRAY); |
4792
|
0 |
290 |
if (UNLIKELY(self->incr_pos)) |
4799
|
289 |
1 |
ST(0) = self->incr_text ? self->incr_text : &PL_sv_undef; |
4820
|
2 |
0 |
if (self->incr_pos) |
4822
|
2 |
0 |
sv_chop (self->incr_text, SvPV_nolen (self->incr_text) + self->incr_pos); |
4832
|
1 |
0 |
if (self->incr_text) |
4861
|
0 |
215 |
XPUSHs (scalar); |
4873
|
216 |
0 |
if (ix && allow_nonref) |
|
9 |
207 |
if (ix && allow_nonref) |
4876
|
0 |
165 |
XPUSHs (jsonstr); |