From: Nicholas Clark Date: Mon, 20 Feb 2006 10:40:59 +0000 (+0000) Subject: Add a new CvISXSUB() macro, for abstracting the test as to whether a X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=aed2304a0354e5cd0ca22ed008e1922f54b0f438;p=p5sagit%2Fp5-mst-13.2.git Add a new CvISXSUB() macro, for abstracting the test as to whether a PVCV is perl or XS. p4raw-id: //depot/perl@27241 --- diff --git a/cv.h b/cv.h index 9f2594a..7e60be7 100644 --- a/cv.h +++ b/cv.h @@ -153,7 +153,7 @@ Returns the stash of the CV. #define CvWEAKOUTSIDE_on(cv) (CvFLAGS(cv) |= CVf_WEAKOUTSIDE) #define CvWEAKOUTSIDE_off(cv) (CvFLAGS(cv) &= ~CVf_WEAKOUTSIDE) - +#define CvISXSUB(cv) (CvXSUB(cv) ? TRUE : FALSE) /* =head1 CV reference counts and CvOUTSIDE diff --git a/dump.c b/dump.c index 6799c47..02b1c22 100644 --- a/dump.c +++ b/dump.c @@ -89,7 +89,7 @@ Perl_dump_sub(pTHX_ const GV *gv) gv_fullname3(sv, gv, NULL); Perl_dump_indent(aTHX_ 0, Perl_debug_log, "\nSUB %s = ", SvPVX_const(sv)); - if (CvXSUB(GvCV(gv))) + if (CvISXSUB(GvCV(gv))) Perl_dump_indent(aTHX_ 0, Perl_debug_log, "(xsub 0x%"UVxf" %d)\n", PTR2UV(CvXSUB(GvCV(gv))), (int)CvXSUBANY(GvCV(gv)).any_i32); diff --git a/ext/Devel/Peek/Peek.xs b/ext/Devel/Peek/Peek.xs index 5bec844..a88d231 100644 --- a/ext/Devel/Peek/Peek.xs +++ b/ext/Devel/Peek/Peek.xs @@ -39,7 +39,7 @@ DeadCode(pTHX) int levels, tots = 0, levela, tota = 0, levelas, totas = 0; int dumpit = 0; - if (CvXSUB(sv)) { + if (CvISXSUB(sv)) { continue; /* XSUB */ } if (!CvGV(sv)) { diff --git a/gv.c b/gv.c index 555260f..d866b66 100644 --- a/gv.c +++ b/gv.c @@ -600,7 +600,7 @@ Perl_gv_autoload4(pTHX_ HV *stash, const char *name, STRLEN len, I32 method) "Use of inherited AUTOLOAD for non-method %s::%.*s() is deprecated", packname, (int)len, name); - if (CvXSUB(cv)) { + if (CvISXSUB(cv)) { /* rather than lookup/init $AUTOLOAD here * only to have the XSUB do another lookup for $AUTOLOAD * and split that value on the last '::', diff --git a/op.c b/op.c index 2830834..cb507ba 100644 --- a/op.c +++ b/op.c @@ -4261,14 +4261,14 @@ Perl_cv_undef(pTHX_ CV *cv) { dVAR; #ifdef USE_ITHREADS - if (CvFILE(cv) && !CvXSUB(cv)) { + if (CvFILE(cv) && !CvISXSUB(cv)) { /* for XSUBs CvFILE point directly to static memory; __FILE__ */ Safefree(CvFILE(cv)); } CvFILE(cv) = 0; #endif - if (!CvXSUB(cv) && CvROOT(cv)) { + if (!CvISXSUB(cv) && CvROOT(cv)) { if (CvDEPTH(cv)) Perl_croak(aTHX_ "Can't undef active subroutine"); ENTER; diff --git a/pad.c b/pad.c index aa806ea..75f0838 100644 --- a/pad.c +++ b/pad.c @@ -1445,8 +1445,8 @@ Perl_cv_clone(pTHX_ CV *proto) CvCLONED_on(cv); #ifdef USE_ITHREADS - CvFILE(cv) = CvXSUB(proto) ? CvFILE(proto) - : savepv(CvFILE(proto)); + CvFILE(cv) = CvISXSUB(proto) ? CvFILE(proto) + : savepv(CvFILE(proto)); #else CvFILE(cv) = CvFILE(proto); #endif diff --git a/pp_ctl.c b/pp_ctl.c index 725920f..80113a4 100644 --- a/pp_ctl.c +++ b/pp_ctl.c @@ -1763,7 +1763,7 @@ PP(pp_dbstate) hasargs = 0; SPAGAIN; - if (CvXSUB(cv)) { + if (CvISXSUB(cv)) { CvDEPTH(cv)++; PUSHMARK(SP); (void)(*CvXSUB(cv))(aTHX_ cv); @@ -2352,7 +2352,7 @@ PP(pp_goto) PAD_SVl(0) = (SV*)(cx->blk_sub.argarray = av); } } - else if (CvXSUB(cv)) { /* put GvAV(defgv) back onto stack */ + else if (CvISXSUB(cv)) { /* put GvAV(defgv) back onto stack */ AV* const av = GvAV(PL_defgv); items = AvFILLp(av) + 1; EXTEND(SP, items+1); /* @_ could have been extended. */ @@ -2369,7 +2369,7 @@ PP(pp_goto) /* Now do some callish stuff. */ SAVETMPS; SAVEFREESV(cv); /* later, undo the 'avoid premature free' hack */ - if (CvXSUB(cv)) { + if (CvISXSUB(cv)) { OP* retop = cx->blk_sub.retop; if (reified) { I32 index; diff --git a/pp_hot.c b/pp_hot.c index 677808f..242b03c 100644 --- a/pp_hot.c +++ b/pp_hot.c @@ -2667,7 +2667,7 @@ S_get_db_sub(pTHX_ SV **svp, CV *cv) SvIV_set(dbsv, PTR2IV(cv)); /* Do it the quickest way */ } - if (CvXSUB(cv)) + if (CvISXSUB(cv)) PL_curcopdb = PL_curcop; cv = GvCV(PL_DBsub); return cv; @@ -2785,7 +2785,7 @@ try_autoload: DIE(aTHX_ "No DB::sub routine defined"); } - if (!(CvXSUB(cv))) { + if (!(CvISXSUB(cv))) { /* This path taken at least 75% of the time */ dMARK; register I32 items = SP - MARK; diff --git a/pp_sort.c b/pp_sort.c index 4859588..104e8ed 100644 --- a/pp_sort.c +++ b/pp_sort.c @@ -1515,7 +1515,7 @@ PP(pp_sort) } } if (!(cv && CvROOT(cv))) { - if (cv && CvXSUB(cv)) { + if (cv && CvISXSUB(cv)) { is_xsub = 1; } else if (gv) { diff --git a/sv.c b/sv.c index 30b84f0..75ba895 100644 --- a/sv.c +++ b/sv.c @@ -9843,7 +9843,7 @@ Perl_sv_dup(pTHX_ const SV *sstr, CLONE_PARAMS* param) CvWEAKOUTSIDE(sstr) ? cv_dup( CvOUTSIDE(dstr), param) : cv_dup_inc(CvOUTSIDE(dstr), param); - if (!CvXSUB(dstr)) + if (!CvISXSUB(dstr)) CvFILE(dstr) = SAVEPV(CvFILE(dstr)); break; }