Branch Coverage

XS.xs
Criterion Covered Total %
branch 314 752 41.7


line true false branch
198 3069 3 if (SvLEN (sv) > SvCUR (sv) + 1)
212 0 0 return idx <= 23 ? 3
0 0 return idx <= 23 ? 3
0 0 return idx <= 23 ? 3
0 0 return idx <= 23 ? 3
239 12523 7101 if (ecb_expect_false ((uintptr_t)(enc->end - enc->cur) < len))
242 12523 0 SvGROW (enc->sv, cur + (len < (cur >> 2) ? cur >> 2 : len) + 1);
5989 6534 SvGROW (enc->sv, cur + (len < (cur >> 2) ? cur >> 2 : len) + 1);
263 7003 6179 if (ecb_expect_true (len < LENGTH_EXT1))
265 1236 4943 else if (ecb_expect_true (len <= 0xffU))
270 4834 109 else if (len <= 0xffffU)
276 109 0 else if (len <= 0xffffffffU)
302 0 242 if (SvIsUV (sv))
304 185 57 else if (SvIVX (sv) >= 0)
323 23 9 for (p = (U8 *)str; p < pend; ++p)
329 23 9 for (p = (U8 *)str; p < pend; ++p)
330 14 9 if (*p < 0x80)
342 9 6394 if (ecb_expect_false (upgrade_utf8))
343 9 0 if (!utf8)
349 3076 3318 encode_uint (enc, utf8 ? MAJOR_TEXT : MAJOR_BYTES, len);
358 0 6403 if (ecb_expect_false (enc->cbor.flags & F_PACK_STRINGS))
362 0 0 if (SvOK (*svp))
0 0 if (SvOK (*svp))
0 0 if (SvOK (*svp))
366 0 0 encode_uint (enc, MAJOR_POS_INT, SvUV (*svp));
369 0 0 else if (len >= minimum_string_length (enc->stringref_idx))
389 0 0 if (!ecb_big_endian ())
405 3 0 if (!ecb_big_endian ())
421 8 0 if (!ecb_big_endian ())
431 3 3 encode_ch (enc, istrue ? MAJOR_MISC | SIMPLE_TRUE : MAJOR_MISC | SIMPLE_FALSE);
438 0 0 if (enc->depth >= enc->cbor.max_depth)
446 0 0 if (!SvROK (sv) || SvTYPE (SvRV (sv)) != SVt_PVAV)
0 0 if (!SvROK (sv) || SvTYPE (SvRV (sv)) != SVt_PVAV)
452 0 0 if (!(len & 1))
457 0 0 for (i = 0; i <= len; ++i)
460 0 0 encode_sv (enc, svp ? *svp : &PL_sv_undef);
474 0 0 char *str = SvPVbyte (sv, len);
485 0 0 char *str = SvPVbyte (sv, len);
493 0 0 char *str = SvPVutf8 (sv, len);
500 0 0 case AS_FLOAT16: encode_float16 (enc, SvNV (sv)); break;
501 0 0 case AS_FLOAT32: encode_float32 (enc, SvNV (sv)); break;
502 0 0 case AS_FLOAT64: encode_float64 (enc, SvNV (sv)); break;
516 0 6291 if (enc->depth >= enc->cbor.max_depth)
523 0 6291 if (ecb_expect_false (SvMAGICAL (av)))
524 0 0 for (i = 0; i <= len; ++i)
527 0 0 encode_sv (enc, svp ? *svp : &PL_sv_undef);
530 6415 6291 for (i = 0; i <= len; ++i)
533 6415 0 encode_sv (enc, sv ? sv : &PL_sv_undef);
544 0 16 if (enc->depth >= enc->cbor.max_depth)
552 0 16 if (ecb_expect_false (mg))
557 15 16 while ((he = hv_iternext (hv)))
559 0 15 if (HeKLEN (he) == HEf_SVKEY)
560 0 0 encode_sv (enc, HeSVKEY (he));
0 0 encode_sv (enc, HeSVKEY (he));
564 0 15 encode_sv (enc, ecb_expect_false (mg) ? hv_iterval (hv, he) : HeVAL (he));
567 0 16 if (ecb_expect_false (mg))
577 0 6746 SvGETMAGIC (sv);
0 0 SvGETMAGIC (sv);
581 437 6309 if (ecb_expect_false (SvOBJECT (sv)))
595 6 431 if (stash == boolean_stash)
597 6 0 encode_bool (enc, SvIV (sv));
600 3 428 else if (stash == error_stash)
605 212 216 else if (stash == tagged_stash)
607 0 212 if (svt != SVt_PVAV)
614 0 212 encode_uint (enc, MAJOR_TAG, SvUV (*av_fetch ((AV *)sv, 0, 1)));
620 0 0 encode_forced (enc, SvUV (*av_fetch ((AV *)sv, 1, 1)), *av_fetch ((AV *)sv, 0, 1));
631 113 6412 if (ecb_expect_false (SvREFCNT (sv) > 1)
632 6 107 && ecb_expect_false (enc->cbor.flags & F_ALLOW_SHARING))
634 2 4 if (ecb_expect_false (!enc->shareable))
639 2 4 if (SvOK (*svp))
2 0 if (SvOK (*svp))
0 2 if (SvOK (*svp))
642 0 4 encode_uint (enc, MAJOR_POS_INT, SvUV (*svp));
653 212 6309 if (ecb_expect_false (SvOBJECT (sv)))
658 0 212 if (enc->cbor.flags & F_FORBID_OBJECTS)
659 0 0 croak ("encountered object '%s', but forbid_objects is enabled",
661 209 3 else if ((method = gv_fetchmethod_autoload (stash, "TO_CBOR", 0)))
666 0 209 PUSHMARK (SP);
668 0 209 XPUSHs (sv_bless (sv_2mortal (newRV_inc (sv)), stash));
676 202 7 if (SvROK (TOPs) && SvRV (TOPs) == sv)
0 202 if (SvROK (TOPs) && SvRV (TOPs) == sv)
677 0 0 croak ("%s::TO_CBOR method returned same object as was passed instead of a new one", HvNAME (stash));
0 0 croak ("%s::TO_CBOR method returned same object as was passed instead of a new one", HvNAME (stash));
0 0 croak ("%s::TO_CBOR method returned same object as was passed instead of a new one", HvNAME (stash));
0 0 croak ("%s::TO_CBOR method returned same object as was passed instead of a new one", HvNAME (stash));
0 0 croak ("%s::TO_CBOR method returned same object as was passed instead of a new one", HvNAME (stash));
0 0 croak ("%s::TO_CBOR method returned same object as was passed instead of a new one", HvNAME (stash));
683 209 0 FREETMPS; LEAVE;
685 3 0 else if ((method = gv_fetchmethod_autoload (stash, "FREEZE", 0)) != 0)
690 0 3 PUSHMARK (SP);
691 0 3 EXTEND (SP, 2);
701 2 1 if (count == 1 && SvROK (TOPs) && SvRV (TOPs) == sv)
0 2 if (count == 1 && SvROK (TOPs) && SvRV (TOPs) == sv)
0 0 if (count == 1 && SvROK (TOPs) && SvRV (TOPs) == sv)
702 0 0 croak ("%s::FREEZE(CBOR) method returned same object as was passed instead of a new one", HvNAME (stash));
0 0 croak ("%s::FREEZE(CBOR) method returned same object as was passed instead of a new one", HvNAME (stash));
0 0 croak ("%s::FREEZE(CBOR) method returned same object as was passed instead of a new one", HvNAME (stash));
0 0 croak ("%s::FREEZE(CBOR) method returned same object as was passed instead of a new one", HvNAME (stash));
0 0 croak ("%s::FREEZE(CBOR) method returned same object as was passed instead of a new one", HvNAME (stash));
0 0 croak ("%s::FREEZE(CBOR) method returned same object as was passed instead of a new one", HvNAME (stash));
706 3 0 encode_strref (enc, 0, HvNAMEUTF8 (stash), HvNAME (stash), HvNAMELEN (stash));
3 0 encode_strref (enc, 0, HvNAMEUTF8 (stash), HvNAME (stash), HvNAMELEN (stash));
0 3 encode_strref (enc, 0, HvNAMEUTF8 (stash), HvNAME (stash), HvNAMELEN (stash));
0 0 encode_strref (enc, 0, HvNAMEUTF8 (stash), HvNAME (stash), HvNAMELEN (stash));
3 0 encode_strref (enc, 0, HvNAMEUTF8 (stash), HvNAME (stash), HvNAMELEN (stash));
0 3 encode_strref (enc, 0, HvNAMEUTF8 (stash), HvNAME (stash), HvNAMELEN (stash));
3 0 encode_strref (enc, 0, HvNAMEUTF8 (stash), HvNAME (stash), HvNAMELEN (stash));
3 0 encode_strref (enc, 0, HvNAMEUTF8 (stash), HvNAME (stash), HvNAMELEN (stash));
0 3 encode_strref (enc, 0, HvNAMEUTF8 (stash), HvNAME (stash), HvNAMELEN (stash));
0 0 encode_strref (enc, 0, HvNAMEUTF8 (stash), HvNAME (stash), HvNAMELEN (stash));
3 0 encode_strref (enc, 0, HvNAMEUTF8 (stash), HvNAME (stash), HvNAMELEN (stash));
0 3 encode_strref (enc, 0, HvNAMEUTF8 (stash), HvNAME (stash), HvNAMELEN (stash));
3 0 encode_strref (enc, 0, HvNAMEUTF8 (stash), HvNAME (stash), HvNAMELEN (stash));
3 0 encode_strref (enc, 0, HvNAMEUTF8 (stash), HvNAME (stash), HvNAMELEN (stash));
0 3 encode_strref (enc, 0, HvNAMEUTF8 (stash), HvNAME (stash), HvNAMELEN (stash));
0 0 encode_strref (enc, 0, HvNAMEUTF8 (stash), HvNAME (stash), HvNAMELEN (stash));
3 0 encode_strref (enc, 0, HvNAMEUTF8 (stash), HvNAME (stash), HvNAMELEN (stash));
0 3 encode_strref (enc, 0, HvNAMEUTF8 (stash), HvNAME (stash), HvNAMELEN (stash));
0 3 encode_strref (enc, 0, HvNAMEUTF8 (stash), HvNAME (stash), HvNAMELEN (stash));
711 5 3 for (i = 0; i < count; ++i)
719 3 0 FREETMPS; LEAVE;
722 0 0 croak ("encountered object '%s', but no TO_CBOR or FREEZE methods available on it",
725 16 6293 else if (svt == SVt_PVHV)
727 6291 2 else if (svt == SVt_PVAV)
743 0 11 if (ecb_expect_false (nv == (NV)(U32)nv))
746 3 8 else if (ecb_expect_false (nv == (float)nv))
755 0 13392 SvGETMAGIC (sv);
0 0 SvGETMAGIC (sv);
757 6385 7007 if (SvPOKp (sv))
760 6385 0 char *str = SvPV (sv, len);
763 11 6996 else if (SvNOKp (sv))
765 242 6754 else if (SvIOKp (sv))
767 6746 8 else if (SvROK (sv))
769 8 0 else if (!SvOK (sv))
8 0 else if (!SvOK (sv))
8 0 else if (!SvOK (sv))
771 0 0 else if (enc->cbor.flags & F_ALLOW_UNKNOWN)
774 0 0 croak ("encountered perl type (%s,0x%x) that CBOR cannot handle, check your input data",
790 0 6534 if (cbor->flags & F_PACK_STRINGS)
802 3072 3462 if (enc.cbor.flags & F_SHRINK)
830 0 0 if (!dec->err)
832 0 0 dec->err_sv = newSVsv (ERRSV);
838 0 0 dec->err = SvPVutf8_nolen (dec->err_sv);
846 5 0 if (!dec->err)
871 6960 6287 if (ecb_expect_true (m < LENGTH_EXT1))
873 1272 5015 else if (ecb_expect_true (m == LENGTH_EXT1))
875 0 1272 WANT (1);
879 4856 159 else if (ecb_expect_true (m == LENGTH_EXT2))
881 0 4856 WANT (2);
886 134 25 else if (ecb_expect_true (m == LENGTH_EXT4))
888 0 134 WANT (4);
895 25 0 else if (ecb_expect_true (m == LENGTH_EXT8))
897 0 25 WANT (8);
928 0 6310 DEC_INC_DEPTH;
930 8 6302 if (*dec->cur == (MAJOR_ARRAY | MINOR_INDEF))
936 0 47 WANT (1);
938 39 8 if (*dec->cur == (MAJOR_MISC | MINOR_INDEF) || dec->err)
0 39 if (*dec->cur == (MAJOR_MISC | MINOR_INDEF) || dec->err)
951 0 6302 WANT (len); // complexity check for av_fill - need at least one byte per value, do not allow supersize arrays
954 6438 6302 for (i = 0; i < len; ++i)
973 17 0 if (ecb_expect_true (!dec->stringref))
974 1 16 if (ecb_expect_true ((U8)(*dec->cur - MAJOR_BYTES) <= LENGTH_EXT8))
979 0 1 WANT (len);
986 16 0 else if (ecb_expect_true ((U8)(*dec->cur - MAJOR_TEXT) <= LENGTH_EXT8))
991 0 16 WANT (len);
994 1 15 if (ecb_expect_false (dec->cbor.flags & F_VALIDATE_UTF8))
995 1 0 if (!cbor_is_utf8_string ((U8 *)key, len))
1 0 if (!cbor_is_utf8_string ((U8 *)key, len))
1011 0 0 if (ecb_expect_false (SvAMAGIC (k)))
0 0 if (ecb_expect_false (SvAMAGIC (k)))
0 0 if (ecb_expect_false (SvAMAGIC (k)))
0 0 if (ecb_expect_false (SvAMAGIC (k)))
1016 0 0 PUSHMARK (SP);
1017 0 0 EXTEND (SP, 3);
1026 0 0 FREETMPS; LEAVE;
1028 0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
1046 0 12 DEC_INC_DEPTH;
1048 2 10 if (*dec->cur == (MAJOR_MAP | MINOR_INDEF))
1054 0 5 WANT (1);
1056 3 2 if (*dec->cur == (MAJOR_MISC | MINOR_INDEF) || dec->err)
0 3 if (*dec->cur == (MAJOR_MISC | MINOR_INDEF) || dec->err)
1069 0 10 WANT (pairs); // complexity check - need at least one byte per value, do not allow supersize hashes
1071 14 10 while (pairs--)
1089 10 6381 if (ecb_expect_false ((*dec->cur & MINOR_MASK) == MINOR_INDEF))
1100 0 39 WANT (1);
1102 10 29 if ((*dec->cur - major) > LENGTH_EXT8)
1103 10 0 if (*dec->cur == (MAJOR_MISC | MINOR_INDEF))
1113 0 29 WANT (len);
1122 0 6381 WANT (len);
1126 0 6381 if (ecb_expect_false (dec->stringref)
1127 0 0 && SvCUR (sv) >= minimum_string_length (AvFILLp (dec->stringref) + 1))
1131 3090 3301 if (utf8)
1133 2 3088 if (ecb_expect_false (dec->cbor.flags & F_VALIDATE_UTF8))
1134 2 0 if (!cbor_is_utf8_string (SvPVX (sv), SvCUR (sv)))
2 0 if (!cbor_is_utf8_string (SvPVX (sv), SvCUR (sv)))
1153 0 217 WANT (1);
1182 0 0 if ((*dec->cur >> MAJOR_SHIFT) != (MAJOR_POS_INT >> MAJOR_SHIFT))
1187 0 0 if (!dec->stringref || idx >= (UV)(1 + AvFILLp (dec->stringref)))
0 0 if (!dec->stringref || idx >= (UV)(1 + AvFILLp (dec->stringref)))
1196 3 0 if (ecb_expect_false (!dec->shareable))
1199 1 2 if (dec->cbor.flags & F_ALLOW_CYCLES)
1220 0 4 if ((*dec->cur >> MAJOR_SHIFT) != (MAJOR_POS_INT >> MAJOR_SHIFT))
1225 4 0 if (!dec->shareable || idx >= (UV)(1 + AvFILLp (dec->shareable)))
0 4 if (!dec->shareable || idx >= (UV)(1 + AvFILLp (dec->shareable)))
1230 1 3 if (sv == &PL_sv_undef)
1237 0 2 if (dec->cbor.flags & F_FORBID_OBJECTS)
1242 2 0 if (!SvROK (sv) || SvTYPE (SvRV (sv)) != SVt_PVAV)
0 2 if (!SvROK (sv) || SvTYPE (SvRV (sv)) != SVt_PVAV)
1249 0 2 if (!stash)
1254 0 2 if (!method)
1260 0 2 PUSHMARK (SP);
1261 2 0 EXTEND (SP, len + 1);
0 2 EXTEND (SP, len + 1);
1268 4 2 for (i = 1; i < len; ++i)
1275 2 0 if (SvTRUE (ERRSV))
2 0 if (SvTRUE (ERRSV))
2 0 if (SvTRUE (ERRSV))
0 2 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
2 0 if (SvTRUE (ERRSV))
0 2 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
2 0 if (SvTRUE (ERRSV))
2 0 if (SvTRUE (ERRSV))
2 0 if (SvTRUE (ERRSV))
2 0 if (SvTRUE (ERRSV))
2 0 if (SvTRUE (ERRSV))
2 0 if (SvTRUE (ERRSV))
2 0 if (SvTRUE (ERRSV))
0 2 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 2 if (SvTRUE (ERRSV))
1277 0 0 FREETMPS; LEAVE;
1286 2 0 FREETMPS; LEAVE;
1299 0 208 PUSHMARK (SP);
1300 0 208 EXTEND (SP, 2);
1305 0 208 int count = call_sv (dec->cbor.filter ? dec->cbor.filter : default_filter, G_ARRAY | G_EVAL);
1308 208 0 if (SvTRUE (ERRSV))
208 0 if (SvTRUE (ERRSV))
208 0 if (SvTRUE (ERRSV))
0 208 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
208 0 if (SvTRUE (ERRSV))
0 208 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
208 0 if (SvTRUE (ERRSV))
208 0 if (SvTRUE (ERRSV))
208 0 if (SvTRUE (ERRSV))
208 0 if (SvTRUE (ERRSV))
208 0 if (SvTRUE (ERRSV))
208 0 if (SvTRUE (ERRSV))
208 0 if (SvTRUE (ERRSV))
0 208 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 0 if (SvTRUE (ERRSV))
0 208 if (SvTRUE (ERRSV))
1311 0 0 FREETMPS; LEAVE;
1315 207 1 if (count)
1336 207 1 FREETMPS; LEAVE;
1351 0 13252 WANT (1);
1386 0 5 WANT (2);
1397 0 4 WANT (4);
1401 4 0 if (!ecb_big_endian ())
1410 0 8 WANT (8);
1414 8 0 if (!ecb_big_endian ())
1441 6546 0 char *data = SvPVbyte (string, len);
1443 6545 1 if (len > cbor->max_size && cbor->max_size)
0 6545 if (len > cbor->max_size && cbor->max_size)
1453 213 6333 if (offset_return)
1456 6333 213 if (!(offset_return || !sv))
6333 0 if (!(offset_return || !sv))
1457 1 6332 if (dec.cur != dec.end && !dec.err)
0 1 if (dec.cur != dec.end && !dec.err)
1460 5 6541 if (dec.err)
1462 1 4 if (dec.shareable)
1468 1 1 for (i = av_len (dec.shareable) + 1; i--; )
1469 1 0 if ((svp = av_fetch (dec.shareable, i, 0)))
1475 0 5 if (dec.err_sv)
1496 428 0 SvPV (cborstr, cur);
1498 370 118 while (ecb_expect_true (self->incr_need <= cur))
1515 19 351 if (ecb_expect_false (ilen < 0))
1517 0 19 if (m != MINOR_INDEF)
1520 10 9 if (*p == (MAJOR_MISC | MINOR_INDEF))
1522 1 9 if (count >= 0)
1536 64 287 if (ecb_expect_false (self->incr_need > cur))
1554 118 88 if (ecb_expect_false (ilen))
1560 335 118 } while (--ilen);
1570 33 137 if (ecb_expect_false (self->incr_need > cur))
1579 18 18 if (len)
1592 236 36 if (count > 0)
1594 239 24 while (!--count)
1596 212 27 if (!AvFILLp (self->incr_count))
1651 0 9237 XPUSHs (sv_2mortal (sv_bless (
0 9237 XPUSHs (sv_2mortal (sv_bless (
1670 6152 0 if (enable)
1675 0 6152 XPUSHs (ST (0));
1690 0 0 XPUSHs (boolSV (self->flags & ix));
0 0 XPUSHs (boolSV (self->flags & ix));
1695 0 0 XPUSHs (ST (0));
1706 0 2 XPUSHs (ST (0));
1717 0 0 self->filter = filter ? newSVsv (filter) : filter;
1718 0 0 XPUSHs (ST (0));
1722 0 0 RETVAL = self->filter ? self->filter : NEWSV (0, 0);
1729 0 6155 XPUSHs (scalar);
1734 0 3082 XPUSHs (cborstr);
1742 0 0 EXTEND (SP, 2);
1752 0 216 if (SvUTF8 (cborstr))
1755 62 154 if (!self->incr_count)
1766 215 213 if (!incr_parse (self, cborstr))
1768 215 0 if (self->incr_need > self->max_size && self->max_size)
1 214 if (self->incr_need > self->max_size && self->max_size)
1779 0 212 XPUSHs (sv);
1789 212 0 while (ix);
1815 0 379 XPUSHs (scalar);
1824 0 3247 XPUSHs (cborstr);