Branch Coverage

hv.c
Criterion Covered Total %
branch 1063 1440 73.8


line true false branch
58 526676 258691156 if (!*root)
94 0 0 if (flags & HVhek_FREEKEY)
107 0 0 while (he) {
201 121 0 if (!(flags & HVhek_FREEKEY)) {
209 0 121 if (flags & HVhek_UTF8) {
329 76256 1872269768 if (klen_i32 < 0) {
352 2590002769 498 if (!hv)
354 2590002769 0 if (SvTYPE(hv) == (svtype)SVTYPEMASK)
359 60419 2589942350 if (SvSMAGICAL(hv) && SvGMAGICAL(hv) && !(action & HV_DISABLE_UVAR_XKEY)) {
40357 20062 if (SvSMAGICAL(hv) && SvGMAGICAL(hv) && !(action & HV_DISABLE_UVAR_XKEY)) {
361 40357 0 if ((mg = mg_find((const SV *)hv, PERL_MAGIC_uvar))) {
363 40341 16 if (uf->uf_set == NULL) {
366 0 40341 if (!keysv) {
367 0 0 keysv = newSVpvn_flags(key, klen, SVs_TEMP |
384 686625621 1903377148 if (keysv) {
385 0 686625621 if (flags & HVhek_FREEKEY)
387 595937437 90688184 key = SvPV_const(keysv, klen);
389 567986195 118639426 if (SvIsCOW_shared_hash(keysv)) {
491815454 76170741 if (SvIsCOW_shared_hash(keysv)) {
398 10432083 2579570686 if (action & HV_DELETE) {
404 335067536 2244503150 if (SvMAGICAL(hv)) {
405 335027181 40355 if (SvRMAGICAL(hv) && !(action & (HV_FETCH_ISSTORE|HV_FETCH_ISEXISTS))) {
329955905 5071276 if (SvRMAGICAL(hv) && !(action & (HV_FETCH_ISSTORE|HV_FETCH_ISEXISTS))) {
406 329761930 193975 if (mg_find((const SV *)hv, PERL_MAGIC_tied)
407 0 329761930 || SvGMAGICAL((const SV *)hv))
411 22 193953 if (!keysv) {
412 22 0 keysv = newSVpvn_utf8(key, klen, is_utf8);
421 179181 14794 if (entry)
438 0 193975 if (flags & HVhek_FREEKEY)
441 17 193958 if (return_svp) {
442 17 0 return entry ? (void *) &HeVAL(entry) : NULL;
481 5071276 40355 else if (SvRMAGICAL(hv) && (action & HV_FETCH_ISEXISTS)) {
1576907 3494369 else if (SvRMAGICAL(hv) && (action & HV_FETCH_ISEXISTS)) {
482 1532554 44353 if (mg_find((const SV *)hv, PERL_MAGIC_tied)
483 0 1532554 || SvGMAGICAL((const SV *)hv)) {
489 0 44353 if (keysv || is_utf8) {
0 0 if (keysv || is_utf8) {
490 0 44353 if (!keysv) {
499 0 44353 if (flags & HVhek_FREEKEY)
505 44353 0 return SvTRUE(svret) ? (void *)hv : NULL;
0 44353 return SvTRUE(svret) ? (void *)hv : NULL;
0 0 return SvTRUE(svret) ? (void *)hv : NULL;
3 44350 return SvTRUE(svret) ? (void *)hv : NULL;
3 0 return SvTRUE(svret) ? (void *)hv : NULL;
0 3 return SvTRUE(svret) ? (void *)hv : NULL;
42715 1635 return SvTRUE(svret) ? (void *)hv : NULL;
42715 0 return SvTRUE(svret) ? (void *)hv : NULL;
42715 0 return SvTRUE(svret) ? (void *)hv : NULL;
20099 22616 return SvTRUE(svret) ? (void *)hv : NULL;
0 20099 return SvTRUE(svret) ? (void *)hv : NULL;
20099 22616 return SvTRUE(svret) ? (void *)hv : NULL;
1635 0 return SvTRUE(svret) ? (void *)hv : NULL;
1635 0 return SvTRUE(svret) ? (void *)hv : NULL;
24 1611 return SvTRUE(svret) ? (void *)hv : NULL;
0 24 return SvTRUE(svret) ? (void *)hv : NULL;
0 0 return SvTRUE(svret) ? (void *)hv : NULL;
1611 24 return SvTRUE(svret) ? (void *)hv : NULL;
0 0 return SvTRUE(svret) ? (void *)hv : NULL;
525 3514486 20238 else if (action & HV_FETCH_ISSTORE) {
529 3126029 388457 if (needs_copy) {
531 1439355 1686674 if (keysv || is_utf8) {
0 1439355 if (keysv || is_utf8) {
532 0 1686674 if (!keysv) {
535 3647 1683027 if (TAINTING_get)
536 0 3647 TAINT_set(SvTAINTED(keysv));
0 0 TAINT_set(SvTAINTED(keysv));
543 877675 2248354 TAINT_IF(save_taint);
547 26 3126003 if (!needs_store) {
548 0 26 if (flags & HVhek_FREEKEY)
573 65650428 2513681904 if (!HvARRAY(hv)) {
574 51022605 14627823 if ((action & (HV_FETCH_LVALUE | HV_FETCH_ISSTORE))
594 0 14627823 if (flags & HVhek_FREEKEY)
601 776067 2563928442 if (is_utf8 && !(flags & HVhek_KEYCANONICAL)) {
766710 9357 if (is_utf8 && !(flags & HVhek_KEYCANONICAL)) {
604 705637 61073 if (is_utf8)
608 61073 705637 if (key != keysave) {
609 0 61073 if (flags & HVhek_FREEKEY)
620 2251776751 312927758 if (!hash) {
621 359248160 1892528591 if (keysv && (SvIsCOW_shared_hash(keysv)))
251019847 108228313 if (keysv && (SvIsCOW_shared_hash(keysv)))
181403970 69615877 if (keysv && (SvIsCOW_shared_hash(keysv)))
636 2778551224 841831150 for (; entry; entry = HeNEXT(entry)) {
637 1055677320 1722873904 if (HeHASH(entry) != hash) /* strings can't be equal */
639 4 1722873900 if (HeKLEN(entry) != (I32)klen)
641 1275629814 447244086 if (HeKEY(entry) != key && memNE(HeKEY(entry),key,klen)) /* is this it? */
305 1275629509 if (HeKEY(entry) != key && memNE(HeKEY(entry),key,klen)) /* is this it? */
643 236 1722873359 if ((HeKFLAGS(entry) ^ masked_flags) & HVhek_UTF8)
646 885229402 837643957 if (action & (HV_FETCH_LVALUE|HV_FETCH_ISSTORE)) {
647 4909 885224493 if (HeKFLAGS(entry) != masked_flags) {
652 4909 0 if (HvSHAREKEYS(hv)) {
661 0 0 else if (hv == PL_strtab) {
664 0 0 if (flags & HVhek_FREEKEY)
666 0 0 Perl_croak(aTHX_ S_strtab_error,
671 3146 1763 if (masked_flags & HVhek_ENABLEHVKFLAGS)
674 10278 885219124 if (HeVAL(entry) == &PL_sv_placeholder) {
676 5138 5140 if (action & HV_FETCH_LVALUE) {
677 0 5138 if (SvMAGICAL(hv)) {
694 5140 0 if (val != &PL_sv_placeholder)
698 258183 884960941 } else if (action & HV_FETCH_ISSTORE) {
702 837643939 18 } else if (HeVAL(entry) == &PL_sv_placeholder) {
707 50182 1722818021 if (flags & HVhek_FREEKEY)
709 1222011843 500856360 if (return_svp) {
710 1222011843 0 return entry ? (void *) &HeVAL(entry) : NULL;
730 841831150 5156 if (!entry && SvREADONLY(hv) && !(action & HV_FETCH_ISEXISTS)) {
3786357 838044793 if (!entry && SvREADONLY(hv) && !(action & HV_FETCH_ISEXISTS)) {
121 3786236 if (!entry && SvREADONLY(hv) && !(action & HV_FETCH_ISEXISTS)) {
735 584511757 257324428 if (!(action & (HV_FETCH_LVALUE|HV_FETCH_ISSTORE))) {
737 7939 584503818 if (flags & HVhek_FREEKEY)
741 77539776 179784652 if (action & HV_FETCH_LVALUE) {
742 77539215 561 val = action & HV_FETCH_EMPTY_HE ? NULL : newSV(0);
743 2461975 75077801 if (SvMAGICAL(hv)) {
765 0 254862453 if (!HvARRAY(hv)) {
781 254862453 0 if (HvSHAREKEYS(hv))
783 0 0 else if (hv == PL_strtab) {
786 0 0 if (flags & HVhek_FREEKEY)
788 0 0 Perl_croak(aTHX_ S_strtab_error,
795 186265142 68597311 if (!*oentry && SvOOK(hv)) {
12309238 173955904 if (!*oentry && SvOOK(hv)) {
798 11512 12297726 if (aux->xhv_fill_lazy)
808 68597311 186265142 if ( *oentry && PL_HASH_RAND_BITS_ENABLED) {
68597167 144 if ( *oentry && PL_HASH_RAND_BITS_ENABLED) {
811 34281508 34315659 if ( PL_hash_rand_bits & 1 ) {
825 21068233 233794220 if (SvOOK(hv)) {
835 21068033 200 if (PL_HASH_RAND_BITS_ENABLED) {
836 21067533 500 if (PL_HASH_RAND_BITS_ENABLED == 1)
844 5130 254857323 if (val == &PL_sv_placeholder)
846 302987 254559466 if (masked_flags & HVhek_ENABLEHVKFLAGS)
850 4646945 250215508 if ( DO_HSPLIT(xhv) ) {
852 111687 4535258 const U32 items = (U32)HvPLACEHOLDERS_get(hv);
854 0 4646945 if (items /* hash has placeholders */
855 0 0 && !SvREADONLY(hv) /* but is not a restricted hash */) {
867 0 0 if (DO_HSPLIT(xhv))
873 176877695 77984758 if (return_svp) {
874 176877695 0 return entry ? (void *) &HeVAL(entry) : NULL;
888 1546021 1544223 while (mg) {
3515655 3514460 while (mg) {
889 1517959 28062 if (isUPPER(mg->mg_type)) {
3126029 389626 if (isUPPER(mg->mg_type)) {
891 1517190 769 if (mg->mg_type == PERL_MAGIC_tied) {
3126003 26 if (mg->mg_type == PERL_MAGIC_tied) {
915 41 58316 if (SvRMAGICAL(hv)) {
917 20 21 if (mg)
922 57313 1024 if (HvTOTALKEYS((const HV *)hv))
964 1544992 8887091 if (SvRMAGICAL(hv)) {
969 1517959 27033 if (needs_copy) {
975 1517959 0 sv = entry ? HeVAL(entry) : NULL;
976 1517959 0 if (sv) {
977 1517959 0 if (SvMAGICAL(sv)) {
980 765 1517190 if (!needs_store) {
981 765 0 if (mg_find(sv, PERL_MAGIC_tiedelem)) {
1005 10416510 14804 if (!HvARRAY(hv))
1008 708 10415802 if (is_utf8 && !(k_flags & HVhek_KEYCANONICAL)) {
708 0 if (is_utf8 && !(k_flags & HVhek_KEYCANONICAL)) {
1012 690 18 if (is_utf8)
1016 18 690 if (key != keysave) {
1017 0 18 if (k_flags & HVhek_FREEKEY) {
1027 10416510 0 if (!hash) {
1028 5789018 4627492 if (keysv && (SvIsCOW_shared_hash(keysv)))
5667846 121172 if (keysv && (SvIsCOW_shared_hash(keysv)))
172489 5495357 if (keysv && (SvIsCOW_shared_hash(keysv)))
1038 10615206 2360319 for (; entry; oentry = &HeNEXT(entry), entry = *oentry) {
1044 2559004 8056202 if (HeHASH(entry) != hash) /* strings can't be equal */
1046 0 8056202 if (HeKLEN(entry) != (I32)klen)
1048 6807959 1248243 if (HeKEY(entry) != key && memNE(HeKEY(entry),key,klen)) /* is this it? */
11 6807948 if (HeKEY(entry) != key && memNE(HeKEY(entry),key,klen)) /* is this it? */
1050 0 8056191 if ((HeKFLAGS(entry) ^ masked_flags) & HVhek_UTF8)
1053 0 8056191 if (hv == PL_strtab) {
1054 0 0 if (k_flags & HVhek_FREEKEY)
1060 2 8056189 if (HeVAL(entry) == &PL_sv_placeholder) {
1061 0 2 if (k_flags & HVhek_FREEKEY)
1065 5132 8051057 if (SvREADONLY(hv) && HeVAL(entry) && SvREADONLY(HeVAL(entry))) {
5132 0 if (SvREADONLY(hv) && HeVAL(entry) && SvREADONLY(HeVAL(entry))) {
0 5132 if (SvREADONLY(hv) && HeVAL(entry) && SvREADONLY(HeVAL(entry))) {
1070 18 8056171 if (k_flags & HVhek_FREEKEY)
1076 8056189 0 if (HeVAL(entry) && HvENAME_get(hv)) {
3313534 4742655 if (HeVAL(entry) && HvENAME_get(hv)) {
3104546 208988 if (HeVAL(entry) && HvENAME_get(hv)) {
3104544 2 if (HeVAL(entry) && HvENAME_get(hv)) {
42 3104502 if (HeVAL(entry) && HvENAME_get(hv)) {
160 3104342 if (HeVAL(entry) && HvENAME_get(hv)) {
3104342 0 if (HeVAL(entry) && HvENAME_get(hv)) {
3104544 0 if (HeVAL(entry) && HvENAME_get(hv)) {
1078 63992 3040552 if (keysv) key = SvPV(keysv, klen);
63992 0 if (keysv) key = SvPV(keysv, klen);
1079 3098386 6158 if ((
1080 74 3098312 (klen > 1 && key[klen-2] == ':' && key[klen-1] == ':')
0 74 (klen > 1 && key[klen-2] == ':' && key[klen-1] == ':')
1081 6158 3098312 ||
1082 0 6158 (klen == 1 && key[0] == ':')
1084 7 67 && (klen != 6 || hv!=PL_defstash || memNE(key,"main::",6))
7 0 && (klen != 6 || hv!=PL_defstash || memNE(key,"main::",6))
6 1 && (klen != 6 || hv!=PL_defstash || memNE(key,"main::",6))
1085 73 0 && SvTYPE(gv) == SVt_PVGV && (stash = GvHV((GV *)gv))
73 0 && SvTYPE(gv) == SVt_PVGV && (stash = GvHV((GV *)gv))
1086 73 0 && HvENAME_get(stash)) {
73 0 && HvENAME_get(stash)) {
73 0 && HvENAME_get(stash)) {
4 69 && HvENAME_get(stash)) {
19 50 && HvENAME_get(stash)) {
50 0 && HvENAME_get(stash)) {
73 0 && HvENAME_get(stash)) {
1098 31885 3072586 else if (klen == 3 && strnEQ(key, "ISA", 3))
2 31883 else if (klen == 3 && strnEQ(key, "ISA", 3))
1102 6598504 1457685 sv = d_flags & G_DISCARD ? HeVAL(entry) : sv_2mortal(HeVAL(entry));
1104 8056189 0 if (sv) {
1106 3103999 4952190 if (isGV(sv) && isGV_with_GP(sv) && GvCVu(sv)
3103999 0 if (isGV(sv) && isGV_with_GP(sv) && GvCVu(sv)
3103999 0 if (isGV(sv) && isGV_with_GP(sv) && GvCVu(sv)
3103997 2 if (isGV(sv) && isGV_with_GP(sv) && GvCVu(sv)
31371 3072626 if (isGV(sv) && isGV_with_GP(sv) && GvCVu(sv)
1107 31371 0 && HvENAME_get(hv))
31371 0 && HvENAME_get(hv))
31369 2 && HvENAME_get(hv))
0 31369 && HvENAME_get(hv))
0 31369 && HvENAME_get(hv))
31369 0 && HvENAME_get(hv))
31369 0 && HvENAME_get(hv))
1117 5132 8051057 if (SvREADONLY(hv))
1123 5204765 2846292 if(!*first_entry && SvOOK(hv)) {
1765297 3439468 if(!*first_entry && SvOOK(hv)) {
1126 594 1764703 if (aux->xhv_fill_lazy)
1129 3308402 4742655 if (SvOOK(hv) && entry == HvAUX(hv)->xhv_eiter /* HvEITER(hv) */)
5 3308397 if (SvOOK(hv) && entry == HvAUX(hv)->xhv_eiter /* HvEITER(hv) */)
1132 1 8051051 if (SvOOK(hv) && HvLAZYDEL(hv) &&
1 0 if (SvOOK(hv) && HvLAZYDEL(hv) &&
1138 850495 7200562 if (xhv->xhv_keys == 0)
1142 6598504 1457685 if (d_flags & G_DISCARD) {
1147 2 8056187 if (mro_changes == 1) mro_isa_changed_in(hv);
1148 73 8056114 else if (mro_changes == 2)
1153 0 2360319 if (SvREADONLY(hv)) {
1159 0 2360319 if (k_flags & HVhek_FREEKEY)
1178 3954910 712141 Renew(a, PERL_HV_ARRAY_ALLOC_BYTES(newsize)
1180 0 4667051 if (!a) {
1190 4667029 22 if (PL_HASH_RAND_BITS_ENABLED) {
1191 4666974 55 if (PL_HASH_RAND_BITS_ENABLED == 1)
1197 712141 3954910 if (SvOOK(hv)) {
1216 4667051 0 if (!HvTOTALKEYS(hv)) /* skip rest if no entries */
1224 50749332 87053411 if (!entry) /* non-existent */
1228 66681893 68815951 if (j != (U32)i) {
1235 13822205 52859688 if (aep[j] && PL_HASH_RAND_BITS_ENABLED) {
13822167 38 if (aep[j] && PL_HASH_RAND_BITS_ENABLED) {
1238 6907076 6915091 if (PL_hash_rand_bits & 1) {
1260 48444433 87053411 } while (entry);
1261 133135692 4667051 } while (i++ < oldsize);
1276 44578146 0 if (newsize != newmax || newmax <= oldsize)
497951 44080195 if (newsize != newmax || newmax <= oldsize)
1278 847525 497951 while ((newsize & (1 + ~newsize)) != newsize) {
1281 461775 36176 if (newsize < newmax)
1283 497951 0 if (newsize < newmax)
1287 4 497947 if (a) {
1318 260865 0 if (!ohv || (!HvTOTALKEYS(ohv) && !SvMAGICAL((const SV *)ohv)))
0 260865 if (!ohv || (!HvTOTALKEYS(ohv) && !SvMAGICAL((const SV *)ohv)))
0 0 if (!ohv || (!HvTOTALKEYS(ohv) && !SvMAGICAL((const SV *)ohv)))
1322 260864 1 if (!SvMAGICAL((const SV *)ohv)) {
1332 2351496 260864 for (i = 0; i <= hv_max; i++) {
1336 766671 1584825 if (!oent) {
1342 906580 766671 for (; oent; oent = HeNEXT(oent)) {
1350 906580 0 HeVAL(ent) = SvIMMORTAL(val) ? val : newSVsv(val);
0 906580 HeVAL(ent) = SvIMMORTAL(val) ? val : newSVsv(val);
0 0 HeVAL(ent) = SvIMMORTAL(val) ? val : newSVsv(val);
0 0 HeVAL(ent) = SvIMMORTAL(val) ? val : newSVsv(val);
0 0 HeVAL(ent) = SvIMMORTAL(val) ? val : newSVsv(val);
1353 906580 0 : save_hek_flags(key, len, hash, flags);
1354 139909 766671 if (prev)
1370 0 1 const I32 riter = HvRITER_get(ohv);
1371 0 1 HE * const eiter = HvEITER_get(ohv);
1374 1 0 HV_SET_MAX_ADJUSTED_FOR_KEYS(hv,hv_max,hv_keys);
0 1 HV_SET_MAX_ADJUSTED_FOR_KEYS(hv,hv_max,hv_keys);
0 0 HV_SET_MAX_ADJUSTED_FOR_KEYS(hv,hv_max,hv_keys);
1377 1 1 while ((entry = hv_iternext_flags(ohv, 0))) {
1379 1 0 SV * const keysv = HeSVKEY(entry);
0 1 SV * const keysv = HeSVKEY(entry);
1380 0 1 val = SvIMMORTAL(val) ? val : newSVsv(val);
0 0 val = SvIMMORTAL(val) ? val : newSVsv(val);
0 0 val = SvIMMORTAL(val) ? val : newSVsv(val);
0 0 val = SvIMMORTAL(val) ? val : newSVsv(val);
0 0 val = SvIMMORTAL(val) ? val : newSVsv(val);
1381 0 1 if (keysv)
1411 538264 0 if (ohv) {
1415 249156 289108 const I32 riter = HvRITER_get(ohv);
1416 249156 289108 HE * const eiter = HvEITER_get(ohv);
1421 538264 0 HV_SET_MAX_ADJUSTED_FOR_KEYS(hv,hv_max,hv_keys);
271961 266352 HV_SET_MAX_ADJUSTED_FOR_KEYS(hv,hv_max,hv_keys);
49 271912 HV_SET_MAX_ADJUSTED_FOR_KEYS(hv,hv_max,hv_keys);
1424 3319680 538261 while ((entry = hv_iternext_flags(ohv, 0))) {
1426 3319678 0 SV *heksv = HeSVKEY(entry);
3 3319675 SV *heksv = HeSVKEY(entry);
1427 3319675 3 if (!heksv && sv) heksv = newSVhek(HeKEY_hek(entry));
1428 3319678 0 if (sv) sv_magic(sv, NULL, PERL_MAGIC_hintselem,
1430 3319678 0 if (heksv == HeSVKEY(entry))
3 3319675 if (heksv == HeSVKEY(entry))
3 3319675 if (heksv == HeSVKEY(entry))
1459 12 223568267 if (HeKLEN(entry) == HEf_SVKEY) {
1463 223568267 0 else if (HvSHAREKEYS(hv))
1480 8742544 0 if (!entry)
1494 0 0 if (!entry)
1498 0 0 if (HeKLEN(entry) == HEf_SVKEY) {
1521 8463984 0 if (!hv)
1530 2 8463982 if (SvREADONLY(hv) && HvARRAY(hv) != NULL) {
2 0 if (SvREADONLY(hv) && HvARRAY(hv) != NULL) {
1533 16 2 for (i = 0; i <= xhv->xhv_max; i++) {
1535 6 16 for (; entry; entry = HeNEXT(entry)) {
1537 2 4 if (HeVAL(entry) != &PL_sv_placeholder) {
1538 2 0 if (HeVAL(entry)) {
1539 0 2 if (SvREADONLY(HeVAL(entry))) {
1557 308689 8155293 if (SvRMAGICAL(hv))
1562 351876 8112106 if (SvOOK(hv)) {
1563 351876 0 if(HvENAME_get(hv))
31 351845 if(HvENAME_get(hv))
31 0 if(HvENAME_get(hv))
0 31 if(HvENAME_get(hv))
22 9 if(HvENAME_get(hv))
9 0 if(HvENAME_get(hv))
31 0 if(HvENAME_get(hv))
1588 0 115 const U32 items = (U32)HvPLACEHOLDERS_get(hv);
1592 0 115 if (items)
1604 86971 0 if (items == 0)
1613 866446 601924 while ((entry = *oentry)) {
1614 691475 174971 if (HeVAL(entry) == &PL_sv_placeholder) {
1616 0 691475 if (entry == HvEITER_get(hv))
0 691475 if (entry == HvEITER_get(hv))
1619 0 691475 if (SvOOK(hv) && HvLAZYDEL(hv) &&
0 0 if (SvOOK(hv) && HvLAZYDEL(hv) &&
1625 86971 604504 if (--items == 0) {
1627 0 86971 HvTOTALKEYS(hv) -= (IV)HvPLACEHOLDERS_get(hv);
1628 0 86971 if (HvUSEDKEYS(hv) == 0)
0 86971 if (HvUSEDKEYS(hv) == 0)
1637 601924 0 } while (--i >= 0);
1652 10674781 64525799 while ((sv = Perl_hfree_next_entry(aTHX_ hv, &index))||xhv->xhv_keys) {
0 64525799 while ((sv = Perl_hfree_next_entry(aTHX_ hv, &index))||xhv->xhv_keys) {
1679 53470510 276784402 if (SvOOK(hv) && ((iter = HvAUX(hv)))) {
53470510 0 if (SvOOK(hv) && ((iter = HvAUX(hv)))) {
1680 71 53470439 if ((entry = iter->xhv_eiter)) {
1683 71 0 if (entry && HvLAZYDEL(hv)) { /* was deleted earlier? */
10 61 if (entry && HvLAZYDEL(hv)) { /* was deleted earlier? */
1699 7591 53462919 if (iter->xhv_fill_lazy)
1703 214825735 115429177 if (!((XPVHV*)SvANY(hv))->xhv_keys)
1708 358589773 214825735 while ( ! ((entry = array[*indexp])) ) {
1709 3 358589770 if ((*indexp)++ >= HvMAX(hv))
1716 182050767 32774968 if ( PL_phase != PERL_PHASE_DESTRUCT && HvENAME(hv)
7411843 174638924 if ( PL_phase != PERL_PHASE_DESTRUCT && HvENAME(hv)
2629 7409214 if ( PL_phase != PERL_PHASE_DESTRUCT && HvENAME(hv)
1171 1458 if ( PL_phase != PERL_PHASE_DESTRUCT && HvENAME(hv)
0 1171 if ( PL_phase != PERL_PHASE_DESTRUCT && HvENAME(hv)
1160 11 if ( PL_phase != PERL_PHASE_DESTRUCT && HvENAME(hv)
11 0 if ( PL_phase != PERL_PHASE_DESTRUCT && HvENAME(hv)
1171 0 if ( PL_phase != PERL_PHASE_DESTRUCT && HvENAME(hv)
1717 1171 0 && HeVAL(entry) && isGV(HeVAL(entry))
1171 0 && HeVAL(entry) && isGV(HeVAL(entry))
1718 212 959 && GvHV(HeVAL(entry)) && HvENAME(GvHV(HeVAL(entry)))
184 28 && GvHV(HeVAL(entry)) && HvENAME(GvHV(HeVAL(entry)))
184 0 && GvHV(HeVAL(entry)) && HvENAME(GvHV(HeVAL(entry)))
184 0 && GvHV(HeVAL(entry)) && HvENAME(GvHV(HeVAL(entry)))
3 181 && GvHV(HeVAL(entry)) && HvENAME(GvHV(HeVAL(entry)))
14 167 && GvHV(HeVAL(entry)) && HvENAME(GvHV(HeVAL(entry)))
167 0 && GvHV(HeVAL(entry)) && HvENAME(GvHV(HeVAL(entry)))
184 0 && GvHV(HeVAL(entry)) && HvENAME(GvHV(HeVAL(entry)))
1721 0 184 const char * const key = HePV(entry,klen);
0 0 const char * const key = HePV(entry,klen);
1722 184 0 if ((klen > 1 && key[klen-1]==':' && key[klen-2]==':')
184 0 if ((klen > 1 && key[klen-1]==':' && key[klen-2]==':')
0 184 if ((klen > 1 && key[klen-1]==':' && key[klen-2]==':')
1723 0 0 || (klen == 1 && key[0] == ':')) {
0 0 || (klen == 1 && key[0] == ':')) {
1758 56061817 0 if (!hv)
1773 48013463 8048354 if (PL_phase != PERL_PHASE_DESTRUCT && (name = HvNAME(hv))) {
1128064 46885399 if (PL_phase != PERL_PHASE_DESTRUCT && (name = HvNAME(hv))) {
425 1127639 if (PL_phase != PERL_PHASE_DESTRUCT && (name = HvNAME(hv))) {
394 31 if (PL_phase != PERL_PHASE_DESTRUCT && (name = HvNAME(hv))) {
126 268 if (PL_phase != PERL_PHASE_DESTRUCT && (name = HvNAME(hv))) {
31 0 if (PL_phase != PERL_PHASE_DESTRUCT && (name = HvNAME(hv))) {
126 31 if (PL_phase != PERL_PHASE_DESTRUCT && (name = HvNAME(hv))) {
157 48013306 if (PL_phase != PERL_PHASE_DESTRUCT && (name = HvNAME(hv))) {
1774 157 0 if (PL_stashcache) {
1777 157 0 (void)hv_delete(PL_stashcache, name,
157 0 (void)hv_delete(PL_stashcache, name,
126 31 (void)hv_delete(PL_stashcache, name,
157 0 (void)hv_delete(PL_stashcache, name,
157 0 (void)hv_delete(PL_stashcache, name,
126 31 (void)hv_delete(PL_stashcache, name,
41 116 (void)hv_delete(PL_stashcache, name,
41 0 (void)hv_delete(PL_stashcache, name,
41 0 (void)hv_delete(PL_stashcache, name,
35 6 (void)hv_delete(PL_stashcache, name,
35 0 (void)hv_delete(PL_stashcache, name,
6 0 (void)hv_delete(PL_stashcache, name,
35 6 (void)hv_delete(PL_stashcache, name,
116 0 (void)hv_delete(PL_stashcache, name,
116 0 (void)hv_delete(PL_stashcache, name,
91 25 (void)hv_delete(PL_stashcache, name,
91 0 (void)hv_delete(PL_stashcache, name,
25 0 (void)hv_delete(PL_stashcache, name,
91 25 (void)hv_delete(PL_stashcache, name,
1784 1390783 54671034 if (save) {
1789 8452300 47609517 if (SvOOK(hv)) {
1793 8452300 0 if ((name = HvENAME_get(hv))) {
430 8451870 if ((name = HvENAME_get(hv))) {
211 219 if ((name = HvENAME_get(hv))) {
0 211 if ((name = HvENAME_get(hv))) {
209 2 if ((name = HvENAME_get(hv))) {
2 0 if ((name = HvENAME_get(hv))) {
211 8452089 if ((name = HvENAME_get(hv))) {
1794 209 2 if (PL_phase != PERL_PHASE_DESTRUCT)
1796 211 0 if (PL_stashcache) {
1799 211 0 (void)hv_delete(
211 0 (void)hv_delete(
0 211 (void)hv_delete(
209 2 (void)hv_delete(
2 0 (void)hv_delete(
211 0 (void)hv_delete(
211 0 (void)hv_delete(
0 211 (void)hv_delete(
209 2 (void)hv_delete(
2 0 (void)hv_delete(
8 203 (void)hv_delete(
8 0 (void)hv_delete(
8 0 (void)hv_delete(
8 0 (void)hv_delete(
0 8 (void)hv_delete(
8 0 (void)hv_delete(
0 0 (void)hv_delete(
203 0 (void)hv_delete(
203 0 (void)hv_delete(
203 0 (void)hv_delete(
0 203 (void)hv_delete(
201 2 (void)hv_delete(
2 0 (void)hv_delete(
1809 8452300 0 name = HvNAME(hv);
430 8451870 name = HvNAME(hv);
428 2 name = HvNAME(hv);
9 419 name = HvNAME(hv);
2 0 name = HvNAME(hv);
9 2 name = HvNAME(hv);
1810 8268822 183478 if (flags & HV_NAME_SETALL ? !!aux->xhv_name_u.xhvnameu_name : !!name) {
418 8451882 if (flags & HV_NAME_SETALL ? !!aux->xhv_name_u.xhvnameu_name : !!name) {
1811 11 407 if (name && PL_stashcache) {
11 0 if (name && PL_stashcache) {
1814 11 0 (void)hv_delete(PL_stashcache, name, (HEK_UTF8(HvNAME_HEK(hv)) ? -HvNAMELEN_get(hv) : HvNAMELEN_get(hv)), G_DISCARD);
11 0 (void)hv_delete(PL_stashcache, name, (HEK_UTF8(HvNAME_HEK(hv)) ? -HvNAMELEN_get(hv) : HvNAMELEN_get(hv)), G_DISCARD);
9 2 (void)hv_delete(PL_stashcache, name, (HEK_UTF8(HvNAME_HEK(hv)) ? -HvNAMELEN_get(hv) : HvNAMELEN_get(hv)), G_DISCARD);
11 0 (void)hv_delete(PL_stashcache, name, (HEK_UTF8(HvNAME_HEK(hv)) ? -HvNAMELEN_get(hv) : HvNAMELEN_get(hv)), G_DISCARD);
11 0 (void)hv_delete(PL_stashcache, name, (HEK_UTF8(HvNAME_HEK(hv)) ? -HvNAMELEN_get(hv) : HvNAMELEN_get(hv)), G_DISCARD);
9 2 (void)hv_delete(PL_stashcache, name, (HEK_UTF8(HvNAME_HEK(hv)) ? -HvNAMELEN_get(hv) : HvNAMELEN_get(hv)), G_DISCARD);
2 9 (void)hv_delete(PL_stashcache, name, (HEK_UTF8(HvNAME_HEK(hv)) ? -HvNAMELEN_get(hv) : HvNAMELEN_get(hv)), G_DISCARD);
2 0 (void)hv_delete(PL_stashcache, name, (HEK_UTF8(HvNAME_HEK(hv)) ? -HvNAMELEN_get(hv) : HvNAMELEN_get(hv)), G_DISCARD);
2 0 (void)hv_delete(PL_stashcache, name, (HEK_UTF8(HvNAME_HEK(hv)) ? -HvNAMELEN_get(hv) : HvNAMELEN_get(hv)), G_DISCARD);
2 0 (void)hv_delete(PL_stashcache, name, (HEK_UTF8(HvNAME_HEK(hv)) ? -HvNAMELEN_get(hv) : HvNAMELEN_get(hv)), G_DISCARD);
2 0 (void)hv_delete(PL_stashcache, name, (HEK_UTF8(HvNAME_HEK(hv)) ? -HvNAMELEN_get(hv) : HvNAMELEN_get(hv)), G_DISCARD);
0 0 (void)hv_delete(PL_stashcache, name, (HEK_UTF8(HvNAME_HEK(hv)) ? -HvNAMELEN_get(hv) : HvNAMELEN_get(hv)), G_DISCARD);
2 0 (void)hv_delete(PL_stashcache, name, (HEK_UTF8(HvNAME_HEK(hv)) ? -HvNAMELEN_get(hv) : HvNAMELEN_get(hv)), G_DISCARD);
9 0 (void)hv_delete(PL_stashcache, name, (HEK_UTF8(HvNAME_HEK(hv)) ? -HvNAMELEN_get(hv) : HvNAMELEN_get(hv)), G_DISCARD);
9 0 (void)hv_delete(PL_stashcache, name, (HEK_UTF8(HvNAME_HEK(hv)) ? -HvNAMELEN_get(hv) : HvNAMELEN_get(hv)), G_DISCARD);
7 2 (void)hv_delete(PL_stashcache, name, (HEK_UTF8(HvNAME_HEK(hv)) ? -HvNAMELEN_get(hv) : HvNAMELEN_get(hv)), G_DISCARD);
7 0 (void)hv_delete(PL_stashcache, name, (HEK_UTF8(HvNAME_HEK(hv)) ? -HvNAMELEN_get(hv) : HvNAMELEN_get(hv)), G_DISCARD);
2 0 (void)hv_delete(PL_stashcache, name, (HEK_UTF8(HvNAME_HEK(hv)) ? -HvNAMELEN_get(hv) : HvNAMELEN_get(hv)), G_DISCARD);
7 2 (void)hv_delete(PL_stashcache, name, (HEK_UTF8(HvNAME_HEK(hv)) ? -HvNAMELEN_get(hv) : HvNAMELEN_get(hv)), G_DISCARD);
1818 430 8451870 if((meta = aux->xhv_mro_meta)) {
1819 0 430 if (meta->mro_linear_all) {
1834 8452282 18 if (!aux->xhv_name_u.xhvnameu_name && ! aux->xhv_backreferences)
8452281 1 if (!aux->xhv_name_u.xhvnameu_name && ! aux->xhv_backreferences)
1837 56061798 19 if (!SvOOK(hv)) {
1844 1390783 54671034 if (SvREFCNT(hv))
1847 2 56061815 if (SvRMAGICAL(hv))
1849 1390783 54671034 if (save) LEAVE;
1873 48129 9184 struct xpvhv_aux *aux = SvOOK(hv) ? HvAUX(hv) : NULL;
1879 562 56751 if (HvTOTALKEYS(hv) < 2)
1883 47637 9114 if (aux && aux->xhv_fill_lazy)
27239 20398 if (aux && aux->xhv_fill_lazy)
1887 29512 0 if (ents) {
1892 2527364 2241412 if (!*ents)
1894 4739264 29512 } while (++ents <= last);
1896 20398 9114 if (aux) {
1902 5742 3372 } else if (HvMAX(hv) >= HV_FILL_THRESHOLD) {
1950 10079476 0 if (!SvOOK(hv)) {
1951 1167402 8912074 if (!HvARRAY(hv)) {
1963 10079434 42 if (PL_HASH_RAND_BITS_ENABLED) {
1965 10079329 105 if (PL_HASH_RAND_BITS_ENABLED == 1)
2010 0 14958901 if (!hv)
2013 5727238 9231663 if (SvOOK(hv)) {
2016 54 5727184 if (entry && HvLAZYDEL(hv)) { /* was deleted earlier? */
4 50 if (entry && HvLAZYDEL(hv)) { /* was deleted earlier? */
2039 0 0 if (!hv)
2042 0 0 iter = SvOOK(hv) ? HvAUX(hv) : hv_auxinit(hv);
2052 0 1 if (!hv)
2055 1 0 iter = SvOOK(hv) ? HvAUX(hv) : hv_auxinit(hv);
2065 0 7893475 if (!hv)
2068 7893475 0 if (SvOOK(hv)) {
2071 0 0 if (riter == -1)
2086 0 0 if (!hv)
2089 0 0 if (SvOOK(hv)) {
2106 0 8255691 if (!hv)
2109 8245375 10316 if (SvOOK(hv)) {
2114 0 10316 if (!eiter)
2132 0 842922 if (len > I32_MAX)
2135 13240 829682 if (SvOOK(hv)) {
2137 887 12353 if (iter->xhv_name_u.xhvnameu_name) {
2138 678 209 if(iter->xhv_name_count) {
2139 410 268 if(flags & HV_NAME_SETALL) {
2141 410 0 HEK **hekp = name + (
2146 213 410 while(hekp-- > name+1)
2149 3 407 if(*name) unshare_hek_or_pvn(*name, 0, 0, 0);
2155 24 244 if(iter->xhv_name_count > 0) {
2157 0 24 Renew(
2165 222 22 else if(*(spot = iter->xhv_name_u.xhvnameu_names)) {
2170 2 207 else if (flags & HV_NAME_SETALL) {
2184 829682 0 if (name == 0)
2191 842079 843 *spot = name ? share_hek(name, flags & SVf_UTF8 ? -(I32)len : (I32)len, hash) : NULL;
718 841361 *spot = name ? share_hek(name, flags & SVf_UTF8 ? -(I32)len : (I32)len, hash) : NULL;
2201 1 214 if ( (HEK_UTF8(hek) ? 1 : 0) != (flags & SVf_UTF8 ? 1 : 0) ) {
2202 0 1 if (flags & SVf_UTF8)
2212 100 114 return HEK_LEN(hek) == pvlen && ((HEK_KEY(hek) == pv)
100 0 return HEK_LEN(hek) == pvlen && ((HEK_KEY(hek) == pv)
2213 5 95 || memEQ(HEK_KEY(hek), pv, pvlen));
2232 352 0 struct xpvhv_aux *aux = SvOOK(hv) ? HvAUX(hv) : hv_auxinit(hv);
2237 0 352 if (len > I32_MAX)
2242 12 340 if (aux->xhv_name_count) {
2245 9 3 HEK **hekp = xhv_name + (count < 0 ? -count : count);
2246 18 9 while (hekp-- > xhv_name)
2247 3 15 if (
2248 13 5 (HEK_UTF8(*hekp) || (flags & SVf_UTF8))
0 13 (HEK_UTF8(*hekp) || (flags & SVf_UTF8))
6 7 (HEK_UTF8(*hekp) || (flags & SVf_UTF8))
2250 4 2 : (HEK_LEN(*hekp) == (I32)len && memEQ(HEK_KEY(*hekp), name, len))
2252 3 0 if (hekp == xhv_name && count < 0)
2256 6 3 if (count < 0) aux->xhv_name_count--, count = -count;
2258 0 9 Renew(aux->xhv_name_u.xhvnameu_names, count + 1, HEK *);
2259 3 6 (aux->xhv_name_u.xhvnameu_names)[count] = share_hek(name, (flags & SVf_UTF8 ? -(I32)len : (I32)len), hash);
2263 340 0 if (
2264 204 136 existing_name && (
139 65 existing_name && (
263 77 existing_name && (
2265 0 204 (HEK_UTF8(existing_name) || (flags & SVf_UTF8))
2267 89 50 : (HEK_LEN(existing_name) == (I32)len && memEQ(HEK_KEY(existing_name), name, len))
2271 0 263 aux->xhv_name_count = existing_name ? 2 : -2;
2273 108 155 (aux->xhv_name_u.xhvnameu_names)[1] = share_hek(name, (flags & SVf_UTF8 ? -(I32)len : (I32)len), hash);
2297 0 266 if (len > I32_MAX)
2300 266 0 if (!SvOOK(hv)) return;
2303 266 0 if (!aux->xhv_name_u.xhvnameu_name) return;
2305 56 210 if (aux->xhv_name_count) {
2308 24 32 HEK **victim = namep + (count < 0 ? -count : count);
2309 56 20 while (victim-- > namep + 1)
2310 36 20 if (
2311 41 15 (HEK_UTF8(*victim) || (flags & SVf_UTF8))
0 41 (HEK_UTF8(*victim) || (flags & SVf_UTF8))
31 10 (HEK_UTF8(*victim) || (flags & SVf_UTF8))
2313 3 28 : (HEK_LEN(*victim) == (I32)len && memEQ(HEK_KEY(*victim), name, len))
2316 24 12 if (count < 0) ++aux->xhv_name_count;
2318 35 1 if (
2320 0 35 && !*namep
2329 24 12 *victim = *(namep + (count < 0 ? -count : count) - 1);
2333 20 0 if (
2334 20 0 count > 0 && (HEK_UTF8(*namep) || (flags & SVf_UTF8))
13 7 count > 0 && (HEK_UTF8(*namep) || (flags & SVf_UTF8))
0 13 count > 0 && (HEK_UTF8(*namep) || (flags & SVf_UTF8))
13 0 count > 0 && (HEK_UTF8(*namep) || (flags & SVf_UTF8))
2336 0 13 : (HEK_LEN(*namep) == (I32)len && memEQ(HEK_KEY(*namep), name, len))
2341 210 0 else if(
2342 158 52 (HEK_UTF8(aux->xhv_name_u.xhvnameu_name) || (flags & SVf_UTF8))
0 158 (HEK_UTF8(aux->xhv_name_u.xhvnameu_name) || (flags & SVf_UTF8))
158 0 (HEK_UTF8(aux->xhv_name_u.xhvnameu_name) || (flags & SVf_UTF8))
2344 0 158 : (HEK_LEN(aux->xhv_name_u.xhvnameu_name) == (I32)len &&
2356 64382026 12389 struct xpvhv_aux * const iter = SvOOK(hv) ? HvAUX(hv) : hv_auxinit(hv);
2370 8496833 48829971 if (!SvOOK(hv))
2375 337 8496496 if (av) {
2378 254 83 if (SvTYPE(av) == SVt_PVAV)
2424 0 84062611 if (!hv)
2429 9934 84052677 if (!SvOOK(hv)) {
2438 7161239 76901372 if (SvMAGICAL(hv) && SvRMAGICAL(hv)) {
7161006 233 if (SvMAGICAL(hv) && SvRMAGICAL(hv)) {
2439 1010599 6150407 if ( ( mg = mg_find((const SV *)hv, PERL_MAGIC_tied) ) ) {
2441 1008981 1618 if (entry) {
2442 1008981 0 sv_setsv(key, HeSVKEY_force(entry));
1008981 0 sv_setsv(key, HeSVKEY_force(entry));
2443 1008981 0 SvREFCNT_dec(HeSVKEY(entry)); /* get rid of previous key */
1008981 0 SvREFCNT_dec(HeSVKEY(entry)); /* get rid of previous key */
2460 1606 1008991 if (SvOK(key)) {
1606 0 if (SvOK(key)) {
0 1606 if (SvOK(key)) {
2492 68478630 14573382 if (entry)
2495 47030082 21448548 if (!(flags & HV_ITERNEXT_WANTPLACEHOLDERS)) {
2500 11540099 35489983 while (entry && HeVAL(entry) == &PL_sv_placeholder) {
0 11540099 while (entry && HeVAL(entry) == &PL_sv_placeholder) {
2507 2237 83049775 if (iter->xhv_last_rand != iter->xhv_rand) {
2508 17 2220 if (iter->xhv_riter != -1) {
2519 28803741 54248271 if ((flags & HV_ITERNEXT_WANTPLACEHOLDERS)
6145506 48102765 if ((flags & HV_ITERNEXT_WANTPLACEHOLDERS)
81508823 1543189 if ((flags & HV_ITERNEXT_WANTPLACEHOLDERS)
2521 145814205 75833939 while (!entry) {
2525 5674884 140139321 if (iter->xhv_riter > (I32)xhv->xhv_max /* HvRITER(hv) > HvMAX(hv) */) {
2535 88329485 51809836 if (!(flags & HV_ITERNEXT_WANTPLACEHOLDERS)) {
2538 35490126 52839386 while (entry && HeVAL(entry) == &PL_sv_placeholder)
27 35490099 while (entry && HeVAL(entry) == &PL_sv_placeholder)
2553 68478630 14573382 if (oldentry && HvLAZYDEL(hv)) { /* was deleted earlier? */
2 68478628 if (oldentry && HvLAZYDEL(hv)) { /* was deleted earlier? */
2576 0 441409 if (HeKLEN(entry) == HEf_SVKEY) {
2578 0 0 char * const p = SvPV(HeKEY_sv(entry), len);
2621 4821528 32391292 if (SvRMAGICAL(hv)) {
2622 956703 3864825 if (mg_find((const SV *)hv, PERL_MAGIC_tied)) {
2624 956703 0 if (HeKLEN(entry) == HEf_SVKEY)
2650 3007 260 if (!he)
2700 496975214 0 if (hek) {
2710 470257766 26717448 if (he->shared_he_he.he_valu.hent_refcount - 1) {
2716 0 0 } else if (len < 0) {
2722 0 0 if (is_utf8)
2724 0 0 if (str != save)
2736 26717448 0 if (he) {
2738 28803797 0 for (entry = *oentry; entry; oentry = &HeNEXT(entry), entry = *oentry) {
2739 2086349 26717448 if (entry == he_he)
2744 0 0 for (entry = *oentry; entry; oentry = &HeNEXT(entry), entry = *oentry) {
2745 0 0 if (HeHASH(entry) != hash) /* strings can't be equal */
2747 0 0 if (HeKLEN(entry) != len)
2749 0 0 if (HeKEY(entry) != str && memNE(HeKEY(entry),str,len)) /* is this it? */
0 0 if (HeKEY(entry) != str && memNE(HeKEY(entry),str,len)) /* is this it? */
2751 0 0 if (HeKFLAGS(entry) != flags_masked)
2757 26717448 0 if (entry) {
2758 26717448 0 if (--entry->he_valu.hent_refcount == 0) {
2765 0 26717448 if (!entry)
2766 0 0 Perl_ck_warner_d(aTHX_ packWARN(WARN_INTERNAL),
0 0 Perl_ck_warner_d(aTHX_ packWARN(WARN_INTERNAL),
2771 0 26717448 if (k_flags & HVhek_FREEKEY)
2788 4435 68823503 if (len < 0) {
2796 3368 1067 if (is_utf8)
2801 1067 3368 if (str != save) {
2833 436500447 52316873 for (;entry; entry = HeNEXT(entry)) {
2834 160158850 276341597 if (HeHASH(entry) != hash) /* strings can't be equal */
2836 1066 276340531 if (HeKLEN(entry) != len)
2838 214558951 61781580 if (HeKEY(entry) != str && memNE(HeKEY(entry),str,len)) /* is this it? */
581 214558370 if (HeKEY(entry) != str && memNE(HeKEY(entry),str,len)) /* is this it? */
2840 3935135 272404815 if (HeKFLAGS(entry) != flags_masked)
2845 52316873 272404815 if (!entry) {
2881 25679443 26637430 if (!next) { /* initial entry? */
2882 20102 25659341 } else if ( DO_HSPLIT(xhv) ) {
2890 4019 324717669 if (flags & HVhek_FREEKEY)
2904 225 15179 if (!mg) {
2907 0 225 if (!mg) {
2923 125 6314147 return mg ? mg->mg_len : 0;
2934 0 9941736 if (mg) {
2936 0 9941736 } else if (ph) {
2937 0 0 if (!sv_magicext(MUTABLE_SV(hv), 0, PERL_MAGIC_rhash, 0, 0, ph))
2975 309 1900138 if ((he->refcounted_he_data[0] & HVrhek_typemask) == HVrhek_PV_UTF8)
3001 0 958930 if (flags)
3010 958930 0 if (!HvARRAY(hv)) {
3017 4047146 958930 while (chain) {
3027 3141762 3432387 for (; entry; entry = HeNEXT(entry)) {
3028 614779 2526983 if (HeHASH(entry) == hash) {
3041 184523 430256 if (HeKEY_hek(entry) == chain->refcounted_he_hek)
3043 184523 0 if (HeKLEN(entry) == HEK_LEN(chain->refcounted_he_hek)
3044 184503 20 && HeKUTF8(entry) == HEK_UTF8(chain->refcounted_he_hek)
3045 0 184503 && memEQ(HeKEY(entry), HEK_KEY(chain->refcounted_he_hek),
3065 691475 2740912 if (value == &PL_sv_placeholder)
3079 86971 871959 if (placeholders) {
3115 0 7722118 if (flags & ~(REFCOUNTED_HE_KEY_UTF8|REFCOUNTED_HE_EXISTS))
3118 7722056 62 if (!chain)
3120 11 7722045 if (flags & REFCOUNTED_HE_KEY_UTF8) {
3124 51 8 for (p = keypv; p != keyend; p++) {
3125 9 42 if (! UTF8_IS_INVARIANT(*p)) {
3126 6 3 if (! UTF8_IS_NEXT_CHAR_DOWNGRADEABLE(p, keyend)) {
6 0 if (! UTF8_IS_NEXT_CHAR_DOWNGRADEABLE(p, keyend)) {
6 0 if (! UTF8_IS_NEXT_CHAR_DOWNGRADEABLE(p, keyend)) {
3133 6 2 if (nonascii_count) {
3140 30 6 for (; p != keyend; p++, q++) {
3142 24 6 if (UTF8_IS_INVARIANT(c)) {
3155 7722056 0 if (!hash)
3158 8300023 25263 for (; chain; chain = chain->refcounted_he_next) {
3159 7696795 603228 if (
3166 7696795 0 hash == HEK_HASH(chain->refcounted_he_hek) &&
3167 7696795 0 keylen == (STRLEN)HEK_LEN(chain->refcounted_he_hek) &&
3168 7696793 2 memEQ(HEK_KEY(chain->refcounted_he_hek), keypv, keylen) &&
3172 1656 7695137 if (flags & REFCOUNTED_HE_EXISTS)
3175 57 1599 ? NULL : &PL_sv_yes;
3179 0 25263 return flags & REFCOUNTED_HE_EXISTS ? NULL : &PL_sv_placeholder;
3215 0 53 if (flags & REFCOUNTED_HE_KEY_UTF8)
3218 53 0 keypv = SvPV_const(key, keylen);
3219 1 52 if (SvUTF8(key))
3221 53 0 if (!hash && SvIsCOW_shared_hash(key))
42 11 if (!hash && SvIsCOW_shared_hash(key))
0 42 if (!hash && SvIsCOW_shared_hash(key))
3273 103441 16367 if (!value || value == &PL_sv_placeholder) {
103441 0 if (!value || value == &PL_sv_placeholder) {
3275 42620 60821 } else if (SvPOK(value)) {
3277 41656 964 } else if (SvIOK(value)) {
3278 41654 2 value_type = SvUOK((const SV *)value) ? HVrhek_UV : HVrhek_IV;
3279 9 955 } else if (!SvOK(value)) {
9 0 } else if (!SvOK(value)) {
0 9 } else if (!SvOK(value)) {
3285 61776 58032 if (is_pv) {
3288 60821 955 value_p = SvPV_const(value, value_len);
3289 186 61590 if (SvUTF8(value))
3295 9 119799 if (flags & REFCOUNTED_HE_KEY_UTF8) {
3299 37 5 for (p = keypv; p != keyend; p++) {
3300 8 29 if (! UTF8_IS_INVARIANT(*p)) {
3301 4 4 if (! UTF8_IS_NEXT_CHAR_DOWNGRADEABLE(p, keyend)) {
4 0 if (! UTF8_IS_NEXT_CHAR_DOWNGRADEABLE(p, keyend)) {
4 0 if (! UTF8_IS_NEXT_CHAR_DOWNGRADEABLE(p, keyend)) {
3308 4 1 if (nonascii_count) {
3315 20 4 for (; p != keyend; p++, q++) {
3317 16 4 if (UTF8_IS_INVARIANT(c)) {
3329 4 119804 if (flags & REFCOUNTED_HE_KEY_UTF8)
3331 119440 368 if (!hash)
3347 61776 58032 if (is_pv) {
3350 41654 16378 } else if (value_type == HVrhek_IV) {
3352 2 16376 } else if (value_type == HVrhek_UV) {
3403 0 72865 if (flags & REFCOUNTED_HE_KEY_UTF8)
3406 72865 0 keypv = SvPV_const(key, keylen);
3407 2 72863 if (SvUTF8(key))
3409 72865 0 if (!hash && SvIsCOW_shared_hash(key))
368 72497 if (!hash && SvIsCOW_shared_hash(key))
368 0 if (!hash && SvIsCOW_shared_hash(key))
3431 862698 38286370 while (he) {
3439 6102 856596 if (new_count) {
3466 1273416 75976551 if (he) {
3491 1079999 44726873 if (!chain)
3499 220112 859887 if ((STRLEN)HEK_LEN(chain->refcounted_he_hek) != 1)
3501 220089 23 if (*HEK_KEY(chain->refcounted_he_hek) != ':')
3506 220089 0 if ((chain->refcounted_he_data[0] & HVrhek_typemask) != HVrhek_PV
3510 169021 51068 if (len)
3512 169021 51068 if (flags) {
3513 168995 26 *flags = ((chain->refcounted_he_data[0] & HVrhek_typemask)
3535 0 46921 if (flags & ~(SVf_UTF8))
3539 179 46742 if (flags & SVf_UTF8)