This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
retab t/porting/checkcase.t
[perl5.git] / cv.h
diff --git a/cv.h b/cv.h
index 182415e..6fdf5cb 100644 (file)
--- a/cv.h
+++ b/cv.h
@@ -36,12 +36,14 @@ Returns the stash of the CV.
 #  define Nullcv Null(CV*)
 #endif
 
-#define CvSTASH(sv)    ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_stash
+#define CvSTASH(sv)    (0+((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_stash)
+#define CvSTASH_set(cv,st) Perl_cvstash_set(aTHX_ cv, st)
 #define CvSTART(sv)    ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_start_u.xcv_start
 #define CvROOT(sv)     ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_root_u.xcv_root
 #define CvXSUB(sv)     ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_root_u.xcv_xsub
 #define CvXSUBANY(sv)  ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_start_u.xcv_xsubany
-#define CvGV(sv)       ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_gv
+#define CvGV(sv)       (0+((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_gv)
+#define CvGV_set(cv,gv)        Perl_cvgv_set(aTHX_ cv, gv)
 #define CvFILE(sv)     ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_file
 #ifdef USE_ITHREADS
 #  define CvFILE_set_from_cop(sv, cop) (CvFILE(sv) = savepv(CopFILE(cop)))
@@ -63,18 +65,19 @@ Returns the stash of the CV.
 #define CvOUTSIDE_SEQ(sv) ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_outside_seq
 
 #define CVf_METHOD     0x0001  /* CV is explicitly marked as a method */
-#define CVf_LVALUE     0x0004  /* CV return value can be used as lvalue */
+#define CVf_LVALUE     0x0002  /* CV return value can be used as lvalue */
+#define CVf_CONST      0x0004  /* inlinable sub */
+#define CVf_ISXSUB     0x0008  /* CV is an XSUB, not pure perl.  */
 
 #define CVf_WEAKOUTSIDE        0x0010  /* CvOUTSIDE isn't ref counted */
 #define CVf_CLONE      0x0020  /* anon CV uses external lexicals */
 #define CVf_CLONED     0x0040  /* a clone of one of those */
-#define CVf_ANON       0x0080  /* CvGV() can't be trusted */
+#define CVf_ANON       0x0080  /* CV is not pointed to by a GV */
 #define CVf_UNIQUE     0x0100  /* sub is only called once (eg PL_main_cv,
                                 * require, eval). */
 #define CVf_NODEBUG    0x0200  /* no DB::sub indirection for this CV
                                   (esp. useful for special XSUBs) */
-#define CVf_CONST      0x0400  /* inlinable sub */
-#define CVf_ISXSUB     0x0800  /* CV is an XSUB, not pure perl.  */
+#define CVf_CVGV_RC    0x0400  /* CvGV is reference counted */
 
 /* This symbol for optimised communication between toke.c and op.c: */
 #define CVf_BUILTIN_ATTRS      (CVf_METHOD|CVf_LVALUE)
@@ -128,6 +131,10 @@ Returns the stash of the CV.
 #define CvISXSUB_on(cv)                (CvFLAGS(cv) |= CVf_ISXSUB)
 #define CvISXSUB_off(cv)       (CvFLAGS(cv) &= ~CVf_ISXSUB)
 
+#define CvCVGV_RC(cv)          (CvFLAGS(cv) & CVf_CVGV_RC)
+#define CvCVGV_RC_on(cv)       (CvFLAGS(cv) |= CVf_CVGV_RC)
+#define CvCVGV_RC_off(cv)      (CvFLAGS(cv) &= ~CVf_CVGV_RC)
+
 /* Flags for newXS_flags  */
 #define XS_DYNAMIC_FILENAME    0x01    /* The filename isn't static  */
 
@@ -186,6 +193,8 @@ should print 123:
 =cut
 */
 
+typedef OP *(*Perl_call_checker)(pTHX_ OP *, GV *, SV *);
+
 /*
  * Local variables:
  * c-indentation-style: bsd