Lines Matching defs:cv

2323 	    if (cx->blk_sub.cv && CvDEPTH(cx->blk_sub.cv) > 1) {
2392 if (!CvLVALUE(cx->blk_sub.cv))
2412 if (!CvLVALUE(cx->blk_sub.cv)) {
2479 if (cx->blk_sub.cv && CvDEPTH(cx->blk_sub.cv) > 1) {
2524 S_get_db_sub(pTHX_ SV **svp, CV *cv)
2529 GV *gv = CvGV(cv);
2532 if ( (CvFLAGS(cv) & (CVf_ANON | CVf_CLONED))
2534 || ((GvCV(gv) != cv) && /* Could be imported, and old sub redefined. */
2535 !( (SvTYPE(*svp) == SVt_PVGV) && (GvCV((GV*)*svp) == cv)
2539 SV *tmp = newRV((SV*)cv);
2551 SvIVX(dbsv) = PTR2IV(cv); /* Do it the quickest way */
2554 if (CvXSUB(cv))
2556 cv = GvCV(PL_DBsub);
2557 return cv;
2565 register CV *cv;
2595 cv = get_cv(sym, TRUE);
2603 cv = (CV*)SvRV(sv);
2604 if (SvTYPE(cv) == SVt_PVCV)
2611 cv = (CV*)sv;
2614 if (!(cv = GvCVu((GV*)sv)))
2615 cv = sv_2cv(sv, &stash, &gv, FALSE);
2616 if (!cv) {
2628 if (!CvROOT(cv) && !CvXSUB(cv)) {
2633 if (CvANON(cv) || !(gv = CvGV(cv)))
2637 if (cv != GvCV(gv)) {
2638 cv = GvCV(gv);
2646 cv = GvCV(autogv);
2655 if (!cv)
2661 if ((PL_op->op_private & OPpENTERSUB_DB) && GvCV(PL_DBsub) && !CvNODEBUG(cv)) {
2662 cv = get_db_sub(&sv, cv);
2663 if (!cv)
2675 MUTEX_LOCK(CvMUTEXP(cv));
2676 if (CvFLAGS(cv) & CVf_LOCKED) {
2678 if (CvFLAGS(cv) & CVf_METHOD) {
2686 MUTEX_UNLOCK(CvMUTEXP(cv));
2699 sv = (SV*)cv;
2701 MUTEX_UNLOCK(CvMUTEXP(cv));
2715 MUTEX_LOCK(CvMUTEXP(cv));
2724 * otherwise grab ownership of cv. Case (3) means we look for a
2728 * ownership of cv straight away? Well, we could be recursing,
2729 * i.e. we originally tried to enter cv while another thread
2734 if (CvOWNER(cv) == thr || CvXSUB(cv))
2735 MUTEX_UNLOCK(CvMUTEXP(cv));
2741 * XXX Might it be better to release CvMUTEXP(cv) while we
2747 if ((svp = hv_fetch(thr->cvcache, (char *)cv, sizeof(cv), FALSE)))
2750 MUTEX_UNLOCK(CvMUTEXP(cv));
2751 cv = *(CV**)svp;
2754 thr, cv, SvPEEK((SV*)cv)));
2755 CvOWNER(cv) = thr;
2756 SvREFCNT_inc(cv);
2757 if (CvDEPTH(cv) == 0)
2758 SAVEDESTRUCTOR_X(unset_cvowner, (void*) cv);
2761 /* (2) => grab ownership of cv. (3) => make clone */
2762 if (!CvOWNER(cv)) {
2763 CvOWNER(cv) = thr;
2764 SvREFCNT_inc(cv);
2765 MUTEX_UNLOCK(CvMUTEXP(cv));
2768 thr, cv, SvPEEK((SV*)cv), CvSTASH(cv) ?
2769 HvNAME(CvSTASH(cv)) : "(none)"));
2774 SvREFCNT_inc(cv); /* don't let it vanish from under us */
2775 MUTEX_UNLOCK(CvMUTEXP(cv));
2778 thr, cv, SvPEEK((SV*)cv))));
2786 clonecv = cv_clone(cv);
2787 SvREFCNT_dec(cv); /* finished with this */
2788 hv_store(thr->cvcache, (char*)cv, sizeof(cv), (SV*)clonecv,0);
2790 cv = clonecv;
2791 SvREFCNT_inc(cv);
2793 DEBUG_S(if (CvDEPTH(cv) != 0)
2795 CvDEPTH(cv)));
2796 SAVEDESTRUCTOR_X(unset_cvowner, (void*) cv);
2801 if (CvXSUB(cv)) {
2803 if (CvOLDSTYLE(cv)) {
2813 fp3 = (I32(*)(int,int,int))CvXSUB(cv);
2814 items = (*fp3)(CvXSUBANY(cv).any_i32,
2854 (void)(*CvXSUB(cv))(aTHX_ cv);
2871 AV* padlist = CvPADLIST(cv);
2875 CvDEPTH(cv)++;
2876 /* XXX This would be a natural place to set C<PL_compcv = cv> so
2879 * the cv using find_runcv() when calling doeval().
2881 if (CvDEPTH(cv) >= 2) {
2883 pad_push(padlist, CvDEPTH(cv), 1);
2899 PAD_SET_CUR(padlist, CvDEPTH(cv));
2953 if (CvDEPTH(cv) == 100 && ckWARN(WARN_RECURSION)
2954 && !(PERLDB_SUB && cv == GvCV(PL_DBsub)))
2955 sub_crush_depth(cv);
2958 "%p entersub returning %p\n", thr, CvSTART(cv)));
2960 RETURNOP(CvSTART(cv));
2965 Perl_sub_crush_depth(pTHX_ CV *cv)
2967 if (CvANON(cv))
2971 gv_efullname3(tmpstr, CvGV(cv), Nullch);
3226 register CV* cv = (CV *) cvarg;
3229 thr, cv, SvPEEK((SV*)cv))));
3230 MUTEX_LOCK(CvMUTEXP(cv));
3231 DEBUG_S(if (CvDEPTH(cv) != 0)
3233 CvDEPTH(cv)));
3234 assert(thr == CvOWNER(cv));
3235 CvOWNER(cv) = 0;
3236 MUTEX_UNLOCK(CvMUTEXP(cv));
3237 SvREFCNT_dec(cv);