Lines Matching refs:av
23 Perl_av_reify(pTHX_ AV *av) in Perl_av_reify() argument
28 assert(SvTYPE(av) == SVt_PVAV); in Perl_av_reify()
30 if (AvREAL(av)) in Perl_av_reify()
33 if (SvTIED_mg((const SV *)av, PERL_MAGIC_tied)) in Perl_av_reify()
36 key = AvMAX(av) + 1; in Perl_av_reify()
37 while (key > AvFILLp(av) + 1) in Perl_av_reify()
38 AvARRAY(av)[--key] = NULL; in Perl_av_reify() local
40 SV * const sv = AvARRAY(av)[--key]; in Perl_av_reify()
44 key = AvARRAY(av) - AvALLOC(av); in Perl_av_reify()
46 Zero(AvALLOC(av), key, SV*); in Perl_av_reify()
47 AvREIFY_off(av); in Perl_av_reify()
48 AvREAL_on(av); in Perl_av_reify()
66 Perl_av_extend(pTHX_ AV *av, SSize_t key) in Perl_av_extend() argument
71 assert(SvTYPE(av) == SVt_PVAV); in Perl_av_extend()
73 mg = SvTIED_mg((const SV *)av, PERL_MAGIC_tied); in Perl_av_extend()
86 Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, SV_CONST(EXTEND), G_DISCARD, 1, in Perl_av_extend()
90 av_extend_guts(av,key,&AvMAX(av),&AvALLOC(av),&AvARRAY(av)); in Perl_av_extend()
96 Perl_av_extend_guts(pTHX_ AV *av, SSize_t key, SSize_t *maxp, SV ***allocp, in Perl_av_extend_guts() argument
111 if (av && *allocp != *arrayp) { /* a shifted SV* array exists */ in Perl_av_extend_guts()
120 ary_offset = AvFILLp(av) + 1; in Perl_av_extend_guts()
122 Move(*arrayp, *allocp, AvFILLp(av)+1, SV*); in Perl_av_extend_guts()
131 to_null = *maxp - AvFILLp(av); in Perl_av_extend_guts()
190 if (av == PL_curstack) { /* Oops, grew stack (via av_store()?) */ in Perl_av_extend_guts()
217 if (av && AvREAL(av)) { in Perl_av_extend_guts()
243 S_adjust_index(pTHX_ AV *av, const MAGIC *mg, SSize_t *keyp) in S_adjust_index() argument
248 SV * const ref = SvTIED_obj(MUTABLE_SV(av), mg); in S_adjust_index()
261 *keyp += AvFILL(av) + 1; in S_adjust_index()
269 Perl_av_fetch(pTHX_ AV *av, SSize_t key, I32 lval) in Perl_av_fetch() argument
275 assert(SvTYPE(av) == SVt_PVAV); in Perl_av_fetch()
277 if (UNLIKELY(SvRMAGICAL(av))) { in Perl_av_fetch()
279 = mg_find((const SV *)av, PERL_MAGIC_tied); in Perl_av_fetch()
280 if (tied_magic || mg_find((const SV *)av, PERL_MAGIC_regdata)) { in Perl_av_fetch()
283 if (!S_adjust_index(aTHX_ av, tied_magic, &key)) in Perl_av_fetch()
288 mg_copy(MUTABLE_SV(av), sv, 0, key); in Perl_av_fetch()
298 size = AvFILLp(av) + 1; in Perl_av_fetch()
309 if (!AvARRAY(av)[key]) { in Perl_av_fetch()
311 return lval ? av_store(av,key,newSV_type(SVt_NULL)) : NULL; in Perl_av_fetch()
314 return &AvARRAY(av)[key]; in Perl_av_fetch()
340 Perl_av_store(pTHX_ AV *av, SSize_t key, SV *val) in Perl_av_store() argument
345 assert(SvTYPE(av) == SVt_PVAV); in Perl_av_store()
351 if (SvRMAGICAL(av)) { in Perl_av_store()
352 const MAGIC * const tied_magic = mg_find((const SV *)av, PERL_MAGIC_tied); in Perl_av_store()
355 if (!S_adjust_index(aTHX_ av, tied_magic, &key)) in Perl_av_store()
359 mg_copy(MUTABLE_SV(av), val, 0, key); in Perl_av_store()
367 key += AvFILL(av) + 1; in Perl_av_store()
372 if (SvREADONLY(av) && key >= AvFILL(av)) in Perl_av_store()
375 if (!AvREAL(av) && AvREIFY(av)) in Perl_av_store()
376 av_reify(av); in Perl_av_store()
377 if (key > AvMAX(av)) in Perl_av_store()
378 av_extend(av,key); in Perl_av_store()
379 ary = AvARRAY(av); in Perl_av_store()
380 if (AvFILLp(av) < key) { in Perl_av_store()
381 if (!AvREAL(av)) { in Perl_av_store()
382 if (av == PL_curstack && key > PL_stack_sp - PL_stack_base) in Perl_av_store()
385 ary[++AvFILLp(av)] = NULL; in Perl_av_store()
386 } while (AvFILLp(av) < key); in Perl_av_store()
388 AvFILLp(av) = key; in Perl_av_store()
390 else if (AvREAL(av)) in Perl_av_store()
397 if (SvSMAGICAL(av)) { in Perl_av_store()
398 const MAGIC *mg = SvMAGIC(av); in Perl_av_store()
436 sv_magic(val, MUTABLE_SV(av), toLOWER(mg->mg_type), 0, key); in Perl_av_store()
444 mg_set(MUTABLE_SV(av)); in Perl_av_store()
468 AV * const av = newAV(); in Perl_av_make() local
471 assert(SvTYPE(av) == SVt_PVAV); in Perl_av_make()
479 AvALLOC(av) = ary; in Perl_av_make()
480 AvARRAY(av) = ary; in Perl_av_make()
481 AvMAX(av) = size - 1; in Perl_av_make()
484 PL_tmps_stack[++PL_tmps_ix] = (SV*)av; in Perl_av_make()
495 AvFILLp(av)++; in Perl_av_make()
507 return av; in Perl_av_make()
634 Perl_av_clear(pTHX_ AV *av) in Perl_av_clear() argument
640 assert(SvTYPE(av) == SVt_PVAV); in Perl_av_clear()
643 if (SvREFCNT(av) == 0) { in Perl_av_clear()
648 if (SvREADONLY(av)) in Perl_av_clear()
652 if (SvRMAGICAL(av)) { in Perl_av_clear()
653 const MAGIC* const mg = SvMAGIC(av); in Perl_av_clear()
657 mg_clear(MUTABLE_SV(av)); in Perl_av_clear()
660 if (AvMAX(av) < 0) in Perl_av_clear()
663 if ((real = cBOOL(AvREAL(av)))) { in Perl_av_clear()
664 SV** const ary = AvARRAY(av); in Perl_av_clear()
665 SSize_t index = AvFILLp(av) + 1; in Perl_av_clear()
669 PL_tmps_stack[++PL_tmps_ix] = SvREFCNT_inc_simple_NN(av); in Perl_av_clear()
680 AvFILLp(av) = -1; in Perl_av_clear()
681 av_remove_offset(av); in Perl_av_clear()
689 SvREFCNT_dec_NN(av); in Perl_av_clear()
708 Perl_av_undef(pTHX_ AV *av) in Perl_av_undef() argument
714 assert(SvTYPE(av) == SVt_PVAV); in Perl_av_undef()
717 if (SvTIED_mg((const SV *)av, PERL_MAGIC_tied)) in Perl_av_undef()
718 av_fill(av, -1); in Perl_av_undef()
720 real = cBOOL(AvREAL(av)); in Perl_av_undef()
722 SSize_t key = AvFILLp(av) + 1; in Perl_av_undef()
726 PL_tmps_stack[++PL_tmps_ix] = SvREFCNT_inc_simple_NN(av); in Perl_av_undef()
730 SvREFCNT_dec(AvARRAY(av)[--key]); in Perl_av_undef()
733 Safefree(AvALLOC(av)); in Perl_av_undef()
734 AvALLOC(av) = NULL; in Perl_av_undef()
735 AvARRAY(av) = NULL; in Perl_av_undef()
736 AvMAX(av) = AvFILLp(av) = -1; in Perl_av_undef()
738 if(SvRMAGICAL(av)) mg_clear(MUTABLE_SV(av)); in Perl_av_undef()
745 SvREFCNT_dec_NN(av); in Perl_av_undef()
781 Perl_av_push(pTHX_ AV *av, SV *val) in Perl_av_push() argument
786 assert(SvTYPE(av) == SVt_PVAV); in Perl_av_push()
788 if (SvREADONLY(av)) in Perl_av_push()
791 if ((mg = SvTIED_mg((const SV *)av, PERL_MAGIC_tied))) { in Perl_av_push()
792 Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, SV_CONST(PUSH), G_DISCARD, 1, in Perl_av_push()
796 av_store(av,AvFILLp(av)+1,val); in Perl_av_push()
812 Perl_av_pop(pTHX_ AV *av) in Perl_av_pop() argument
818 assert(SvTYPE(av) == SVt_PVAV); in Perl_av_pop()
820 if (SvREADONLY(av)) in Perl_av_pop()
822 if ((mg = SvTIED_mg((const SV *)av, PERL_MAGIC_tied))) { in Perl_av_pop()
823 retval = Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, SV_CONST(POP), 0, 0); in Perl_av_pop()
828 if (AvFILL(av) < 0) in Perl_av_pop()
830 retval = AvARRAY(av)[AvFILLp(av)]; in Perl_av_pop()
831 AvARRAY(av)[AvFILLp(av)--] = NULL; in Perl_av_pop() local
832 if (SvSMAGICAL(av)) in Perl_av_pop()
833 mg_set(MUTABLE_SV(av)); in Perl_av_pop()
871 Perl_av_unshift(pTHX_ AV *av, SSize_t num) in Perl_av_unshift() argument
877 assert(SvTYPE(av) == SVt_PVAV); in Perl_av_unshift()
879 if (SvREADONLY(av)) in Perl_av_unshift()
882 if ((mg = SvTIED_mg((const SV *)av, PERL_MAGIC_tied))) { in Perl_av_unshift()
883 Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, SV_CONST(UNSHIFT), in Perl_av_unshift()
890 if (!AvREAL(av) && AvREIFY(av)) in Perl_av_unshift()
891 av_reify(av); in Perl_av_unshift()
892 i = AvARRAY(av) - AvALLOC(av); in Perl_av_unshift()
898 AvMAX(av) += i; in Perl_av_unshift()
899 AvFILLp(av) += i; in Perl_av_unshift()
900 AvARRAY(av) = AvARRAY(av) - i; in Perl_av_unshift()
902 Zero(AvARRAY(av), i, SV*); in Perl_av_unshift()
907 const SSize_t i = AvFILLp(av); in Perl_av_unshift()
911 av_extend(av, i + num); in Perl_av_unshift()
912 AvFILLp(av) += num; in Perl_av_unshift()
913 ary = AvARRAY(av); in Perl_av_unshift()
919 AvMAX(av) -= slide; in Perl_av_unshift()
920 AvFILLp(av) -= slide; in Perl_av_unshift()
921 AvARRAY(av) = AvARRAY(av) + slide; in Perl_av_unshift()
938 Perl_av_shift(pTHX_ AV *av) in Perl_av_shift() argument
944 assert(SvTYPE(av) == SVt_PVAV); in Perl_av_shift()
946 if (SvREADONLY(av)) in Perl_av_shift()
948 if ((mg = SvTIED_mg((const SV *)av, PERL_MAGIC_tied))) { in Perl_av_shift()
949 retval = Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, SV_CONST(SHIFT), 0, 0); in Perl_av_shift()
954 if (AvFILL(av) < 0) in Perl_av_shift()
956 retval = *AvARRAY(av); in Perl_av_shift()
958 if (AvREAL(av)) in Perl_av_shift()
959 *AvARRAY(av) = NULL; in Perl_av_shift()
961 AvARRAY(av) = AvARRAY(av) + 1; in Perl_av_shift()
962 AvMAX(av)--; in Perl_av_shift()
963 AvFILLp(av)--; in Perl_av_shift()
964 if (SvSMAGICAL(av)) in Perl_av_shift()
965 mg_set(MUTABLE_SV(av)); in Perl_av_shift()
996 Perl_av_len(pTHX_ AV *av) in Perl_av_len() argument
1000 return av_top_index(av); in Perl_av_len()
1018 Perl_av_fill(pTHX_ AV *av, SSize_t fill) in Perl_av_fill() argument
1023 assert(SvTYPE(av) == SVt_PVAV); in Perl_av_fill()
1027 if ((mg = SvTIED_mg((const SV *)av, PERL_MAGIC_tied))) { in Perl_av_fill()
1030 Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, SV_CONST(STORESIZE), G_DISCARD, in Perl_av_fill()
1034 if (fill <= AvMAX(av)) { in Perl_av_fill()
1035 SSize_t key = AvFILLp(av); in Perl_av_fill()
1036 SV** const ary = AvARRAY(av); in Perl_av_fill()
1038 if (AvREAL(av)) { in Perl_av_fill()
1049 AvFILLp(av) = fill; in Perl_av_fill()
1050 if (SvSMAGICAL(av)) in Perl_av_fill()
1051 mg_set(MUTABLE_SV(av)); in Perl_av_fill()
1054 (void)av_store(av,fill,NULL); in Perl_av_fill()
1071 Perl_av_delete(pTHX_ AV *av, SSize_t key, I32 flags) in Perl_av_delete() argument
1076 assert(SvTYPE(av) == SVt_PVAV); in Perl_av_delete()
1078 if (SvREADONLY(av)) in Perl_av_delete()
1081 if (SvRMAGICAL(av)) { in Perl_av_delete()
1083 = mg_find((const SV *)av, PERL_MAGIC_tied); in Perl_av_delete()
1084 if ((tied_magic || mg_find((const SV *)av, PERL_MAGIC_regdata))) { in Perl_av_delete()
1087 if (!S_adjust_index(aTHX_ av, tied_magic, &key)) in Perl_av_delete()
1090 svp = av_fetch(av, key, TRUE); in Perl_av_delete()
1104 key += AvFILL(av) + 1; in Perl_av_delete()
1109 if (key > AvFILLp(av)) in Perl_av_delete()
1112 if (!AvREAL(av) && AvREIFY(av)) in Perl_av_delete()
1113 av_reify(av); in Perl_av_delete()
1114 sv = AvARRAY(av)[key]; in Perl_av_delete()
1115 AvARRAY(av)[key] = NULL; in Perl_av_delete() local
1116 if (key == AvFILLp(av)) { in Perl_av_delete()
1118 AvFILLp(av)--; in Perl_av_delete()
1119 } while (--key >= 0 && !AvARRAY(av)[key]); in Perl_av_delete()
1121 if (SvSMAGICAL(av)) in Perl_av_delete()
1122 mg_set(MUTABLE_SV(av)); in Perl_av_delete()
1129 else if (AvREAL(av)) in Perl_av_delete()
1148 Perl_av_exists(pTHX_ AV *av, SSize_t key) in Perl_av_exists() argument
1151 assert(SvTYPE(av) == SVt_PVAV); in Perl_av_exists()
1153 if (SvRMAGICAL(av)) { in Perl_av_exists()
1155 = mg_find((const SV *)av, PERL_MAGIC_tied); in Perl_av_exists()
1157 = mg_find((const SV *)av, PERL_MAGIC_regdata); in Perl_av_exists()
1162 if (!S_adjust_index(aTHX_ av, tied_magic, &key)) in Perl_av_exists()
1167 if (key <= AvFILL(av)) in Perl_av_exists()
1174 mg_copy(MUTABLE_SV(av), sv, 0, key); in Perl_av_exists()
1188 key += AvFILL(av) + 1; in Perl_av_exists()
1193 if (key <= AvFILLp(av) && AvARRAY(av)[key]) in Perl_av_exists()
1195 if (SvSMAGICAL(AvARRAY(av)[key]) in Perl_av_exists()
1196 && mg_find(AvARRAY(av)[key], PERL_MAGIC_nonelem)) in Perl_av_exists()
1205 S_get_aux_mg(pTHX_ AV *av) { in S_get_aux_mg() argument
1209 assert(SvTYPE(av) == SVt_PVAV); in S_get_aux_mg()
1211 mg = mg_find((const SV *)av, PERL_MAGIC_arylen_p); in S_get_aux_mg()
1214 mg = sv_magicext(MUTABLE_SV(av), 0, PERL_MAGIC_arylen_p, in S_get_aux_mg()
1224 Perl_av_arylen_p(pTHX_ AV *av) { in Perl_av_arylen_p() argument
1225 MAGIC *const mg = get_aux_mg(av); in Perl_av_arylen_p()
1228 assert(SvTYPE(av) == SVt_PVAV); in Perl_av_arylen_p()
1234 Perl_av_iter_p(pTHX_ AV *av) { in Perl_av_iter_p() argument
1235 MAGIC *const mg = get_aux_mg(av); in Perl_av_iter_p()
1238 assert(SvTYPE(av) == SVt_PVAV); in Perl_av_iter_p()
1254 Perl_av_nonelem(pTHX_ AV *av, SSize_t ix) { in Perl_av_nonelem() argument
1257 if (!av_store(av,ix,sv)) in Perl_av_nonelem()