Lines Matching defs:cv
24 =for apidoc Amx|PADLIST *|CvPADLIST|CV *cv
26 CV's can have CvPADLIST(cv) set to point to a PADLIST. This is the CV's
163 Perl_set_padlist(CV * cv, PADLIST *padlist){
172 assert(!CvISXSUB(cv));
173 ((XPVCV*)MUTABLE_PTR(SvANY(cv)))->xcv_padlist_u.xcv_padlist = padlist;
297 Perl_cv_undef(pTHX_ CV *cv)
300 cv_undef_flags(cv, 0);
304 Perl_cv_undef_flags(pTHX_ CV *cv, U32 flags)
309 SvANY(&cvbody) = SvANY(cv);
314 "CV undef: cv=0x%" UVxf " comppad=0x%" UVxf "\n",
315 PTR2UV(cv), PTR2UV(PL_comppad))
329 assert(SvTYPE(cv) == SVt_PVCV || SvTYPE(cv) == SVt_PVFM); /*unsafe is safe */
331 assert(SvTYPE(cv) == SVt_PVCV);
358 else Perl_warn(aTHX_ "Slab leaked from cv %p", (void*)cv);
362 else { /* don't bother checking if CvXSUB(cv) is true, less branching */
365 SvPOK_off(MUTABLE_SV(cv)); /* forget prototype */
366 sv_unmagic((SV *)cv, PERL_MAGIC_checkcall);
372 else CvGV_set(cv, NULL);
384 subs to the outer of this cv. */
387 "Pad undef: cv=0x%" UVxf " padlist=0x%" UVxf " comppad=0x%" UVxf "\n",
388 PTR2UV(cv), PTR2UV(padlist), PTR2UV(PL_comppad))
424 && (CvOUTSIDE(innercv) == cv))
473 if (!SvREFCNT(cv)) {
483 /* CvCONST_off(cv); *//* turned off below */
505 Perl_cv_forget_slab(pTHX_ CV *cv)
510 if (!cv)
512 slabbed = cBOOL(CvSLABBED(cv));
515 CvSLABBED_off(cv);
517 if (CvROOT(cv)) slab = OpSLAB(CvROOT(cv));
518 else if (CvSTART(cv)) slab = (OPSLAB *)CvSTART(cv);
520 else if (slabbed) Perl_warn(aTHX_ "Slab leaked from cv %p", (void*)cv);
1064 C<cv> is the CV in which to start the search, and seq is the current C<cop_seq>
1083 #define CvCOMPILED(cv) CvROOT(cv)
1086 #define CvLATE(cv) (CvANON(cv) || CvCLONE(cv) || SvTYPE(cv) == SVt_PVFM)
1101 S_pad_findlex(pTHX_ const char *namepv, STRLEN namelen, U32 flags, const CV* cv, U32 seq,
1107 const PADLIST * const padlist = CvPADLIST(cv);
1121 "Pad findlex cv=0x%" UVxf " searching \"%.*s\" seq=%d%s\n",
1122 PTR2UV(cv), (int)namelen, namepv, (int)seq,
1157 * instances. For now, we just test !CvUNIQUE(cv), but
1163 *out_flags = CvANON(cv) ?
1165 (!CvUNIQUE(cv) && ! CvCOMPILED(cv))
1169 "Pad findlex cv=0x%" UVxf " matched: offset=%ld (%lu,%lu)\n",
1170 PTR2UV(cv), (long)offset,
1179 "Pad findlex cv=0x%" UVxf " matched: offset=%ld flags=0x%lx index=%lu\n",
1180 PTR2UV(cv), (long)offset, (unsigned long)*out_flags,
1196 if (CvCOMPILED(cv)
1197 ? CvANON(cv) && CvCLONE(cv) && !CvCLONED(cv)
1210 if (!CvCOMPILED(cv) && (*out_flags & PAD_FAKELEX_MULTI)
1222 if (fake_offset && CvANON(cv)
1223 && CvCLONE(cv) &&!CvCLONED(cv))
1228 "Pad findlex cv=0x%" UVxf " chasing lex in outer pad\n",
1229 PTR2UV(cv)));
1231 (void) pad_findlex(namepv, namelen, flags, CvOUTSIDE(cv),
1232 CvOUTSIDE_SEQ(cv),
1239 CvDEPTH(cv) ? CvDEPTH(cv) : 1])[offset];
1241 "Pad findlex cv=0x%" UVxf " found lex=0x%" UVxf "\n",
1242 PTR2UV(cv), PTR2UV(*out_capture)));
1245 && (!CvDEPTH(cv) || !staleok)
1271 if (!CvOUTSIDE(cv))
1277 CvLATE(cv) ? NULL : &new_capture;
1282 if(CvIsMETHOD(cv))
1286 CvOUTSIDE(cv), CvOUTSIDE_SEQ(cv), 1,
1304 if (CvCOMPILED(cv) || !padlist)
1333 else if (CvLATE(cv)) {
1336 CvCLONE_on(cv);
1344 "Pad findlex cv=0x%" UVxf " saved captured sv 0x%" UVxf " at offset %ld\n",
1345 PTR2UV(cv), PTR2UV(*new_capturep), (long)new_offset));
1675 const CV *cv;
1676 for (cv = PL_compcv ;cv; cv = CvOUTSIDE(cv)) {
1677 if (cv != PL_compcv && CvCOMPILED(cv))
1679 if (CvANON(cv)) {
1681 "Pad clone on cv=0x%" UVxf "\n", PTR2UV(cv)));
1682 CvCLONE_on(cv);
1873 S_cv_dump(pTHX_ const CV *cv, const char *title)
1875 const CV * const outside = CvOUTSIDE(cv);
1882 PTR2UV(cv),
1883 (CvANON(cv) ? "ANON"
1884 : (SvTYPE(cv) == SVt_PVFM) ? "FORMAT"
1885 : (cv == PL_main_cv) ? "MAIN"
1886 : CvUNIQUE(cv) ? "UNIQUE"
1887 : CvGV(cv) ? GvNAME(CvGV(cv)) : "UNDEFINED"),
1895 if (!CvISXSUB(cv)) {
1896 /* SVPADLIST(cv) will fail an assert if CvISXSUB(cv) is true,
1899 PADLIST* const padlist = CvPADLIST(cv);
1920 static CV *S_cv_clone(pTHX_ CV *proto, CV *cv, CV *outside, HV *cloned);
1923 S_cv_clone_pad(pTHX_ CV *proto, CV *cv, CV *outside, HV *cloned,
1972 PL_compcv = cv;
1973 if (newcv) SAVEFREESV(cv); /* in case of fatal warnings */
1975 CvOUTSIDE(cv) = MUTABLE_CV(SvREFCNT_inc_simple(outside));
1979 CvPADLIST_set(cv, pad_new(padnew_CLONE|padnew_SAVE));
1980 CvPADLIST(cv)->xpadl_id = protopadlist->xpadl_id;
1989 if (outpad) CvPADLIST(cv)->xpadl_outid = CvPADLIST(outside)->xpadl_id;
2097 ? &cv
2130 S_cv_clone(aTHX_ (CV *)ppad[ix], (CV *)PL_curpad[ix], cv,
2135 if (newcv) SvREFCNT_inc_simple_void_NN(cv);
2138 if (CvCONST(cv)) {
2145 OP *o = CvSTART(cv);
2151 const_sv = PAD_BASE_SV(CvPADLIST(cv), o->op_targ);
2155 const bool was_method = cBOOL(CvNOWARN_AMBIGUOUS(cv));
2160 CvPADLIST(cv))[o->op_targ])];
2161 assert(PadnameOUTER(PadlistNAMESARRAY(CvPADLIST(cv))
2180 cUNOPx(cUNOPx(CvROOT(cv))->op_first)->op_first
2198 SvREFCNT_dec_NN(cv);
2199 cv = newCONSTSUB(CvSTASH(proto), NULL, const_sv);
2201 CvNOWARN_AMBIGUOUS_on(cv);
2205 CvCONST_off(cv);
2209 return cv;
2213 S_cv_clone(pTHX_ CV *proto, CV *cv, CV *outside, HV *cloned)
2215 const bool newcv = !cv;
2219 if (!cv) cv = MUTABLE_CV(newSV_type(SvTYPE(proto)));
2220 CvFLAGS(cv) = CvFLAGS(proto) & ~(CVf_CLONE|CVf_WEAKOUTSIDE|CVf_CVGV_RC
2222 CvCLONED_on(cv);
2224 CvFILE(cv) = CvDYNFILE(proto) ? savepv(CvFILE(proto))
2227 CvNAME_HEK_set(cv, share_hek_hek(CvNAME_HEK(proto)));
2228 else CvGV_set(cv,CvGV(proto));
2229 CvSTASH_set(cv, CvSTASH(proto));
2236 CvXSUB(cv) = CvXSUB(proto);
2237 CvXSUBANY(cv) = CvXSUBANY(proto);
2238 if (CvREFCOUNTED_ANYSV(cv) || CvCONST(cv))
2239 SvREFCNT_inc(CvXSUBANY(cv).any_sv);
2243 CvROOT(cv) = OpREFCNT_inc(CvROOT(proto));
2245 CvSTART(cv) = CvSTART(proto);
2246 CvOUTSIDE_SEQ(cv) = CvOUTSIDE_SEQ(proto);
2250 sv_setpvn(MUTABLE_SV(cv), SvPVX_const(proto), SvCUR(proto));
2252 SvUTF8_on(MUTABLE_SV(cv));
2255 mg_copy((SV *)proto, (SV *)cv, 0, 0);
2258 cv = S_cv_clone_pad(aTHX_ proto, cv, outside, cloned, newcv);
2262 if (CvOUTSIDE(cv)) cv_dump(CvOUTSIDE(cv), "Outside");
2264 cv_dump(cv, "To");
2267 return cv;
2310 Perl_cv_name(pTHX_ CV *cv, SV *sv, U32 flags)
2313 if (!isGV_with_GP(cv) && SvTYPE(cv) != SVt_PVCV) {
2314 if (sv) sv_setsv(sv,(SV *)cv);
2315 return sv ? (sv) : (SV *)cv;
2319 if (SvTYPE(cv) == SVt_PVCV) {
2320 if (CvNAMED(cv)) {
2321 if (CvLEXICAL(cv) || flags & CV_NAME_NOTQUAL)
2322 sv_sethek(retsv, CvNAME_HEK(cv));
2324 if (CvSTASH(cv) && HvNAME_HEK(CvSTASH(cv)))
2325 sv_sethek(retsv, HvNAME_HEK(CvSTASH(cv)));
2329 sv_cathek(retsv, CvNAME_HEK(cv));
2332 else if (CvLEXICAL(cv) || flags & CV_NAME_NOTQUAL)
2333 sv_sethek(retsv, GvNAME_HEK(GvEGV(CvGV(cv))));
2334 else gv_efullname3(retsv, CvGV(cv), NULL);
2336 else if (flags & CV_NAME_NOTQUAL) sv_sethek(retsv, GvNAME_HEK(cv));
2337 else gv_efullname3(retsv,(GV *)cv,NULL);
2371 CV *cv = new_cv;
2375 assert(SvTYPE(cv) == SVt_PVCV);
2376 cv = CvOUTSIDE(cv);
2377 names = PadlistNAMESARRAY(CvPADLIST(cv));
2381 innercv = (CV *)PadARRAY(PadlistARRAY(CvPADLIST(cv))[1])[i];