Lines Matching refs:hv
464 Perl_hv_common_key_len(pTHX_ HV *hv, const char *key, I32 klen_i32, in Perl_hv_common_key_len() argument
479 return hv_common(hv, NULL, key, klen, flags, action, val, hash); in Perl_hv_common_key_len()
483 Perl_hv_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen, in Perl_hv_common() argument
495 if (!hv) in Perl_hv_common()
497 if (SvIS_FREED(hv)) in Perl_hv_common()
500 assert(SvTYPE(hv) == SVt_PVHV); in Perl_hv_common()
502 if (SvSMAGICAL(hv) && SvGMAGICAL(hv) && !(action & HV_DISABLE_UVAR_XKEY)) { in Perl_hv_common()
504 if ((mg = mg_find((const SV *)hv, PERL_MAGIC_uvar))) { in Perl_hv_common()
517 magic_getuvar(MUTABLE_SV(hv), mg); in Perl_hv_common()
556 return (void *) hv_delete_common(hv, keysv, key, klen, in Perl_hv_common()
561 xhv = (XPVHV*)SvANY(hv); in Perl_hv_common()
562 if (SvMAGICAL(hv)) { in Perl_hv_common()
563 if (SvRMAGICAL(hv) && !(action & (HV_FETCH_ISSTORE|HV_FETCH_ISEXISTS))) { in Perl_hv_common()
564 if (mg_find((const SV *)hv, PERL_MAGIC_tied) in Perl_hv_common()
565 || SvGMAGICAL((const SV *)hv)) in Perl_hv_common()
575 mg_copy(MUTABLE_SV(hv), sv, (char *)keysv, HEf_SVKEY); in Perl_hv_common()
605 else if (mg_find((const SV *)hv, PERL_MAGIC_env)) { in Perl_hv_common()
614 void *result = hv_common(hv, NULL, nkey, klen, in Perl_hv_common()
625 result = hv_common(hv, keysv, key, klen, flags, in Perl_hv_common()
639 else if (SvRMAGICAL(hv) && (action & HV_FETCH_ISEXISTS)) { in Perl_hv_common()
640 if (mg_find((const SV *)hv, PERL_MAGIC_tied) in Perl_hv_common()
641 || SvGMAGICAL((const SV *)hv)) { in Perl_hv_common()
653 mg_copy(MUTABLE_SV(hv), sv, (char *)sv_2mortal(keysv), HEf_SVKEY); in Perl_hv_common()
655 mg_copy(MUTABLE_SV(hv), sv, key, klen); in Perl_hv_common()
667 return SvTRUE_NN(svret) ? (void *)hv : NULL; in Perl_hv_common()
670 else if (mg_find((const SV *)hv, PERL_MAGIC_env)) { in Perl_hv_common()
690 hv_magic_check (hv, &needs_copy, &needs_store); in Perl_hv_common()
700 mg_copy(MUTABLE_SV(hv), val, (char*)keysv, HEf_SVKEY); in Perl_hv_common()
702 mg_copy(MUTABLE_SV(hv), val, key, klen); in Perl_hv_common()
715 else if (mg_find((const SV *)hv, PERL_MAGIC_env)) { in Perl_hv_common()
735 if (!HvARRAY(hv)) { in Perl_hv_common()
738 || (SvRMAGICAL((const SV *)hv) in Perl_hv_common()
739 && mg_find((const SV *)hv, PERL_MAGIC_env)) in Perl_hv_common()
746 HvARRAY(hv) = (HE**)array; in Perl_hv_common()
783 if (HvSHAREKEYS(hv)) in Perl_hv_common()
791 if (!HvARRAY(hv)) entry = NULL; in Perl_hv_common()
795 entry = (HvARRAY(hv))[hash & (I32) HvMAX(hv)]; in Perl_hv_common()
854 else if (hv == PL_strtab) { in Perl_hv_common()
868 HvHASKFLAGS_on(hv); in Perl_hv_common()
873 if (SvMAGICAL(hv)) { in Perl_hv_common()
887 HvPLACEHOLDERS(hv)--; in Perl_hv_common()
891 HvPLACEHOLDERS(hv)--; in Perl_hv_common()
914 && SvRMAGICAL((const SV *)hv) in Perl_hv_common()
915 && mg_find((const SV *)hv, PERL_MAGIC_env)) { in Perl_hv_common()
921 return hv_common(hv, keysv, key, klen, flags, in Perl_hv_common()
928 if (!entry && SvREADONLY(hv) && !(action & HV_FETCH_ISEXISTS)) { in Perl_hv_common()
941 if (SvMAGICAL(hv)) { in Perl_hv_common()
953 return hv_common(hv, keysv, key, klen, flags, in Perl_hv_common()
963 if (!HvARRAY(hv)) { in Perl_hv_common()
971 HvARRAY(hv) = (HE**)array; in Perl_hv_common()
974 oentry = &(HvARRAY(hv))[hash & (I32) xhv->xhv_max]; in Perl_hv_common()
978 if (LIKELY(HvSHAREKEYS(hv))) { in Perl_hv_common()
982 else if (UNLIKELY(hv == PL_strtab)) { in Perl_hv_common()
1023 if (HvHasAUX(hv)) { in Perl_hv_common()
1034 HvAUX(hv)->xhv_rand= (U32)PL_hash_rand_bits; in Perl_hv_common()
1039 HvPLACEHOLDERS(hv)++; in Perl_hv_common()
1041 HvHASKFLAGS_on(hv); in Perl_hv_common()
1046 const U32 items = (U32)HvPLACEHOLDERS_get(hv); in Perl_hv_common()
1049 && !SvREADONLY(hv) /* but is not a restricted hash */) { in Perl_hv_common()
1060 clear_placeholders(hv, items); in Perl_hv_common()
1062 hsplit(hv, oldsize, oldsize * 2); in Perl_hv_common()
1064 hsplit(hv, oldsize, oldsize * 2); in Perl_hv_common()
1074 S_hv_magic_check(HV *hv, bool *needs_copy, bool *needs_store) in S_hv_magic_check() argument
1076 const MAGIC *mg = SvMAGIC(hv); in S_hv_magic_check()
1110 Perl_hv_scalar(pTHX_ HV *hv) in Perl_hv_scalar() argument
1117 if (SvRMAGICAL(hv)) { in Perl_hv_scalar()
1118 MAGIC * const mg = mg_find((const SV *)hv, PERL_MAGIC_tied); in Perl_hv_scalar()
1120 return magic_scalarpack(hv, mg); in Perl_hv_scalar()
1126 u = HvUSEDKEYS(hv); in Perl_hv_scalar()
1160 Perl_hv_pushkv(pTHX_ HV *hv, U32 flags) in Perl_hv_pushkv() argument
1163 bool tied = SvRMAGICAL(hv) && (mg_find(MUTABLE_SV(hv), PERL_MAGIC_tied) in Perl_hv_pushkv()
1165 || mg_find(MUTABLE_SV(hv), PERL_MAGIC_env) in Perl_hv_pushkv()
1171 (void)hv_iterinit(hv); in Perl_hv_pushkv()
1175 while ((entry = hv_iternext(hv))) { in Perl_hv_pushkv()
1180 rpp_push_1(hv_iterval(hv, entry)); in Perl_hv_pushkv()
1184 Size_t nkeys = HvUSEDKEYS(hv); in Perl_hv_pushkv()
1197 while ((entry = hv_iternext(hv))) { in Perl_hv_pushkv()
1227 Perl_hv_bucket_ratio(pTHX_ HV *hv) in Perl_hv_bucket_ratio() argument
1233 if (SvRMAGICAL(hv)) { in Perl_hv_bucket_ratio()
1234 MAGIC * const mg = mg_find((const SV *)hv, PERL_MAGIC_tied); in Perl_hv_bucket_ratio()
1236 return magic_scalarpack(hv, mg); in Perl_hv_bucket_ratio()
1239 if (HvUSEDKEYS((HV *)hv)) { in Perl_hv_bucket_ratio()
1242 (long)HvFILL(hv), (long)HvMAX(hv) + 1); in Perl_hv_bucket_ratio()
1280 S_hv_delete_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen, in S_hv_delete_common() argument
1294 if (SvMAGICAL(hv)) { in S_hv_delete_common()
1297 hv_magic_check (hv, &needs_copy, &needs_store); in S_hv_delete_common()
1301 entry = (HE *) hv_common(hv, keysv, key, klen, in S_hv_delete_common()
1319 else if (mg_find((const SV *)hv, PERL_MAGIC_env)) { in S_hv_delete_common()
1334 xhv = (XPVHV*)SvANY(hv); in S_hv_delete_common()
1335 if (!HvTOTALKEYS(hv)) in S_hv_delete_common()
1357 if (HvSHAREKEYS(hv)) in S_hv_delete_common()
1364 first_entry = oentry = &(HvARRAY(hv))[hash & (I32) HvMAX(hv)]; in S_hv_delete_common()
1408 if (hv == PL_strtab) { in S_hv_delete_common()
1422 if (SvREADONLY(hv) && sv && SvREADONLY(sv)) { in S_hv_delete_common()
1434 if (SvREADONLY(hv)) { in S_hv_delete_common()
1438 HvPLACEHOLDERS(hv)++; in S_hv_delete_common()
1443 if (HvHasAUX(hv) && entry == HvAUX(hv)->xhv_eiter /* HvEITER(hv) */) { in S_hv_delete_common()
1444 HvLAZYDEL_on(hv); in S_hv_delete_common()
1447 if (HvHasAUX(hv) && HvLAZYDEL(hv) && in S_hv_delete_common()
1448 entry == HeNEXT(HvAUX(hv)->xhv_eiter)) in S_hv_delete_common()
1449 HeNEXT(HvAUX(hv)->xhv_eiter) = HeNEXT(entry); in S_hv_delete_common()
1454 HvHASKFLAGS_off(hv); in S_hv_delete_common()
1460 if (sv && SvTYPE(sv) == SVt_PVGV && HvHasENAME(hv)) { in S_hv_delete_common()
1467 && (klen != 6 || hv!=PL_defstash || memNE(key,"main::",6)) in S_hv_delete_common()
1558 && HvHasENAME(hv)) in S_hv_delete_common()
1559 mro_method_changed_in(hv); in S_hv_delete_common()
1570 if (mro_changes == 1) mro_isa_changed_in(hv); in S_hv_delete_common()
1578 if (SvREADONLY(hv)) { in S_hv_delete_common()
1612 S_large_hash_heuristic(pTHX_ HV *hv, STRLEN size) { in S_large_hash_heuristic() argument
1614 && !SvOBJECT(hv) in S_large_hash_heuristic()
1615 && !(HvHasAUX(hv) && HvENAME_get(hv))) { in S_large_hash_heuristic()
1625 S_hsplit(pTHX_ HV *hv, STRLEN const oldsize, STRLEN newsize) in S_hsplit() argument
1628 char *a = (char*) HvARRAY(hv); in S_hsplit()
1650 HvARRAY(hv) = (HE**) a; in S_hsplit()
1651 HvMAX(hv) = newsize - 1; in S_hsplit()
1655 if (!HvTOTALKEYS(hv)) /* skip rest if no entries */ in S_hsplit()
1659 if (LARGE_HASH_HEURISTIC(hv, HvTOTALKEYS(hv))) in S_hsplit()
1660 HvSHAREKEYS_off(hv); in S_hsplit()
1722 Perl_hv_ksplit(pTHX_ HV *hv, IV newmax) in Perl_hv_ksplit() argument
1724 XPVHV* xhv = (XPVHV*)SvANY(hv); in Perl_hv_ksplit()
1755 a = (char *) HvARRAY(hv); in Perl_hv_ksplit()
1758 U32 was_ook = HvHasAUX(hv); in Perl_hv_ksplit()
1760 hsplit(hv, oldsize, newsize); in Perl_hv_ksplit()
1762 if (was_ook && HvHasAUX(hv) && HvTOTALKEYS(hv)) { in Perl_hv_ksplit()
1764 HvAUX(hv)->xhv_rand = (U32)PL_hash_rand_bits; in Perl_hv_ksplit()
1768 if (LARGE_HASH_HEURISTIC(hv, newmax)) in Perl_hv_ksplit()
1769 HvSHAREKEYS_off(hv); in Perl_hv_ksplit()
1772 HvARRAY(hv) = (HE **) a; in Perl_hv_ksplit()
1779 #define HV_SET_MAX_ADJUSTED_FOR_KEYS(hv,hv_max,hv_keys) STMT_START {\ argument
1787 HvMAX(hv) = hv_max; \
1803 HV * const hv = newHV(); in Perl_newHVhv() local
1807 return hv; in Perl_newHVhv()
1820 HvSHAREKEYS_on(hv); in Perl_newHVhv()
1823 assert(HvSHAREKEYS(hv)); in Perl_newHVhv()
1827 HvSHAREKEYS_off(hv); in Perl_newHVhv()
1865 HvMAX(hv) = hv_max; in Perl_newHVhv()
1866 HvTOTALKEYS(hv) = HvTOTALKEYS(ohv); in Perl_newHVhv()
1867 HvARRAY(hv) = ents; in Perl_newHVhv()
1876 HV_SET_MAX_ADJUSTED_FOR_KEYS(hv,hv_max,hv_keys); in Perl_newHVhv()
1884 (void)hv_store_ent(hv, keysv, val, 0); in Perl_newHVhv()
1886 (void)hv_store_flags(hv, HeKEY(entry), HeKLEN(entry), val, in Perl_newHVhv()
1893 return hv; in Perl_newHVhv()
1911 HV * const hv = newHV(); in Perl_hv_copy_hints_hv() local
1921 SAVEFREESV(hv); in Perl_hv_copy_hints_hv()
1923 HV_SET_MAX_ADJUSTED_FOR_KEYS(hv,hv_max,hv_keys); in Perl_hv_copy_hints_hv()
1933 (void)hv_store_ent(hv, heksv, sv, 0); in Perl_hv_copy_hints_hv()
1935 (void)hv_common(hv, heksv, HeKEY(entry), HeKLEN(entry), in Perl_hv_copy_hints_hv()
1943 SvREFCNT_inc_simple_void_NN(hv); in Perl_hv_copy_hints_hv()
1946 hv_magic(hv, NULL, PERL_MAGIC_hints); in Perl_hv_copy_hints_hv()
1947 return hv; in Perl_hv_copy_hints_hv()
2014 Perl_hv_clear(pTHX_ HV *hv) in Perl_hv_clear() argument
2018 if (!hv) in Perl_hv_clear()
2021 DEBUG_A(Perl_hv_assert(aTHX_ hv)); in Perl_hv_clear()
2025 PL_tmps_stack[++PL_tmps_ix] = SvREFCNT_inc_simple_NN(hv); in Perl_hv_clear()
2027 if (SvREADONLY(hv) && HvTOTALKEYS(hv)) { in Perl_hv_clear()
2029 STRLEN max = HvMAX(hv); in Perl_hv_clear()
2032 HE *entry = (HvARRAY(hv))[i]; in Perl_hv_clear()
2046 HvPLACEHOLDERS(hv)++; in Perl_hv_clear()
2052 hv_free_entries(hv); in Perl_hv_clear()
2053 HvPLACEHOLDERS_set(hv, 0); in Perl_hv_clear()
2055 if (SvRMAGICAL(hv)) in Perl_hv_clear()
2056 mg_clear(MUTABLE_SV(hv)); in Perl_hv_clear()
2058 HvHASKFLAGS_off(hv); in Perl_hv_clear()
2060 if (HvHasAUX(hv)) { in Perl_hv_clear()
2061 if(HvENAME_get(hv)) in Perl_hv_clear()
2062 mro_isa_changed_in(hv); in Perl_hv_clear()
2063 HvEITER_set(hv, NULL); in Perl_hv_clear()
2070 SvREFCNT_dec_NN(hv); in Perl_hv_clear()
2089 Perl_hv_clear_placeholders(pTHX_ HV *hv) in Perl_hv_clear_placeholders() argument
2091 const U32 items = (U32)HvPLACEHOLDERS_get(hv); in Perl_hv_clear_placeholders()
2096 clear_placeholders(hv, items); in Perl_hv_clear_placeholders()
2100 S_clear_placeholders(pTHX_ HV *hv, const U32 placeholders) in S_clear_placeholders() argument
2109 i = HvMAX(hv); in S_clear_placeholders()
2112 HE **oentry = &(HvARRAY(hv))[i]; in S_clear_placeholders()
2118 if (entry == HvEITER_get(hv)) in S_clear_placeholders()
2119 HvLAZYDEL_on(hv); in S_clear_placeholders()
2121 if (HvHasAUX(hv) && HvLAZYDEL(hv) && in S_clear_placeholders()
2122 entry == HeNEXT(HvAUX(hv)->xhv_eiter)) in S_clear_placeholders()
2123 HeNEXT(HvAUX(hv)->xhv_eiter) = HeNEXT(entry); in S_clear_placeholders()
2129 HvTOTALKEYS(hv) -= (IV)placeholders; in S_clear_placeholders()
2130 if (HvTOTALKEYS(hv) == 0) in S_clear_placeholders()
2131 HvHASKFLAGS_off(hv); in S_clear_placeholders()
2132 HvPLACEHOLDERS_set(hv, 0); in S_clear_placeholders()
2146 S_hv_free_entries(pTHX_ HV *hv) in S_hv_free_entries() argument
2153 while ((sv = Perl_hfree_next_entry(aTHX_ hv, &index)) || HvTOTALKEYS(hv)) { in S_hv_free_entries()
2169 Perl_hfree_next_entry(pTHX_ HV *hv, STRLEN *indexp) in Perl_hfree_next_entry() argument
2180 if (HvHasAUX(hv) && ((iter = HvAUX(hv)))) { in Perl_hfree_next_entry()
2184 if (entry && HvLAZYDEL(hv)) { /* was deleted earlier? */ in Perl_hfree_next_entry()
2185 HvLAZYDEL_off(hv); in Perl_hfree_next_entry()
2198 if (!((XPVHV*)SvANY(hv))->xhv_keys) in Perl_hfree_next_entry()
2201 array = HvARRAY(hv); in Perl_hfree_next_entry()
2204 if ((*indexp)++ >= HvMAX(hv)) in Perl_hfree_next_entry()
2209 ((XPVHV*) SvANY(hv))->xhv_keys--; in Perl_hfree_next_entry()
2211 if ( PL_phase != PERL_PHASE_DESTRUCT && HvHasENAME(hv) in Perl_hfree_next_entry()
2244 Perl_hv_undef_flags(pTHX_ HV *hv, U32 flags) in Perl_hv_undef_flags() argument
2249 if (!hv) in Perl_hv_undef_flags()
2251 save = cBOOL(SvREFCNT(hv)); in Perl_hv_undef_flags()
2252 DEBUG_A(Perl_hv_assert(aTHX_ hv)); in Perl_hv_undef_flags()
2264 if (PL_phase != PERL_PHASE_DESTRUCT && HvHasNAME(hv)) { in Perl_hv_undef_flags()
2266 HEK *hek = HvNAME_HEK(hv); in Perl_hv_undef_flags()
2271 hv_name_set(hv, NULL, 0, 0); in Perl_hv_undef_flags()
2276 PL_tmps_stack[++PL_tmps_ix] = SvREFCNT_inc_simple_NN(hv); in Perl_hv_undef_flags()
2284 hv_free_entries(hv); in Perl_hv_undef_flags()
2299 if (HvHasAUX(hv)) { in Perl_hv_undef_flags()
2300 struct xpvhv_aux *aux = HvAUX(hv); in Perl_hv_undef_flags()
2304 if (HvHasENAME(hv)) { in Perl_hv_undef_flags()
2306 mro_isa_changed_in(hv); in Perl_hv_undef_flags()
2309 HEKf "'\n", HEKfARG(HvENAME_HEK_NN(hv)))); in Perl_hv_undef_flags()
2310 (void)hv_deletehek(PL_stashcache, HvENAME_HEK_NN(hv), G_DISCARD); in Perl_hv_undef_flags()
2316 name = HvNAME(hv); in Perl_hv_undef_flags()
2323 HEKf "'\n", HEKfARG(HvNAME_HEK_NN(hv)))); in Perl_hv_undef_flags()
2324 (void)hv_deletehek(PL_stashcache, HvNAME_HEK_NN(hv), G_DISCARD); in Perl_hv_undef_flags()
2326 hv_name_set(hv, NULL, 0, flags); in Perl_hv_undef_flags()
2345 if(HvSTASH_IS_CLASS(hv)) { in Perl_hv_undef_flags()
2359 Safefree(HvARRAY(hv)); in Perl_hv_undef_flags()
2360 HvMAX(hv) = PERL_HASH_DEFAULT_HvMAX; /* 7 (it's a normal hash) */ in Perl_hv_undef_flags()
2361 HvARRAY(hv) = 0; in Perl_hv_undef_flags()
2365 if (SvREFCNT(hv)) in Perl_hv_undef_flags()
2366 HvPLACEHOLDERS_set(hv, 0); in Perl_hv_undef_flags()
2368 if (SvRMAGICAL(hv)) in Perl_hv_undef_flags()
2369 mg_clear(MUTABLE_SV(hv)); in Perl_hv_undef_flags()
2377 SvREFCNT_dec_NN(hv); in Perl_hv_undef_flags()
2399 Perl_hv_fill(pTHX_ HV *const hv) in Perl_hv_fill() argument
2402 HE **ents = HvARRAY(hv); in Perl_hv_fill()
2409 if (HvTOTALKEYS(hv) < 2) in Perl_hv_fill()
2410 return HvTOTALKEYS(hv); in Perl_hv_fill()
2418 HE *const *const last = ents + HvMAX(hv); in Perl_hv_fill()
2430 S_hv_auxinit(pTHX_ HV *hv) { in S_hv_auxinit() argument
2435 if (!HvHasAUX(hv)) { in S_hv_auxinit()
2436 char *array = (char *) HvARRAY(hv); in S_hv_auxinit()
2438 Newxz(array, PERL_HV_ARRAY_ALLOC_BYTES(HvMAX(hv) + 1), char); in S_hv_auxinit()
2439 HvARRAY(hv) = (HE**)array; in S_hv_auxinit()
2441 iter = Perl_hv_auxalloc(aTHX_ hv); in S_hv_auxinit()
2447 iter = HvAUX(hv); in S_hv_auxinit()
2479 Perl_hv_iterinit(pTHX_ HV *hv) in Perl_hv_iterinit() argument
2483 if (HvHasAUX(hv)) { in Perl_hv_iterinit()
2484 struct xpvhv_aux * iter = HvAUX(hv); in Perl_hv_iterinit()
2486 if (entry && HvLAZYDEL(hv)) { /* was deleted earlier? */ in Perl_hv_iterinit()
2487 HvLAZYDEL_off(hv); in Perl_hv_iterinit()
2496 hv_auxinit(hv); in Perl_hv_iterinit()
2500 return HvTOTALKEYS(hv); in Perl_hv_iterinit()
2512 Perl_hv_riter_p(pTHX_ HV *hv) { in Perl_hv_riter_p() argument
2517 iter = HvHasAUX(hv) ? HvAUX(hv) : hv_auxinit(hv); in Perl_hv_riter_p()
2530 Perl_hv_eiter_p(pTHX_ HV *hv) { in Perl_hv_eiter_p() argument
2535 iter = HvHasAUX(hv) ? HvAUX(hv) : hv_auxinit(hv); in Perl_hv_eiter_p()
2548 Perl_hv_riter_set(pTHX_ HV *hv, I32 riter) { in Perl_hv_riter_set() argument
2553 if (HvHasAUX(hv)) { in Perl_hv_riter_set()
2554 iter = HvAUX(hv); in Perl_hv_riter_set()
2559 iter = hv_auxinit(hv); in Perl_hv_riter_set()
2565 Perl_hv_rand_set(pTHX_ HV *hv, U32 new_xhv_rand) { in Perl_hv_rand_set() argument
2571 if (HvHasAUX(hv)) { in Perl_hv_rand_set()
2572 iter = HvAUX(hv); in Perl_hv_rand_set()
2574 iter = hv_auxinit(hv); in Perl_hv_rand_set()
2591 Perl_hv_eiter_set(pTHX_ HV *hv, HE *eiter) { in Perl_hv_eiter_set() argument
2596 if (HvHasAUX(hv)) { in Perl_hv_eiter_set()
2597 iter = HvAUX(hv); in Perl_hv_eiter_set()
2604 iter = hv_auxinit(hv); in Perl_hv_eiter_set()
2635 Perl_hv_name_set(pTHX_ HV *hv, const char *name, U32 len, U32 flags) in Perl_hv_name_set() argument
2646 if (HvHasAUX(hv)) { in Perl_hv_name_set()
2647 iter = HvAUX(hv); in Perl_hv_name_set()
2651 HEK ** const this_name = HvAUX(hv)->xhv_name_u.xhvnameu_names; in Perl_hv_name_set()
2698 iter = hv_auxinit(hv); in Perl_hv_name_set()
2740 Perl_hv_ename_add(pTHX_ HV *hv, const char *name, U32 len, U32 flags) in Perl_hv_ename_add() argument
2742 struct xpvhv_aux *aux = HvHasAUX(hv) ? HvAUX(hv) : hv_auxinit(hv); in Perl_hv_ename_add()
2803 Perl_hv_ename_delete(pTHX_ HV *hv, const char *name, U32 len, U32 flags) in Perl_hv_ename_delete() argument
2812 if (!HvHasAUX(hv)) return; in Perl_hv_ename_delete()
2814 aux = HvAUX(hv); in Perl_hv_ename_delete()
2868 Perl_hv_backreferences_p(pTHX_ HV *hv) { in Perl_hv_backreferences_p() argument
2872 struct xpvhv_aux * const iter = HvHasAUX(hv) ? HvAUX(hv) : hv_auxinit(hv); in Perl_hv_backreferences_p()
2878 Perl_hv_kill_backrefs(pTHX_ HV *hv) { in Perl_hv_kill_backrefs() argument
2883 if (!HvHasAUX(hv)) in Perl_hv_kill_backrefs()
2886 av = HvAUX(hv)->xhv_backreferences; in Perl_hv_kill_backrefs()
2889 HvAUX(hv)->xhv_backreferences = 0; in Perl_hv_kill_backrefs()
2890 Perl_sv_kill_backrefs(aTHX_ MUTABLE_SV(hv), av); in Perl_hv_kill_backrefs()
2929 Perl_hv_iternext_flags(pTHX_ HV *hv, I32 flags) in Perl_hv_iternext_flags() argument
2938 if (!HvHasAUX(hv)) { in Perl_hv_iternext_flags()
2942 hv_iterinit(hv); in Perl_hv_iternext_flags()
2944 else if (!HvARRAY(hv)) { in Perl_hv_iternext_flags()
2987 Newxz(array, PERL_HV_ARRAY_ALLOC_BYTES(HvMAX(hv) + 1), char); in Perl_hv_iternext_flags()
2988 HvARRAY(hv) = (HE**)array; in Perl_hv_iternext_flags()
2991 iter = HvAUX(hv); in Perl_hv_iternext_flags()
2994 if (SvMAGICAL(hv) && SvRMAGICAL(hv)) { in Perl_hv_iternext_flags()
2995 if ( ( mg = mg_find((const SV *)hv, PERL_MAGIC_tied) ) ) { in Perl_hv_iternext_flags()
3008 HvLAZYDEL_on(hv); /* make sure entry gets freed */ in Perl_hv_iternext_flags()
3015 magic_nextpack(MUTABLE_SV(hv),mg,key); in Perl_hv_iternext_flags()
3025 HvLAZYDEL_off(hv); in Perl_hv_iternext_flags()
3030 if (!entry && SvRMAGICAL((const SV *)hv) in Perl_hv_iternext_flags()
3031 && mg_find((const SV *)hv, PERL_MAGIC_env)) { in Perl_hv_iternext_flags()
3037 assert (HvARRAY(hv)); in Perl_hv_iternext_flags()
3068 ? HvTOTALKEYS(hv) : HvUSEDKEYS(hv)) { in Perl_hv_iternext_flags()
3069 STRLEN max = HvMAX(hv); in Perl_hv_iternext_flags()
3082 entry = (HvARRAY(hv))[ PERL_HASH_ITER_BUCKET(iter) & max ]; in Perl_hv_iternext_flags()
3102 if (oldentry && HvLAZYDEL(hv)) { /* was deleted earlier? */ in Perl_hv_iternext_flags()
3103 HvLAZYDEL_off(hv); in Perl_hv_iternext_flags()
3166 Perl_hv_iterval(pTHX_ HV *hv, HE *entry) in Perl_hv_iterval() argument
3170 if (SvRMAGICAL(hv)) { in Perl_hv_iterval()
3171 if (mg_find((const SV *)hv, PERL_MAGIC_tied)) { in Perl_hv_iterval()
3174 mg_copy(MUTABLE_SV(hv), sv, (char*)HeKEY_sv(entry), HEf_SVKEY); in Perl_hv_iterval()
3176 mg_copy(MUTABLE_SV(hv), sv, HeKEY(entry), HeKLEN(entry)); in Perl_hv_iterval()
3193 Perl_hv_iternextsv(pTHX_ HV *hv, char **key, I32 *retlen) in Perl_hv_iternextsv() argument
3195 HE * const he = hv_iternext_flags(hv, 0); in Perl_hv_iternextsv()
3202 return hv_iterval(hv, he); in Perl_hv_iternextsv()
3451 Perl_hv_placeholders_p(pTHX_ HV *hv) in Perl_hv_placeholders_p() argument
3453 MAGIC *mg = mg_find((const SV *)hv, PERL_MAGIC_rhash); in Perl_hv_placeholders_p()
3458 mg = sv_magicext(MUTABLE_SV(hv), 0, PERL_MAGIC_rhash, 0, 0, 0); in Perl_hv_placeholders_p()
3476 Perl_hv_placeholders_get(pTHX_ const HV *hv) in Perl_hv_placeholders_get() argument
3478 MAGIC * const mg = mg_find((const SV *)hv, PERL_MAGIC_rhash); in Perl_hv_placeholders_get()
3495 Perl_hv_placeholders_set(pTHX_ HV *hv, I32 ph) in Perl_hv_placeholders_set() argument
3497 MAGIC * const mg = mg_find((const SV *)hv, PERL_MAGIC_rhash); in Perl_hv_placeholders_set()
3504 if (!sv_magicext(MUTABLE_SV(hv), 0, PERL_MAGIC_rhash, 0, 0, ph)) in Perl_hv_placeholders_set()
3563 HV *hv; in Perl_refcounted_he_chain_2hv() local
3573 hv = newHV(); in Perl_refcounted_he_chain_2hv()
3577 HvSHAREKEYS_on(hv); in Perl_refcounted_he_chain_2hv()
3579 max = HvMAX(hv); in Perl_refcounted_he_chain_2hv()
3580 if (!HvARRAY(hv)) { in Perl_refcounted_he_chain_2hv()
3583 HvARRAY(hv) = (HE**)array; in Perl_refcounted_he_chain_2hv()
3593 HE **oentry = &((HvARRAY(hv))[hash & max]); in Perl_refcounted_he_chain_2hv()
3643 HvTOTALKEYS(hv)++; in Perl_refcounted_he_chain_2hv()
3650 clear_placeholders(hv, placeholders); in Perl_refcounted_he_chain_2hv()
3656 HvHASKFLAGS_on(hv); in Perl_refcounted_he_chain_2hv()
3657 DEBUG_A(Perl_hv_assert(aTHX_ hv)); in Perl_refcounted_he_chain_2hv()
3659 return hv; in Perl_refcounted_he_chain_2hv()
4133 Perl_hv_assert(pTHX_ HV *hv) in Perl_hv_assert() argument
4140 const I32 riter = HvRITER_get(hv); in Perl_hv_assert()
4141 HE *eiter = HvEITER_get(hv); in Perl_hv_assert()
4145 (void)hv_iterinit(hv); in Perl_hv_assert()
4147 while ((entry = hv_iternext_flags(hv, HV_ITERNEXT_WANTPLACEHOLDERS))) { in Perl_hv_assert()
4167 if (!SvTIED_mg((const SV *)hv, PERL_MAGIC_tied)) { in Perl_hv_assert()
4169 const int nhashkeys = HvUSEDKEYS(hv); in Perl_hv_assert()
4170 const int nhashplaceholders = HvPLACEHOLDERS_get(hv); in Perl_hv_assert()
4181 if (withflags && ! HvHASKFLAGS(hv)) { in Perl_hv_assert()
4188 sv_dump(MUTABLE_SV(hv)); in Perl_hv_assert()
4190 HvRITER_set(hv, riter); /* Restore hash iterator state */ in Perl_hv_assert()
4191 HvEITER_set(hv, eiter); in Perl_hv_assert()