Lines Matching defs:cv
244 /* Assign CvGV(cv) = gv, handling weak references.
248 Perl_cvgv_set(pTHX_ CV* cv, GV* gv)
250 GV * const oldgv = CvNAMED(cv) ? NULL : SvANY(cv)->xcv_gv_u.xcv_gv;
258 if (CvCVGV_RC(cv)) {
260 CvCVGV_RC_off(cv);
263 sv_del_backref(MUTABLE_SV(oldgv), MUTABLE_SV(cv));
266 else if ((hek = CvNAME_HEK(cv))) {
268 CvLEXICAL_off(cv);
271 CvNAMED_off(cv);
272 SvANY(cv)->xcv_gv_u.xcv_gv = gv;
273 assert(!CvCVGV_RC(cv));
278 if (isGV_with_GP(gv) && GvGP(gv) && (GvCV(gv) == cv || GvFORM(gv) == cv))
279 Perl_sv_add_backref(aTHX_ MUTABLE_SV(gv), MUTABLE_SV(cv));
281 CvCVGV_RC_on(cv);
291 Perl_cvgv_from_hek(pTHX_ CV *cv)
296 assert(SvTYPE(cv) == SVt_PVCV);
297 if (!CvSTASH(cv)) return NULL;
298 ASSUME(CvNAME_HEK(cv));
299 svp = hv_fetchhek(CvSTASH(cv), CvNAME_HEK(cv), 0);
302 gv_init_pvn(gv, CvSTASH(cv), HEK_KEY(CvNAME_HEK(cv)),
303 HEK_LEN(CvNAME_HEK(cv)),
304 SVf_UTF8 * cBOOL(HEK_UTF8(CvNAME_HEK(cv))));
305 if (!CvNAMED(cv)) { /* gv_init took care of it */
306 assert (SvANY(cv)->xcv_gv_u.xcv_gv == gv);
309 unshare_hek(CvNAME_HEK(cv));
310 CvNAMED_off(cv);
311 SvANY(cv)->xcv_gv_u.xcv_gv = gv;
313 CvCVGV_RC_on(cv);
317 /* Assign CvSTASH(cv) = st, handling weak references. */
320 Perl_cvstash_set(pTHX_ CV *cv, HV *st)
322 HV *oldst = CvSTASH(cv);
327 sv_del_backref(MUTABLE_SV(oldst), MUTABLE_SV(cv));
328 SvANY(cv)->xcv_stash = st;
330 Perl_sv_add_backref(aTHX_ MUTABLE_SV(st), MUTABLE_SV(cv));
517 CV * const cv = (CV *)has_constant;
518 GvCV_set(gv,cv);
519 if (CvNAMED(cv) && CvSTASH(cv) == stash && (
520 CvNAME_HEK(cv) == GvNAME_HEK(gv)
521 || ( HEK_LEN(CvNAME_HEK(cv)) == HEK_LEN(GvNAME_HEK(gv))
522 && HEK_FLAGS(CvNAME_HEK(cv)) != HEK_FLAGS(GvNAME_HEK(gv))
523 && HEK_UTF8(CvNAME_HEK(cv)) == HEK_UTF8(GvNAME_HEK(gv))
524 && memEQ(HEK_KEY(CvNAME_HEK(cv)), GvNAME(gv), GvNAMELEN(gv))
527 CvGV_set(cv,gv);
530 CV *cv;
533 cv = newCONSTSUB_flags(stash, name, len, flags, has_constant);
536 GvCV_set(gv, (CV *)SvREFCNT_inc_simple_NN(cv));
537 assert(GvCV(gv) == cv); /* newCONSTSUB should have set this */
543 CvSTASH_set(cv, PL_curstash); /* XXX Why is this needed? */
545 cv = newSTUB(gv,1);
548 sv_usepvn_flags(MUTABLE_SV(cv), proto, protolen,
550 if ( proto_utf8 ) SvUTF8_on(MUTABLE_SV(cv));
586 static void core_xsub(pTHX_ CV* cv);
594 CV *cv, *oldcompcv = NULL;
657 cv = PL_compcv;
662 cv = MUTABLE_CV(newSV_type(SVt_PVCV));
663 GvCV_set(gv,cv);
665 CvISXSUB_on(cv);
666 CvXSUB(cv) = core_xsub;
667 PoisonPADLIST(cv);
669 CvGV_set(cv, gv); /* This stops new ATTRSUB from setting CvFILE
674 CvFILE(cv) = (char *)file;
679 (void)core_prototype((SV *)cv, name, code, &opnum);
684 CV *orig_cv = cv;
686 CvLVALUE_on(cv);
689 if ((cv = newATTRSUB_x(
703 CvLVALUE_off(cv); /* Now *that* was a neat trick. */
710 if (cv) {
715 cv_set_call_checker_flags(cv, Perl_ck_entersub_args_core, opnumsv, 0);
1062 CV *cv;
1071 cv = GvCV(gv);
1072 if (!(CvROOT(cv) || CvXSUB(cv)))
1263 CV* const cv = GvCV(gv);
1264 if (!CvROOT(cv) && !CvXSUB(cv)) {
1268 if (CvANON(cv) || CvLEXICAL(cv))
1271 stubgv = CvGV(cv);
1272 if (GvCV(stubgv) != cv) /* orphaned import */
1340 CV* cv;
1366 cv = GvCV(gv);
1368 if (!(CvROOT(cv) || CvXSUB(cv)))
1383 if (CvISXSUB(cv)) {
1406 CvSTASH_set(cv, stash);
1407 if (SvPOK(cv)) { /* Ouch! */
1410 const char *proto = CvPROTO(cv);
1412 if (SvUTF8(cv))
1413 sv_utf8_upgrade_flags_grow(tmpsv, 0, CvPROTOLEN(cv) + 2);
1417 tmpsv, proto, CvPROTOLEN(cv), SV_CATBYTES*!SvUTF8(cv)
1420 sv_setsv_nomg((SV *)cv, tmpsv);
1423 SvLEN_set(cv, SvCUR(cv) + 1);
1424 SvCUR_set(cv, ulen);
1427 sv_setpvn((SV *)cv, name, len);
1428 SvPOK_off(cv);
1430 SvUTF8_on(cv);
1431 else SvUTF8_off(cv);
1433 CvAUTOLOAD_on(cv);
1442 varstash = CvNAMED(cv) ? CvSTASH(cv) : GvSTASH(CvGV(cv));
2926 CV * cv = gp->gp_cv;
3025 if (cv) {
3026 if (SvREFCNT(cv) > 1 || SvOBJECT(cv) || UNLIKELY(in_global_destruction)) {
3027 SvREFCNT_dec_NN(cv);
3028 cv = NULL;
3071 if (cv) {
3072 PL_tmps_stack[++PL_tmps_ix] = (SV *) cv;
3115 CV * const cv = amtp->table[i];
3116 if (cv) {
3117 SvREFCNT_dec_NN(MUTABLE_SV(cv));
3183 CV* cv;
3227 cv = 0;
3228 if (gv && (cv = GvCV(gv)) && CvHASGV(cv)) {
3229 const HEK * const gvhek = CvGvNAME_HEK(cv);
3231 HvNAME_HEK(CvNAMED(cv) ? CvSTASH(cv) : GvSTASH(CvGV(cv)));
3267 cv = GvCV(gv = ngv);
3270 cp, HvNAME_get(stash), HvNAME_get(GvSTASH(CvGV(cv))),
3271 GvNAME(CvGV(cv))) );
3274 cv = MUTABLE_CV(gv);
3277 amt.table[i]=MUTABLE_CV(SvREFCNT_inc_simple(cv));
3487 CV *cv; /* This makes it easier to kee ... */
3494 if ((cv = cvp[off=add_ass_amg]) || ((cv = cvp[off = add_amg])))
3498 if((cv = cvp[off = subtr_ass_amg]) || ((cv = cvp[off = subtr_amg])))
3502 if ((cv = cvp[off=numer_amg]) || (cv = cvp[off=string_amg]))
3506 if((cv = cvp[off=string_amg]) || (cv = cvp[off=bool__amg]))
3510 if((cv = cvp[off=numer_amg]) || (cv = cvp[off=bool__amg]))
3514 if((cv = cvp[off=bool__amg])
3515 || (cv = cvp[off=numer_amg])
3516 || (cv = cvp[off=string_amg]))
3521 && ((cv = cvp[off=neg_amg]) || (cv = cvp[off=subtr_amg])))
3525 if ((cv = cvp[off=subtr_amg]))
3769 CV *cv=NULL;
3795 && ((cv = cvp[off=method+assignshift])
3802 cv = cvp[off=method]))))
3815 if ((cv = cvp[off=add_ass_amg])
3816 || ((cv = cvp[off = add_amg])
3823 if ((cv = cvp[off = subtr_ass_amg])
3824 || ((cv = cvp[off = subtr_amg])
3830 (void)((cv = cvp[off=numer_amg]) || (cv = cvp[off=string_amg]));
3833 (void)((cv = cvp[off=string_amg]) || (cv = cvp[off=bool__amg]));
3836 (void)((cv = cvp[off=numer_amg]) || (cv = cvp[off=bool__amg]));
3839 (void)((cv = cvp[off=bool__amg])
3840 || (cv = cvp[off=numer_amg])
3841 || (cv = cvp[off=string_amg]));
3842 if (cv)
3868 && ((cv = cvp[off=neg_amg]) || (cv = cvp[off=subtr_amg]))) {
3891 if ((cv = cvp[off=subtr_amg])) {
3915 if (!cv) goto not_found;
3922 && (cv = cvp[off=method])) { /* Method for right
3956 cv = ocvp[off];
3959 if (!cv && (cvp && amtp->fallback > AMGfallNEVER)) {
3960 cv = cvp[off];
3964 if (cv)
3979 if (ocvp && (cv=ocvp[nomethod_amg])) { /* Call report method */
3981 } else if (cvp && (cv=cvp[nomethod_amg])) {
4199 PUSHs(MUTABLE_SV(cv));
4335 CV *cv;
4363 cv = GvCV(gv);
4364 if (!cv) {
4367 } else if (GvMULTI(gv) && cv && SvREFCNT(cv) == 1 &&
4368 !SvOBJECT(cv) && !SvMAGICAL(cv) && !SvREADONLY(cv) &&
4369 CvSTASH(cv) == stash && !CvNAMED(cv) && CvGV(cv) == gv &&
4370 CvCONST(cv) && !CvNOWARN_AMBIGUOUS(cv) && !CvLVALUE(cv) && !CvUNIQUE(cv) &&
4371 !CvNODEBUG(cv) && !CvCLONE(cv) && !CvCLONED(cv) && !CvANON(cv) &&
4375 SV *value = SvREFCNT_inc(CvXSUBANY(cv).any_ptr);
4409 core_xsub(pTHX_ CV* cv)
4412 "&CORE::%s cannot be called directly", GvNAME(CvGV(cv))