3 * Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
4 * 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by Larry Wall and others
6 * You may distribute under the terms of either the GNU General Public
7 * License or the Artistic License, as specified in the README file.
12 * 'Mercy!' cried Gandalf. 'If the giving of information is to be the cure
13 * of your inquisitiveness, I shall spend all the rest of my days in answering
14 * you. What more do you want to know?'
15 * 'The names of all the stars, and of all living things, and the whole
16 * history of Middle-earth and Over-heaven and of the Sundering Seas,'
19 * [p.599 of _The Lord of the Rings_, III/xi: "The PalantÃr"]
24 A GV is a structure which corresponds to to a Perl typeglob, ie *foo.
25 It is a structure that holds a pointer to a scalar, an array, a hash etc,
26 corresponding to $foo, @foo, %foo.
28 GVs are usually found as values in stashes (symbol table hashes) where
29 Perl stores its global variables.
39 #include "overload.inc"
43 static const char S_autoload[] = "AUTOLOAD";
44 #define S_autolen (sizeof("AUTOLOAD")-1)
47 Perl_gv_add_by_type(pTHX_ GV *gv, svtype type)
54 SvTYPE((const SV *)gv) != SVt_PVGV
55 && SvTYPE((const SV *)gv) != SVt_PVLV
59 if (type == SVt_PVIO) {
61 * if it walks like a dirhandle, then let's assume that
62 * this is a dirhandle.
64 what = OP_IS_DIRHOP(PL_op->op_type) ?
65 "dirhandle" : "filehandle";
66 } else if (type == SVt_PVHV) {
69 what = type == SVt_PVAV ? "array" : "scalar";
71 /* diag_listed_as: Bad symbol for filehandle */
72 Perl_croak(aTHX_ "Bad symbol for %s", what);
75 if (type == SVt_PVHV) {
76 where = (SV **)&GvHV(gv);
77 } else if (type == SVt_PVAV) {
78 where = (SV **)&GvAV(gv);
79 } else if (type == SVt_PVIO) {
80 where = (SV **)&GvIOp(gv);
87 *where = newSV_type(type);
89 && memEQs(GvNAME(gv), GvNAMELEN(gv), "ISA"))
90 sv_magic(*where, (SV *)gv, PERL_MAGIC_isa, NULL, 0);
96 =for apidoc gv_fetchfile
97 =for apidoc_item gv_fetchfile_flags
99 These return the debugger glob for the file (compiled by Perl) whose name is
100 given by the C<name> parameter.
102 There are currently exactly two differences between these functions.
104 The C<name> parameter to C<gv_fetchfile> is a C string, meaning it is
105 C<NUL>-terminated; whereas the C<name> parameter to C<gv_fetchfile_flags> is a
106 Perl string, whose length (in bytes) is passed in via the C<namelen> parameter
107 This means the name may contain embedded C<NUL> characters.
108 C<namelen> doesn't exist in plain C<gv_fetchfile>).
110 The other difference is that C<gv_fetchfile_flags> has an extra C<flags>
111 parameter, which is currently completely ignored, but allows for possible
117 Perl_gv_fetchfile(pTHX_ const char *name)
119 PERL_ARGS_ASSERT_GV_FETCHFILE;
120 return gv_fetchfile_flags(name, strlen(name), 0);
124 Perl_gv_fetchfile_flags(pTHX_ const char *const name, const STRLEN namelen,
129 const STRLEN tmplen = namelen + 2;
132 PERL_ARGS_ASSERT_GV_FETCHFILE_FLAGS;
133 PERL_UNUSED_ARG(flags);
138 if (tmplen <= sizeof smallbuf)
141 Newx(tmpbuf, tmplen, char);
142 /* This is where the debugger's %{"::_<$filename"} hash is created */
145 memcpy(tmpbuf + 2, name, namelen);
146 gv = *(GV**)hv_fetch(PL_defstash, tmpbuf, tmplen, TRUE);
148 gv_init(gv, PL_defstash, tmpbuf, tmplen, FALSE);
149 #ifdef PERL_DONT_CREATE_GVSV
150 GvSV(gv) = newSVpvn(name, namelen);
152 sv_setpvn(GvSV(gv), name, namelen);
155 if (PERLDB_LINE_OR_SAVESRC && !GvAV(gv))
156 hv_magic(GvHVn(gv), GvAVn(gv), PERL_MAGIC_dbfile);
157 if (tmpbuf != smallbuf)
163 =for apidoc gv_const_sv
165 If C<gv> is a typeglob whose subroutine entry is a constant sub eligible for
166 inlining, or C<gv> is a placeholder reference that would be promoted to such
167 a typeglob, then returns the value returned by the sub. Otherwise, returns
174 Perl_gv_const_sv(pTHX_ GV *gv)
176 PERL_ARGS_ASSERT_GV_CONST_SV;
179 if (SvTYPE(gv) == SVt_PVGV)
180 return cv_const_sv(GvCVu(gv));
181 return SvROK(gv) && SvTYPE(SvRV(gv)) != SVt_PVAV && SvTYPE(SvRV(gv)) != SVt_PVCV ? SvRV(gv) : NULL;
185 Perl_newGP(pTHX_ GV *const gv)
195 PERL_ARGS_ASSERT_NEWGP;
197 gp->gp_egv = gv; /* allow compiler to reuse gv after this */
198 #ifndef PERL_DONT_CREATE_GVSV
199 gp->gp_sv = newSV(0);
202 /* PL_curcop may be null here. E.g.,
203 INIT { bless {} and exit }
204 frees INIT before looking up DESTROY (and creating *DESTROY)
207 gp->gp_line = CopLINE(PL_curcop); /* 0 otherwise Newxz */
209 if (CopFILE(PL_curcop)) {
210 file = CopFILE(PL_curcop);
214 filegv = CopFILEGV(PL_curcop);
216 file = GvNAME(filegv)+2;
217 len = GvNAMELEN(filegv)-2;
228 PERL_HASH(hash, file, len);
229 gp->gp_file_hek = share_hek(file, len, hash);
235 /* Assign CvGV(cv) = gv, handling weak references.
236 * See also S_anonymise_cv_maybe */
239 Perl_cvgv_set(pTHX_ CV* cv, GV* gv)
241 GV * const oldgv = CvNAMED(cv) ? NULL : SvANY(cv)->xcv_gv_u.xcv_gv;
243 PERL_ARGS_ASSERT_CVGV_SET;
250 SvREFCNT_dec_NN(oldgv);
254 sv_del_backref(MUTABLE_SV(oldgv), MUTABLE_SV(cv));
257 else if ((hek = CvNAME_HEK(cv))) {
263 SvANY(cv)->xcv_gv_u.xcv_gv = gv;
264 assert(!CvCVGV_RC(cv));
269 if (isGV_with_GP(gv) && GvGP(gv) && (GvCV(gv) == cv || GvFORM(gv) == cv))
270 Perl_sv_add_backref(aTHX_ MUTABLE_SV(gv), MUTABLE_SV(cv));
273 SvREFCNT_inc_simple_void_NN(gv);
277 /* Convert CvSTASH + CvNAME_HEK into a GV. Conceptually, all subs have a
278 GV, but for efficiency that GV may not in fact exist. This function,
279 called by CvGV, reifies it. */
282 Perl_cvgv_from_hek(pTHX_ CV *cv)
286 PERL_ARGS_ASSERT_CVGV_FROM_HEK;
287 assert(SvTYPE(cv) == SVt_PVCV);
288 if (!CvSTASH(cv)) return NULL;
289 ASSUME(CvNAME_HEK(cv));
290 svp = hv_fetchhek(CvSTASH(cv), CvNAME_HEK(cv), 0);
291 gv = MUTABLE_GV(svp && *svp ? *svp : newSV(0));
293 gv_init_pvn(gv, CvSTASH(cv), HEK_KEY(CvNAME_HEK(cv)),
294 HEK_LEN(CvNAME_HEK(cv)),
295 SVf_UTF8 * !!HEK_UTF8(CvNAME_HEK(cv)));
296 if (!CvNAMED(cv)) { /* gv_init took care of it */
297 assert (SvANY(cv)->xcv_gv_u.xcv_gv == gv);
300 unshare_hek(CvNAME_HEK(cv));
302 SvANY(cv)->xcv_gv_u.xcv_gv = gv;
303 if (svp && *svp) SvREFCNT_inc_simple_void_NN(gv);
308 /* Assign CvSTASH(cv) = st, handling weak references. */
311 Perl_cvstash_set(pTHX_ CV *cv, HV *st)
313 HV *oldst = CvSTASH(cv);
314 PERL_ARGS_ASSERT_CVSTASH_SET;
318 sv_del_backref(MUTABLE_SV(oldst), MUTABLE_SV(cv));
319 SvANY(cv)->xcv_stash = st;
321 Perl_sv_add_backref(aTHX_ MUTABLE_SV(st), MUTABLE_SV(cv));
325 =for apidoc gv_init_pvn
327 Converts a scalar into a typeglob. This is an incoercible typeglob;
328 assigning a reference to it will assign to one of its slots, instead of
329 overwriting it as happens with typeglobs created by C<SvSetSV>. Converting
330 any scalar that is C<SvOK()> may produce unpredictable results and is reserved
331 for perl's internal use.
333 C<gv> is the scalar to be converted.
335 C<stash> is the parent stash/package, if any.
337 C<name> and C<len> give the name. The name must be unqualified;
338 that is, it must not include the package name. If C<gv> is a
339 stash element, it is the caller's responsibility to ensure that the name
340 passed to this function matches the name of the element. If it does not
341 match, perl's internal bookkeeping will get out of sync.
343 C<flags> can be set to C<SVf_UTF8> if C<name> is a UTF-8 string, or
344 the return value of SvUTF8(sv). It can also take the
345 C<GV_ADDMULTI> flag, which means to pretend that the GV has been
346 seen before (i.e., suppress "Used once" warnings).
348 =for apidoc Amnh||GV_ADDMULTI
352 The old form of C<gv_init_pvn()>. It does not work with UTF-8 strings, as it
353 has no flags parameter. If the C<multi> parameter is set, the
354 C<GV_ADDMULTI> flag will be passed to C<gv_init_pvn()>.
356 =for apidoc gv_init_pv
358 Same as C<gv_init_pvn()>, but takes a nul-terminated string for the name
359 instead of separate char * and length parameters.
361 =for apidoc gv_init_sv
363 Same as C<gv_init_pvn()>, but takes an SV * for the name instead of separate
364 char * and length parameters. C<flags> is currently unused.
370 Perl_gv_init_sv(pTHX_ GV *gv, HV *stash, SV* namesv, U32 flags)
374 PERL_ARGS_ASSERT_GV_INIT_SV;
375 namepv = SvPV(namesv, namelen);
378 gv_init_pvn(gv, stash, namepv, namelen, flags);
382 Perl_gv_init_pv(pTHX_ GV *gv, HV *stash, const char *name, U32 flags)
384 PERL_ARGS_ASSERT_GV_INIT_PV;
385 gv_init_pvn(gv, stash, name, strlen(name), flags);
389 Perl_gv_init_pvn(pTHX_ GV *gv, HV *stash, const char *name, STRLEN len, U32 flags)
391 const U32 old_type = SvTYPE(gv);
392 const bool doproto = old_type > SVt_NULL;
393 char * const proto = (doproto && SvPOK(gv))
394 ? ((void)(SvIsCOW(gv) && (sv_force_normal((SV *)gv), 0)), SvPVX(gv))
396 const STRLEN protolen = proto ? SvCUR(gv) : 0;
397 const U32 proto_utf8 = proto ? SvUTF8(gv) : 0;
398 SV *const has_constant = doproto && SvROK(gv) ? SvRV(gv) : NULL;
399 const U32 exported_constant = has_constant ? SvPCS_IMPORTED(gv) : 0;
400 const bool really_sub =
401 has_constant && SvTYPE(has_constant) == SVt_PVCV;
402 COP * const old = PL_curcop;
404 PERL_ARGS_ASSERT_GV_INIT_PVN;
405 assert (!(proto && has_constant));
408 /* The constant has to be a scalar, array or subroutine. */
409 switch (SvTYPE(has_constant)) {
413 Perl_croak(aTHX_ "Cannot convert a reference to %s to typeglob",
414 sv_reftype(has_constant, 0));
415 NOT_REACHED; /* NOTREACHED */
425 if (old_type < SVt_PVGV) {
426 if (old_type >= SVt_PV)
428 sv_upgrade(MUTABLE_SV(gv), SVt_PVGV);
436 Safefree(SvPVX_mutable(gv));
441 if (really_sub && !CvISXSUB(has_constant) && CvSTART(has_constant)
442 && ( CvSTART(has_constant)->op_type == OP_NEXTSTATE
443 || CvSTART(has_constant)->op_type == OP_DBSTATE))
444 PL_curcop = (COP *)CvSTART(has_constant);
445 GvGP_set(gv, Perl_newGP(aTHX_ gv));
449 Perl_sv_add_backref(aTHX_ MUTABLE_SV(stash), MUTABLE_SV(gv));
450 gv_name_set(gv, name, len, GV_ADD | ( flags & SVf_UTF8 ? SVf_UTF8 : 0 ));
451 if (flags & GV_ADDMULTI || doproto) /* doproto means it */
452 GvMULTI_on(gv); /* _was_ mentioned */
454 /* Not actually a constant. Just a regular sub. */
455 CV * const cv = (CV *)has_constant;
457 if (CvNAMED(cv) && CvSTASH(cv) == stash && (
458 CvNAME_HEK(cv) == GvNAME_HEK(gv)
459 || ( HEK_LEN(CvNAME_HEK(cv)) == HEK_LEN(GvNAME_HEK(gv))
460 && HEK_FLAGS(CvNAME_HEK(cv)) != HEK_FLAGS(GvNAME_HEK(gv))
461 && HEK_UTF8(CvNAME_HEK(cv)) == HEK_UTF8(GvNAME_HEK(gv))
462 && memEQ(HEK_KEY(CvNAME_HEK(cv)), GvNAME(gv), GvNAMELEN(gv))
470 /* newCONSTSUB takes ownership of the reference from us. */
471 cv = newCONSTSUB_flags(stash, name, len, flags, has_constant);
472 /* In case op.c:S_process_special_blocks stole it: */
474 GvCV_set(gv, (CV *)SvREFCNT_inc_simple_NN(cv));
475 assert(GvCV(gv) == cv); /* newCONSTSUB should have set this */
476 /* If this reference was a copy of another, then the subroutine
477 must have been "imported", by a Perl space assignment to a GV
478 from a reference to CV. */
479 if (exported_constant)
480 GvIMPORTED_CV_on(gv);
481 CvSTASH_set(cv, PL_curstash); /* XXX Why is this needed? */
486 sv_usepvn_flags(MUTABLE_SV(cv), proto, protolen,
487 SV_HAS_TRAILING_NUL);
488 if ( proto_utf8 ) SvUTF8_on(MUTABLE_SV(cv));
494 S_gv_init_svtype(pTHX_ GV *gv, const svtype sv_type)
496 PERL_ARGS_ASSERT_GV_INIT_SVTYPE;
508 #ifdef PERL_DONT_CREATE_GVSV
516 /* Work round what appears to be a bug in Sun C++ 5.8 2005/10/13
517 If we just cast GvSVn(gv) to void, it ignores evaluating it for
524 static void core_xsub(pTHX_ CV* cv);
527 S_maybe_add_coresub(pTHX_ HV * const stash, GV *gv,
528 const char * const name, const STRLEN len)
530 const int code = keyword(name, len, 1);
531 static const char file[] = __FILE__;
532 CV *cv, *oldcompcv = NULL;
534 bool ampable = TRUE; /* &{}-able */
535 COP *oldcurcop = NULL;
536 yy_parser *oldparser = NULL;
537 I32 oldsavestack_ix = 0;
542 if (!code) return NULL; /* Not a keyword */
543 switch (code < 0 ? -code : code) {
544 /* no support for \&CORE::infix;
545 no support for funcs that do not parse like funcs */
546 case KEY___DATA__: case KEY___END__: case KEY_and: case KEY_AUTOLOAD:
547 case KEY_BEGIN : case KEY_CHECK : case KEY_catch : case KEY_cmp:
548 case KEY_default : case KEY_DESTROY:
549 case KEY_do : case KEY_dump : case KEY_else : case KEY_elsif :
550 case KEY_END : case KEY_eq : case KEY_eval :
551 case KEY_for : case KEY_foreach: case KEY_format: case KEY_ge :
552 case KEY_given : case KEY_goto : case KEY_grep : case KEY_gt :
553 case KEY_if : case KEY_isa : case KEY_INIT : case KEY_last :
554 case KEY_le : case KEY_local : case KEY_lt : case KEY_m :
555 case KEY_map : case KEY_my:
556 case KEY_ne : case KEY_next : case KEY_no: case KEY_or: case KEY_our:
557 case KEY_package: case KEY_print: case KEY_printf:
558 case KEY_q : case KEY_qq : case KEY_qr : case KEY_qw :
559 case KEY_qx : case KEY_redo : case KEY_require: case KEY_return:
560 case KEY_s : case KEY_say : case KEY_sort :
561 case KEY_state: case KEY_sub :
562 case KEY_tr : case KEY_try : case KEY_UNITCHECK: case KEY_unless:
563 case KEY_until: case KEY_use : case KEY_when : case KEY_while :
564 case KEY_x : case KEY_xor : case KEY_y :
567 case KEY_chomp: case KEY_chop: case KEY_defined: case KEY_delete:
568 case KEY_eof : case KEY_exec: case KEY_exists :
573 case KEY_truncate: case KEY_unlink:
578 gv_init(gv, stash, name, len, TRUE);
583 oldcurcop = PL_curcop;
584 oldparser = PL_parser;
585 lex_start(NULL, NULL, 0);
586 oldcompcv = PL_compcv;
587 PL_compcv = NULL; /* Prevent start_subparse from setting
589 oldsavestack_ix = start_subparse(FALSE,0);
593 /* Avoid calling newXS, as it calls us, and things start to
595 cv = MUTABLE_CV(newSV_type(SVt_PVCV));
599 CvXSUB(cv) = core_xsub;
602 CvGV_set(cv, gv); /* This stops new ATTRSUB from setting CvFILE
604 /* XSUBs can't be perl lang/perl5db.pl debugged
605 if (PERLDB_LINE_OR_SAVESRC)
606 (void)gv_fetchfile(file); */
607 CvFILE(cv) = (char *)file;
608 /* XXX This is inefficient, as doing things this order causes
609 a prototype check in newATTRSUB. But we have to do
610 it this order as we need an op number before calling
612 (void)core_prototype((SV *)cv, name, code, &opnum);
614 (void)hv_store(stash,name,len,(SV *)gv,0);
620 /* newATTRSUB will free the CV and return NULL if we're still
621 compiling after a syntax error */
622 if ((cv = newATTRSUB_x(
623 oldsavestack_ix, (OP *)gv,
628 : newSVpvn(name,len),
633 assert(GvCV(gv) == orig_cv);
634 if (opnum != OP_VEC && opnum != OP_SUBSTR && opnum != OP_POS
635 && opnum != OP_UNDEF && opnum != OP_KEYS)
636 CvLVALUE_off(cv); /* Now *that* was a neat trick. */
639 PL_parser = oldparser;
640 PL_curcop = oldcurcop;
641 PL_compcv = oldcompcv;
644 SV *opnumsv = newSViv(
645 (opnum == OP_ENTEREVAL && len == 9 && memEQ(name, "evalbytes", 9)) ?
646 (OP_ENTEREVAL | (1<<16))
647 : opnum ? opnum : (((I32)name[2]) << 16));
648 cv_set_call_checker_flags(cv, Perl_ck_entersub_args_core, opnumsv, 0);
649 SvREFCNT_dec_NN(opnumsv);
656 =for apidoc gv_fetchmeth
658 Like L</gv_fetchmeth_pvn>, but lacks a flags parameter.
660 =for apidoc gv_fetchmeth_sv
662 Exactly like L</gv_fetchmeth_pvn>, but takes the name string in the form
663 of an SV instead of a string/length pair.
669 Perl_gv_fetchmeth_sv(pTHX_ HV *stash, SV *namesv, I32 level, U32 flags)
673 PERL_ARGS_ASSERT_GV_FETCHMETH_SV;
674 if (LIKELY(SvPOK_nog(namesv))) /* common case */
675 return gv_fetchmeth_internal(stash, namesv, NULL, 0, level,
676 flags | SvUTF8(namesv));
677 namepv = SvPV(namesv, namelen);
678 if (SvUTF8(namesv)) flags |= SVf_UTF8;
679 return gv_fetchmeth_pvn(stash, namepv, namelen, level, flags);
683 =for apidoc gv_fetchmeth_pv
685 Exactly like L</gv_fetchmeth_pvn>, but takes a nul-terminated string
686 instead of a string/length pair.
692 Perl_gv_fetchmeth_pv(pTHX_ HV *stash, const char *name, I32 level, U32 flags)
694 PERL_ARGS_ASSERT_GV_FETCHMETH_PV;
695 return gv_fetchmeth_internal(stash, NULL, name, strlen(name), level, flags);
699 =for apidoc gv_fetchmeth_pvn
701 Returns the glob with the given C<name> and a defined subroutine or
702 C<NULL>. The glob lives in the given C<stash>, or in the stashes
703 accessible via C<@ISA> and C<UNIVERSAL::>.
705 The argument C<level> should be either 0 or -1. If C<level==0>, as a
706 side-effect creates a glob with the given C<name> in the given C<stash>
707 which in the case of success contains an alias for the subroutine, and sets
708 up caching info for this glob.
710 The only significant values for C<flags> are C<GV_SUPER>, C<GV_NOUNIVERSAL>, and
713 C<GV_SUPER> indicates that we want to look up the method in the superclasses
716 C<GV_NOUNIVERSAL> indicates that we do not want to look up the method in
717 the stash accessible by C<UNIVERSAL::>.
720 GV returned from C<gv_fetchmeth> may be a method cache entry, which is not
721 visible to Perl code. So when calling C<call_sv>, you should not use
722 the GV directly; instead, you should use the method's CV, which can be
723 obtained from the GV with the C<GvCV> macro.
725 =for apidoc Amnh||GV_SUPER
730 /* NOTE: No support for tied ISA */
732 PERL_STATIC_INLINE GV*
733 S_gv_fetchmeth_internal(pTHX_ HV* stash, SV* meth, const char* name, STRLEN len, I32 level, U32 flags)
740 HV* cstash, *cachestash;
741 GV* candidate = NULL;
746 I32 create = (level >= 0) ? HV_FETCH_LVALUE : 0;
749 U32 is_utf8 = flags & SVf_UTF8;
751 /* UNIVERSAL methods should be callable without a stash */
753 create = 0; /* probably appropriate */
754 if(!(stash = gv_stashpvs("UNIVERSAL", 0)))
760 hvname = HvNAME_get(stash);
761 hvnamelen = HvNAMELEN_get(stash);
763 Perl_croak(aTHX_ "Can't use anonymous symbol table for method lookup");
766 assert(name || meth);
768 DEBUG_o( Perl_deb(aTHX_ "Looking for %smethod %s in package %s\n",
769 flags & GV_SUPER ? "SUPER " : "",
770 name ? name : SvPV_nolen(meth), hvname) );
772 topgen_cmp = HvMROMETA(stash)->cache_gen + PL_sub_generation;
774 if (flags & GV_SUPER) {
775 if (!HvAUX(stash)->xhv_mro_meta->super)
776 HvAUX(stash)->xhv_mro_meta->super = newHV();
777 cachestash = HvAUX(stash)->xhv_mro_meta->super;
779 else cachestash = stash;
781 /* check locally for a real method or a cache entry */
783 cachestash, meth, name, len, is_utf8 ? HVhek_UTF8 : 0, create, NULL, 0
785 if (he) gvp = (GV**)&HeVAL(he);
792 if (SvTYPE(topgv) != SVt_PVGV)
795 name = SvPV_nomg(meth, len);
796 gv_init_pvn(topgv, stash, name, len, GV_ADDMULTI|is_utf8);
798 if ((cand_cv = GvCV(topgv))) {
799 /* If genuine method or valid cache entry, use it */
800 if (!GvCVGEN(topgv) || GvCVGEN(topgv) == topgen_cmp) {
804 /* stale cache entry, junk it and move on */
805 SvREFCNT_dec_NN(cand_cv);
806 GvCV_set(topgv, NULL);
811 else if (GvCVGEN(topgv) == topgen_cmp) {
812 /* cache indicates no such method definitively */
815 else if (stash == cachestash
816 && len > 1 /* shortest is uc */
817 && memEQs(hvname, HvNAMELEN_get(stash), "CORE")
818 && S_maybe_add_coresub(aTHX_ NULL,topgv,name,len))
822 linear_av = mro_get_linear_isa(stash); /* has ourselves at the top of the list */
823 linear_svp = AvARRAY(linear_av) + 1; /* skip over self */
824 items = AvFILLp(linear_av); /* no +1, to skip over self */
826 linear_sv = *linear_svp++;
828 cstash = gv_stashsv(linear_sv, 0);
831 if ( ckWARN(WARN_SYNTAX)) {
832 if( /* these are loaded from Perl_Gv_AMupdate() one way or another */
833 ( len && name[0] == '(' ) /* overload.pm related, in particular "()" */
834 || ( memEQs( name, len, "DESTROY") )
836 Perl_ck_warner(aTHX_ packWARN(WARN_SYNTAX),
837 "Can't locate package %" SVf " for @%" HEKf "::ISA",
839 HEKfARG(HvNAME_HEK(stash)));
841 } else if( memEQs( name, len, "AUTOLOAD") ) {
842 /* gobble this warning */
844 Perl_ck_warner(aTHX_ packWARN(WARN_SYNTAX),
845 "While trying to resolve method call %.*s->%.*s()"
846 " can not locate package \"%" SVf "\" yet it is mentioned in @%.*s::ISA"
847 " (perhaps you forgot to load \"%" SVf "\"?)",
848 (int) hvnamelen, hvname,
851 (int) hvnamelen, hvname,
860 gvp = (GV**)hv_common(
861 cstash, meth, name, len, is_utf8 ? HVhek_UTF8 : 0, HV_FETCH_JUST_SV, NULL, 0
864 if (len > 1 && HvNAMELEN_get(cstash) == 4) {
865 const char *hvname = HvNAME(cstash); assert(hvname);
866 if (strBEGINs(hvname, "CORE")
868 S_maybe_add_coresub(aTHX_ cstash,NULL,name,len)
874 else candidate = *gvp;
877 if (SvTYPE(candidate) != SVt_PVGV)
878 gv_init_pvn(candidate, cstash, name, len, GV_ADDMULTI|is_utf8);
879 if (SvTYPE(candidate) == SVt_PVGV && (cand_cv = GvCV(candidate)) && !GvCVGEN(candidate)) {
881 * Found real method, cache method in topgv if:
882 * 1. topgv has no synonyms (else inheritance crosses wires)
883 * 2. method isn't a stub (else AUTOLOAD fails spectacularly)
885 if (topgv && (GvREFCNT(topgv) == 1) && (CvROOT(cand_cv) || CvXSUB(cand_cv))) {
886 CV *old_cv = GvCV(topgv);
887 SvREFCNT_dec(old_cv);
888 SvREFCNT_inc_simple_void_NN(cand_cv);
889 GvCV_set(topgv, cand_cv);
890 GvCVGEN(topgv) = topgen_cmp;
896 /* Check UNIVERSAL without caching */
897 if((level == 0 || level == -1) && !(flags & GV_NOUNIVERSAL)) {
898 candidate = gv_fetchmeth_internal(NULL, meth, name, len, 1,
901 cand_cv = GvCV(candidate);
902 if (topgv && (GvREFCNT(topgv) == 1) && (CvROOT(cand_cv) || CvXSUB(cand_cv))) {
903 CV *old_cv = GvCV(topgv);
904 SvREFCNT_dec(old_cv);
905 SvREFCNT_inc_simple_void_NN(cand_cv);
906 GvCV_set(topgv, cand_cv);
907 GvCVGEN(topgv) = topgen_cmp;
913 if (topgv && GvREFCNT(topgv) == 1) {
914 /* cache the fact that the method is not defined */
915 GvCVGEN(topgv) = topgen_cmp;
922 Perl_gv_fetchmeth_pvn(pTHX_ HV *stash, const char *name, STRLEN len, I32 level, U32 flags)
924 PERL_ARGS_ASSERT_GV_FETCHMETH_PVN;
925 return gv_fetchmeth_internal(stash, NULL, name, len, level, flags);
929 =for apidoc gv_fetchmeth_autoload
931 This is the old form of L</gv_fetchmeth_pvn_autoload>, which has no flags
934 =for apidoc gv_fetchmeth_sv_autoload
936 Exactly like L</gv_fetchmeth_pvn_autoload>, but takes the name string in the form
937 of an SV instead of a string/length pair.
943 Perl_gv_fetchmeth_sv_autoload(pTHX_ HV *stash, SV *namesv, I32 level, U32 flags)
947 PERL_ARGS_ASSERT_GV_FETCHMETH_SV_AUTOLOAD;
948 namepv = SvPV(namesv, namelen);
951 return gv_fetchmeth_pvn_autoload(stash, namepv, namelen, level, flags);
955 =for apidoc gv_fetchmeth_pv_autoload
957 Exactly like L</gv_fetchmeth_pvn_autoload>, but takes a nul-terminated string
958 instead of a string/length pair.
964 Perl_gv_fetchmeth_pv_autoload(pTHX_ HV *stash, const char *name, I32 level, U32 flags)
966 PERL_ARGS_ASSERT_GV_FETCHMETH_PV_AUTOLOAD;
967 return gv_fetchmeth_pvn_autoload(stash, name, strlen(name), level, flags);
971 =for apidoc gv_fetchmeth_pvn_autoload
973 Same as C<gv_fetchmeth_pvn()>, but looks for autoloaded subroutines too.
974 Returns a glob for the subroutine.
976 For an autoloaded subroutine without a GV, will create a GV even
977 if C<level < 0>. For an autoloaded subroutine without a stub, C<GvCV()>
978 of the result may be zero.
980 Currently, the only significant value for C<flags> is C<SVf_UTF8>.
986 Perl_gv_fetchmeth_pvn_autoload(pTHX_ HV *stash, const char *name, STRLEN len, I32 level, U32 flags)
988 GV *gv = gv_fetchmeth_pvn(stash, name, len, level, flags);
990 PERL_ARGS_ASSERT_GV_FETCHMETH_PVN_AUTOLOAD;
997 return NULL; /* UNIVERSAL::AUTOLOAD could cause trouble */
998 if (len == S_autolen && memEQ(name, S_autoload, S_autolen))
1000 if (!(gv = gv_fetchmeth_pvn(stash, S_autoload, S_autolen, FALSE, flags)))
1003 if (!(CvROOT(cv) || CvXSUB(cv)))
1005 /* Have an autoload */
1006 if (level < 0) /* Cannot do without a stub */
1007 gv_fetchmeth_pvn(stash, name, len, 0, flags);
1008 gvp = (GV**)hv_fetch(stash, name,
1009 (flags & SVf_UTF8) ? -(I32)len : (I32)len, (level >= 0));
1018 =for apidoc gv_fetchmethod_autoload
1020 Returns the glob which contains the subroutine to call to invoke the method
1021 on the C<stash>. In fact in the presence of autoloading this may be the
1022 glob for "AUTOLOAD". In this case the corresponding variable C<$AUTOLOAD> is
1025 The third parameter of C<gv_fetchmethod_autoload> determines whether
1026 AUTOLOAD lookup is performed if the given method is not present: non-zero
1027 means yes, look for AUTOLOAD; zero means no, don't look for AUTOLOAD.
1028 Calling C<gv_fetchmethod> is equivalent to calling C<gv_fetchmethod_autoload>
1029 with a non-zero C<autoload> parameter.
1031 These functions grant C<"SUPER"> token
1032 as a prefix of the method name. Note
1033 that if you want to keep the returned glob for a long time, you need to
1034 check for it being "AUTOLOAD", since at the later time the call may load a
1035 different subroutine due to C<$AUTOLOAD> changing its value. Use the glob
1036 created as a side effect to do this.
1038 These functions have the same side-effects as C<gv_fetchmeth> with
1039 C<level==0>. The warning against passing the GV returned by
1040 C<gv_fetchmeth> to C<call_sv> applies equally to these functions.
1046 Perl_gv_fetchmethod_autoload(pTHX_ HV *stash, const char *name, I32 autoload)
1048 PERL_ARGS_ASSERT_GV_FETCHMETHOD_AUTOLOAD;
1050 return gv_fetchmethod_flags(stash, name, autoload ? GV_AUTOLOAD : 0);
1054 Perl_gv_fetchmethod_sv_flags(pTHX_ HV *stash, SV *namesv, U32 flags)
1058 PERL_ARGS_ASSERT_GV_FETCHMETHOD_SV_FLAGS;
1059 namepv = SvPV(namesv, namelen);
1062 return gv_fetchmethod_pvn_flags(stash, namepv, namelen, flags);
1066 Perl_gv_fetchmethod_pv_flags(pTHX_ HV *stash, const char *name, U32 flags)
1068 PERL_ARGS_ASSERT_GV_FETCHMETHOD_PV_FLAGS;
1069 return gv_fetchmethod_pvn_flags(stash, name, strlen(name), flags);
1073 Perl_gv_fetchmethod_pvn_flags(pTHX_ HV *stash, const char *name, const STRLEN len, U32 flags)
1075 const char * const origname = name;
1076 const char * const name_end = name + len;
1077 const char *last_separator = NULL;
1080 SV *const error_report = MUTABLE_SV(stash);
1081 const U32 autoload = flags & GV_AUTOLOAD;
1082 const U32 do_croak = flags & GV_CROAK;
1083 const U32 is_utf8 = flags & SVf_UTF8;
1085 PERL_ARGS_ASSERT_GV_FETCHMETHOD_PVN_FLAGS;
1087 if (SvTYPE(stash) < SVt_PVHV)
1090 /* The only way stash can become NULL later on is if last_separator is set,
1091 which in turn means that there is no need for a SVt_PVHV case
1092 the error reporting code. */
1096 /* check if the method name is fully qualified or
1097 * not, and separate the package name from the actual
1100 * leaves last_separator pointing to the beginning of the
1101 * last package separator (either ' or ::) or 0
1102 * if none was found.
1104 * leaves name pointing at the beginning of the
1107 const char *name_cursor = name;
1108 const char * const name_em1 = name_end - 1; /* name_end minus 1 */
1109 for (name_cursor = name; name_cursor < name_end ; name_cursor++) {
1110 if (*name_cursor == '\'') {
1111 last_separator = name_cursor;
1112 name = name_cursor + 1;
1114 else if (name_cursor < name_em1 && *name_cursor == ':' && name_cursor[1] == ':') {
1115 last_separator = name_cursor++;
1116 name = name_cursor + 1;
1121 /* did we find a separator? */
1122 if (last_separator) {
1123 STRLEN sep_len= last_separator - origname;
1124 if ( memEQs(origname, sep_len, "SUPER")) {
1125 /* ->SUPER::method should really be looked up in original stash */
1126 stash = CopSTASH(PL_curcop);
1128 DEBUG_o( Perl_deb(aTHX_ "Treating %s as %s::%s\n",
1129 origname, HvENAME_get(stash), name) );
1131 else if ( sep_len >= 7 &&
1132 strBEGINs(last_separator - 7, "::SUPER")) {
1133 /* don't autovifify if ->NoSuchStash::SUPER::method */
1134 stash = gv_stashpvn(origname, sep_len - 7, is_utf8);
1135 if (stash) flags |= GV_SUPER;
1138 /* don't autovifify if ->NoSuchStash::method */
1139 stash = gv_stashpvn(origname, sep_len, is_utf8);
1144 gv = gv_fetchmeth_pvn(stash, name, name_end - name, 0, flags);
1146 /* This is the special case that exempts Foo->import and
1147 Foo->unimport from being an error even if there's no
1148 import/unimport subroutine */
1149 if (strEQ(name,"import") || strEQ(name,"unimport")) {
1150 gv = (GV*)sv_2mortal((SV*)newCONSTSUB_flags(NULL,
1152 } else if (autoload)
1153 gv = gv_autoload_pvn(
1154 ostash, name, name_end - name, GV_AUTOLOAD_ISMETHOD|flags
1156 if (!gv && do_croak) {
1157 /* Right now this is exclusively for the benefit of S_method_common
1160 /* If we can't find an IO::File method, it might be a call on
1161 * a filehandle. If IO:File has not been loaded, try to
1162 * require it first instead of croaking */
1163 const char *stash_name = HvNAME_get(stash);
1164 if (stash_name && memEQs(stash_name, HvNAMELEN_get(stash), "IO::File")
1165 && !Perl_hv_common(aTHX_ GvHVn(PL_incgv), NULL,
1166 STR_WITH_LEN("IO/File.pm"), 0,
1167 HV_FETCH_ISEXISTS, NULL, 0)
1169 require_pv("IO/File.pm");
1170 gv = gv_fetchmeth_pvn(stash, name, name_end - name, 0, flags);
1175 "Can't locate object method \"%" UTF8f
1176 "\" via package \"%" HEKf "\"",
1177 UTF8fARG(is_utf8, name_end - name, name),
1178 HEKfARG(HvNAME_HEK(stash)));
1183 if (last_separator) {
1184 packnamesv = newSVpvn_flags(origname, last_separator - origname,
1185 SVs_TEMP | is_utf8);
1187 packnamesv = error_report;
1191 "Can't locate object method \"%" UTF8f
1192 "\" via package \"%" SVf "\""
1193 " (perhaps you forgot to load \"%" SVf "\"?)",
1194 UTF8fARG(is_utf8, name_end - name, name),
1195 SVfARG(packnamesv), SVfARG(packnamesv));
1199 else if (autoload) {
1200 CV* const cv = GvCV(gv);
1201 if (!CvROOT(cv) && !CvXSUB(cv)) {
1205 if (CvANON(cv) || CvLEXICAL(cv))
1209 if (GvCV(stubgv) != cv) /* orphaned import */
1212 autogv = gv_autoload_pvn(GvSTASH(stubgv),
1213 GvNAME(stubgv), GvNAMELEN(stubgv),
1214 GV_AUTOLOAD_ISMETHOD
1215 | (GvNAMEUTF8(stubgv) ? SVf_UTF8 : 0));
1225 Perl_gv_autoload_sv(pTHX_ HV *stash, SV* namesv, U32 flags)
1229 PERL_ARGS_ASSERT_GV_AUTOLOAD_SV;
1230 namepv = SvPV(namesv, namelen);
1233 return gv_autoload_pvn(stash, namepv, namelen, flags);
1237 Perl_gv_autoload_pv(pTHX_ HV *stash, const char *namepv, U32 flags)
1239 PERL_ARGS_ASSERT_GV_AUTOLOAD_PV;
1240 return gv_autoload_pvn(stash, namepv, strlen(namepv), flags);
1244 Perl_gv_autoload_pvn(pTHX_ HV *stash, const char *name, STRLEN len, U32 flags)
1251 SV *packname = NULL;
1252 U32 is_utf8 = flags & SVf_UTF8 ? SVf_UTF8 : 0;
1254 PERL_ARGS_ASSERT_GV_AUTOLOAD_PVN;
1256 if (len == S_autolen && memEQ(name, S_autoload, S_autolen))
1259 if (SvTYPE(stash) < SVt_PVHV) {
1260 STRLEN packname_len = 0;
1261 const char * const packname_ptr = SvPV_const(MUTABLE_SV(stash), packname_len);
1262 packname = newSVpvn_flags(packname_ptr, packname_len,
1263 SVs_TEMP | SvUTF8(stash));
1267 packname = sv_2mortal(newSVhek(HvNAME_HEK(stash)));
1268 if (flags & GV_SUPER) sv_catpvs(packname, "::SUPER");
1270 if (!(gv = gv_fetchmeth_pvn(stash, S_autoload, S_autolen, FALSE,
1271 is_utf8 | (flags & GV_SUPER))))
1275 if (!(CvROOT(cv) || CvXSUB(cv)))
1279 * Inheriting AUTOLOAD for non-methods no longer works
1282 !(flags & GV_AUTOLOAD_ISMETHOD)
1283 && (GvCVGEN(gv) || GvSTASH(gv) != stash)
1285 Perl_croak(aTHX_ "Use of inherited AUTOLOAD for non-method %" SVf
1286 "::%" UTF8f "() is no longer allowed",
1288 UTF8fARG(is_utf8, len, name));
1291 /* Instead of forcing the XSUB do another lookup for $AUTOLOAD
1292 * and split that value on the last '::', pass along the same data
1293 * via the SvPVX field in the CV, and the stash in CvSTASH.
1295 * Due to an unfortunate accident of history, the SvPVX field
1296 * serves two purposes. It is also used for the subroutine's pro-
1297 * type. Since SvPVX has been documented as returning the sub name
1298 * for a long time, but not as returning the prototype, we have
1299 * to preserve the SvPVX AUTOLOAD behaviour and put the prototype
1302 * We put the prototype in the same allocated buffer, but after
1303 * the sub name. The SvPOK flag indicates the presence of a proto-
1304 * type. The CvAUTOLOAD flag indicates the presence of a sub name.
1305 * If both flags are on, then SvLEN is used to indicate the end of
1306 * the prototype (artificially lower than what is actually allo-
1307 * cated), at the risk of having to reallocate a few bytes unneces-
1308 * sarily--but that should happen very rarely, if ever.
1310 * We use SvUTF8 for both prototypes and sub names, so if one is
1311 * UTF8, the other must be upgraded.
1313 CvSTASH_set(cv, stash);
1314 if (SvPOK(cv)) { /* Ouch! */
1315 SV * const tmpsv = newSVpvn_flags(name, len, is_utf8);
1317 const char *proto = CvPROTO(cv);
1320 sv_utf8_upgrade_flags_grow(tmpsv, 0, CvPROTOLEN(cv) + 2);
1321 ulen = SvCUR(tmpsv);
1322 SvCUR_set(tmpsv, SvCUR(tmpsv) + 1); /* include null in string */
1324 tmpsv, proto, CvPROTOLEN(cv), SV_CATBYTES*!SvUTF8(cv)
1326 SvTEMP_on(tmpsv); /* Allow theft */
1327 sv_setsv_nomg((SV *)cv, tmpsv);
1329 SvREFCNT_dec_NN(tmpsv);
1330 SvLEN_set(cv, SvCUR(cv) + 1);
1331 SvCUR_set(cv, ulen);
1334 sv_setpvn((SV *)cv, name, len);
1338 else SvUTF8_off(cv);
1344 * Given &FOO::AUTOLOAD, set $FOO::AUTOLOAD to desired function name.
1345 * The subroutine's original name may not be "AUTOLOAD", so we don't
1346 * use that, but for lack of anything better we will use the sub's
1347 * original package to look up $AUTOLOAD.
1349 varstash = CvNAMED(cv) ? CvSTASH(cv) : GvSTASH(CvGV(cv));
1350 vargv = *(GV**)hv_fetch(varstash, S_autoload, S_autolen, TRUE);
1354 gv_init_pvn(vargv, varstash, S_autoload, S_autolen, 0);
1355 #ifdef PERL_DONT_CREATE_GVSV
1356 GvSV(vargv) = newSV(0);
1360 varsv = GvSVn(vargv);
1361 SvTAINTED_off(varsv); /* previous $AUTOLOAD taint is obsolete */
1362 /* XXX: this process is not careful to avoid extra magic gets and sets; tied $AUTOLOAD will get noise */
1363 sv_setsv(varsv, packname);
1364 sv_catpvs(varsv, "::");
1365 /* Ensure SvSETMAGIC() is called if necessary. In particular, to clear
1366 tainting if $FOO::AUTOLOAD was previously tainted, but is not now. */
1369 SV_SMAGIC|(is_utf8 ? SV_CATUTF8 : SV_CATBYTES)
1377 /* require_tie_mod() internal routine for requiring a module
1378 * that implements the logic of automatic ties like %! and %-
1379 * It loads the module and then calls the _tie_it subroutine
1380 * with the passed gv as an argument.
1382 * The "gv" parameter should be the glob.
1383 * "varname" holds the 1-char name of the var, used for error messages.
1384 * "namesv" holds the module name. Its refcount will be decremented.
1385 * "flags": if flag & 1 then save the scalar before loading.
1386 * For the protection of $! to work (it is set by this routine)
1387 * the sv slot must already be magicalized.
1390 S_require_tie_mod(pTHX_ GV *gv, const char varname, const char * name,
1391 STRLEN len, const U32 flags)
1393 const SV * const target = varname == '[' ? GvSV(gv) : (SV *)GvHV(gv);
1395 PERL_ARGS_ASSERT_REQUIRE_TIE_MOD;
1397 /* If it is not tied */
1398 if (!target || !SvRMAGICAL(target)
1400 varname == '[' ? PERL_MAGIC_tiedscalar : PERL_MAGIC_tied))
1406 PUSHSTACKi(PERLSI_MAGIC);
1409 #define GET_HV_FETCH_TIE_FUNC \
1410 ( (gvp = (GV **)hv_fetchs(stash, "_tie_it", 0)) \
1412 && ( (isGV(*gvp) && GvCV(*gvp)) \
1413 || (SvROK(*gvp) && SvTYPE(SvRV(*gvp)) == SVt_PVCV) ) \
1416 /* Load the module if it is not loaded. */
1417 if (!(stash = gv_stashpvn(name, len, 0))
1418 || ! GET_HV_FETCH_TIE_FUNC)
1420 SV * const module = newSVpvn(name, len);
1421 const char type = varname == '[' ? '$' : '%';
1424 Perl_load_module(aTHX_ PERL_LOADMOD_NOIMPORT, module, NULL);
1425 assert(sp == PL_stack_sp);
1426 stash = gv_stashpvn(name, len, 0);
1428 Perl_croak(aTHX_ "panic: Can't use %c%c because %s is not available",
1429 type, varname, name);
1430 else if (! GET_HV_FETCH_TIE_FUNC)
1431 Perl_croak(aTHX_ "panic: Can't use %c%c because %s does not define _tie_it",
1432 type, varname, name);
1434 /* Now call the tie function. It should be in *gvp. */
1435 assert(gvp); assert(*gvp);
1439 call_sv((SV *)*gvp, G_VOID|G_DISCARD);
1445 /* add a require_tie_mod_s - the _s suffix is similar to pvs type suffixes,
1446 * IOW it means we do STR_WITH_LEN() ourselves and the user should pass in
1447 * a true string WITHOUT a len.
1449 #define require_tie_mod_s(gv, varname, name, flags) \
1450 S_require_tie_mod(aTHX_ gv, varname, STR_WITH_LEN(name), flags)
1453 =for apidoc gv_stashpv
1455 Returns a pointer to the stash for a specified package. Uses C<strlen> to
1456 determine the length of C<name>, then calls C<gv_stashpvn()>.
1462 Perl_gv_stashpv(pTHX_ const char *name, I32 create)
1464 PERL_ARGS_ASSERT_GV_STASHPV;
1465 return gv_stashpvn(name, strlen(name), create);
1469 =for apidoc gv_stashpvn
1471 Returns a pointer to the stash for a specified package. The C<namelen>
1472 parameter indicates the length of the C<name>, in bytes. C<flags> is passed
1473 to C<gv_fetchpvn_flags()>, so if set to C<GV_ADD> then the package will be
1474 created if it does not already exist. If the package does not exist and
1475 C<flags> is 0 (or any other setting that does not create packages) then C<NULL>
1478 Flags may be one of:
1480 GV_ADD Create and initialize the package if doesn't
1482 GV_NOADD_NOINIT Don't create the package,
1483 GV_ADDMG GV_ADD iff the GV is magical
1484 GV_NOINIT GV_ADD, but don't initialize
1485 GV_NOEXPAND Don't expand SvOK() entries to PVGV
1486 SVf_UTF8 The name is in UTF-8
1488 The most important of which are probably C<GV_ADD> and C<SVf_UTF8>.
1490 Note, use of C<gv_stashsv> instead of C<gv_stashpvn> where possible is strongly
1491 recommended for performance reasons.
1493 =for apidoc Amnh||GV_ADD
1494 =for apidoc Amnh||GV_NOADD_NOINIT
1495 =for apidoc Amnh||GV_NOINIT
1496 =for apidoc Amnh||GV_NOEXPAND
1497 =for apidoc Amnh||GV_ADDMG
1498 =for apidoc Amnh||SVf_UTF8
1504 gv_stashpvn_internal
1506 Perform the internal bits of gv_stashsvpvn_cached. You could think of this
1507 as being one half of the logic. Not to be called except from gv_stashsvpvn_cached().
1511 PERL_STATIC_INLINE HV*
1512 S_gv_stashpvn_internal(pTHX_ const char *name, U32 namelen, I32 flags)
1518 U32 tmplen = namelen + 2;
1520 PERL_ARGS_ASSERT_GV_STASHPVN_INTERNAL;
1522 if (tmplen <= sizeof smallbuf)
1525 Newx(tmpbuf, tmplen, char);
1526 Copy(name, tmpbuf, namelen, char);
1527 tmpbuf[namelen] = ':';
1528 tmpbuf[namelen+1] = ':';
1529 tmpgv = gv_fetchpvn_flags(tmpbuf, tmplen, flags, SVt_PVHV);
1530 if (tmpbuf != smallbuf)
1532 if (!tmpgv || !isGV_with_GP(tmpgv))
1534 stash = GvHV(tmpgv);
1535 if (!(flags & ~GV_NOADD_MASK) && !stash) return NULL;
1537 if (!HvNAME_get(stash)) {
1538 hv_name_set(stash, name, namelen, flags & SVf_UTF8 ? SVf_UTF8 : 0 );
1540 /* FIXME: This is a repeat of logic in gv_fetchpvn_flags */
1541 /* If the containing stash has multiple effective
1542 names, see that this one gets them, too. */
1543 if (HvAUX(GvSTASH(tmpgv))->xhv_name_count)
1544 mro_package_moved(stash, NULL, tmpgv, 1);
1550 =for apidoc gv_stashsvpvn_cached
1552 Returns a pointer to the stash for a specified package, possibly
1553 cached. Implements both L<perlapi/C<gv_stashpvn>> and
1554 L<perlapi/C<gv_stashsv>>.
1556 Requires one of either C<namesv> or C<namepv> to be non-null.
1558 If the flag C<GV_CACHE_ONLY> is set, return the stash only if found in the
1559 cache; see L<perlapi/C<gv_stashpvn>> for details on the other C<flags>.
1561 Note it is strongly preferred for C<namesv> to be non-null, for performance
1564 =for apidoc Emnh||GV_CACHE_ONLY
1569 #define PERL_ARGS_ASSERT_GV_STASHSVPVN_CACHED \
1570 assert(namesv || name)
1573 Perl_gv_stashsvpvn_cached(pTHX_ SV *namesv, const char *name, U32 namelen, I32 flags)
1578 PERL_ARGS_ASSERT_GV_STASHSVPVN_CACHED;
1580 he = (HE *)hv_common(
1581 PL_stashcache, namesv, name, namelen,
1582 (flags & SVf_UTF8) ? HVhek_UTF8 : 0, 0, NULL, 0
1589 hv = INT2PTR(HV*, SvIVX(sv));
1590 assert(SvTYPE(hv) == SVt_PVHV);
1593 else if (flags & GV_CACHE_ONLY) return NULL;
1596 if (SvOK(namesv)) { /* prevent double uninit warning */
1598 name = SvPV_const(namesv, len);
1600 flags |= SvUTF8(namesv);
1602 name = ""; namelen = 0;
1605 stash = gv_stashpvn_internal(name, namelen, flags);
1607 if (stash && namelen) {
1608 SV* const ref = newSViv(PTR2IV(stash));
1609 (void)hv_store(PL_stashcache, name,
1610 (flags & SVf_UTF8) ? -(I32)namelen : (I32)namelen, ref, 0);
1617 Perl_gv_stashpvn(pTHX_ const char *name, U32 namelen, I32 flags)
1619 PERL_ARGS_ASSERT_GV_STASHPVN;
1620 return gv_stashsvpvn_cached(NULL, name, namelen, flags);
1624 =for apidoc gv_stashsv
1626 Returns a pointer to the stash for a specified package. See
1629 Note this interface is strongly preferred over C<gv_stashpvn> for performance
1636 Perl_gv_stashsv(pTHX_ SV *sv, I32 flags)
1638 PERL_ARGS_ASSERT_GV_STASHSV;
1639 return gv_stashsvpvn_cached(sv, NULL, 0, flags);
1642 Perl_gv_fetchpv(pTHX_ const char *nambeg, I32 flags, const svtype sv_type) {
1643 PERL_ARGS_ASSERT_GV_FETCHPV;
1644 return gv_fetchpvn_flags(nambeg, strlen(nambeg), flags, sv_type);
1648 Perl_gv_fetchsv(pTHX_ SV *name, I32 flags, const svtype sv_type) {
1650 const char * const nambeg =
1651 SvPV_flags_const(name, len, flags & GV_NO_SVGMAGIC ? 0 : SV_GMAGIC);
1652 PERL_ARGS_ASSERT_GV_FETCHSV;
1653 return gv_fetchpvn_flags(nambeg, len, flags | SvUTF8(name), sv_type);
1656 PERL_STATIC_INLINE void
1657 S_gv_magicalize_isa(pTHX_ GV *gv)
1661 PERL_ARGS_ASSERT_GV_MAGICALIZE_ISA;
1665 sv_magic(MUTABLE_SV(av), MUTABLE_SV(gv), PERL_MAGIC_isa,
1669 /* This function grabs name and tries to split a stash and glob
1670 * from its contents. TODO better description, comments
1672 * If the function returns TRUE and 'name == name_end', then
1673 * 'gv' can be directly returned to the caller of gv_fetchpvn_flags
1675 PERL_STATIC_INLINE bool
1676 S_parse_gv_stash_name(pTHX_ HV **stash, GV **gv, const char **name,
1677 STRLEN *len, const char *nambeg, STRLEN full_len,
1678 const U32 is_utf8, const I32 add)
1680 char *tmpfullbuf = NULL; /* only malloc one big chunk of memory when the smallbuff is not large enough */
1681 const char *name_cursor;
1682 const char *const name_end = nambeg + full_len;
1683 const char *const name_em1 = name_end - 1;
1684 char smallbuf[64]; /* small buffer to avoid a malloc when possible */
1686 PERL_ARGS_ASSERT_PARSE_GV_STASH_NAME;
1690 && isIDFIRST_lazy_if_safe(*name + 1, name_end, is_utf8))
1692 /* accidental stringify on a GV? */
1696 for (name_cursor = *name; name_cursor < name_end; name_cursor++) {
1697 if (name_cursor < name_em1 &&
1698 ((*name_cursor == ':' && name_cursor[1] == ':')
1699 || *name_cursor == '\''))
1702 *stash = PL_defstash;
1703 if (!*stash || !SvREFCNT(*stash)) /* symbol table under destruction */
1706 *len = name_cursor - *name;
1707 if (name_cursor > nambeg) { /* Skip for initial :: or ' */
1710 if (*name_cursor == ':') {
1714 else { /* using ' for package separator */
1715 /* use our pre-allocated buffer when possible to save a malloc */
1717 if ( *len+2 <= sizeof smallbuf)
1720 /* only malloc once if needed */
1721 if (tmpfullbuf == NULL) /* only malloc&free once, a little more than needed */
1722 Newx(tmpfullbuf, full_len+2, char);
1723 tmpbuf = tmpfullbuf;
1725 Copy(*name, tmpbuf, *len, char);
1726 tmpbuf[(*len)++] = ':';
1727 tmpbuf[(*len)++] = ':';
1730 gvp = (GV**)hv_fetch(*stash, key, is_utf8 ? -((I32)*len) : (I32)*len, add);
1731 *gv = gvp ? *gvp : NULL;
1732 if (!*gv || *gv == (const GV *)&PL_sv_undef) {
1735 /* here we know that *gv && *gv != &PL_sv_undef */
1736 if (SvTYPE(*gv) != SVt_PVGV)
1737 gv_init_pvn(*gv, *stash, key, *len, (add & GV_ADDMULTI)|is_utf8);
1741 if (!(*stash = GvHV(*gv))) {
1742 *stash = GvHV(*gv) = newHV();
1743 if (!HvNAME_get(*stash)) {
1744 if (GvSTASH(*gv) == PL_defstash && *len == 6
1745 && strBEGINs(*name, "CORE"))
1746 hv_name_sets(*stash, "CORE", 0);
1749 *stash, nambeg, name_cursor-nambeg, is_utf8
1751 /* If the containing stash has multiple effective
1752 names, see that this one gets them, too. */
1753 if (HvAUX(GvSTASH(*gv))->xhv_name_count)
1754 mro_package_moved(*stash, NULL, *gv, 1);
1757 else if (!HvNAME_get(*stash))
1758 hv_name_set(*stash, nambeg, name_cursor - nambeg, is_utf8);
1761 if (*name_cursor == ':')
1763 *name = name_cursor+1;
1764 if (*name == name_end) {
1766 *gv = MUTABLE_GV(*hv_fetchs(PL_defstash, "main::", TRUE));
1767 if (SvTYPE(*gv) != SVt_PVGV) {
1768 gv_init_pvn(*gv, PL_defstash, "main::", 6,
1771 MUTABLE_HV(SvREFCNT_inc_simple(PL_defstash));
1778 *len = name_cursor - *name;
1780 Safefree(tmpfullbuf); /* free our tmpfullbuf if it was used */
1783 Safefree(tmpfullbuf); /* free our tmpfullbuf if it was used */
1788 /* Checks if an unqualified name is in the main stash */
1789 PERL_STATIC_INLINE bool
1790 S_gv_is_in_main(pTHX_ const char *name, STRLEN len, const U32 is_utf8)
1792 PERL_ARGS_ASSERT_GV_IS_IN_MAIN;
1794 /* If it's an alphanumeric variable */
1795 if ( len && isIDFIRST_lazy_if_safe(name, name + len, is_utf8) ) {
1796 /* Some "normal" variables are always in main::,
1797 * like INC or STDOUT.
1805 if ((name[0] == 'I' && name[1] == 'N' && name[2] == 'C')
1806 || (name[0] == 'E' && name[1] == 'N' && name[2] == 'V')
1807 || (name[0] == 'S' && name[1] == 'I' && name[2] == 'G'))
1811 if (name[0] == 'A' && name[1] == 'R' && name[2] == 'G'
1816 if (name[0] == 'S' && name[1] == 'T' && name[2] == 'D'
1817 && name[3] == 'I' && name[4] == 'N')
1821 if ((name[0] == 'S' && name[1] == 'T' && name[2] == 'D')
1822 &&((name[3] == 'O' && name[4] == 'U' && name[5] == 'T')
1823 ||(name[3] == 'E' && name[4] == 'R' && name[5] == 'R')))
1827 if (name[0] == 'A' && name[1] == 'R' && name[2] == 'G'
1828 && name[3] == 'V' && name[4] == 'O' && name[5] == 'U'
1834 /* *{""}, or a special variable like $@ */
1842 /* This function is called if parse_gv_stash_name() failed to
1843 * find a stash, or if GV_NOTQUAL or an empty name was passed
1844 * to gv_fetchpvn_flags.
1846 * It returns FALSE if the default stash can't be found nor created,
1847 * which might happen during global destruction.
1849 PERL_STATIC_INLINE bool
1850 S_find_default_stash(pTHX_ HV **stash, const char *name, STRLEN len,
1851 const U32 is_utf8, const I32 add,
1852 const svtype sv_type)
1854 PERL_ARGS_ASSERT_FIND_DEFAULT_STASH;
1856 /* No stash in name, so see how we can default */
1858 if ( gv_is_in_main(name, len, is_utf8) ) {
1859 *stash = PL_defstash;
1862 if (IN_PERL_COMPILETIME) {
1863 *stash = PL_curstash;
1864 if (add && (PL_hints & HINT_STRICT_VARS) &&
1865 sv_type != SVt_PVCV &&
1866 sv_type != SVt_PVGV &&
1867 sv_type != SVt_PVFM &&
1868 sv_type != SVt_PVIO &&
1869 !(len == 1 && sv_type == SVt_PV &&
1870 (*name == 'a' || *name == 'b')) )
1872 GV**gvp = (GV**)hv_fetch(*stash,name,is_utf8 ? -(I32)len : (I32)len,0);
1873 if (!gvp || *gvp == (const GV *)&PL_sv_undef ||
1874 SvTYPE(*gvp) != SVt_PVGV)
1878 else if ((sv_type == SVt_PV && !GvIMPORTED_SV(*gvp)) ||
1879 (sv_type == SVt_PVAV && !GvIMPORTED_AV(*gvp)) ||
1880 (sv_type == SVt_PVHV && !GvIMPORTED_HV(*gvp)) )
1882 /* diag_listed_as: Variable "%s" is not imported%s */
1884 aTHX_ packWARN(WARN_MISC),
1885 "Variable \"%c%" UTF8f "\" is not imported",
1886 sv_type == SVt_PVAV ? '@' :
1887 sv_type == SVt_PVHV ? '%' : '$',
1888 UTF8fARG(is_utf8, len, name));
1891 aTHX_ packWARN(WARN_MISC),
1892 "\t(Did you mean &%" UTF8f " instead?)\n",
1893 UTF8fARG(is_utf8, len, name)
1900 /* Use the current op's stash */
1901 *stash = CopSTASH(PL_curcop);
1906 if (add && !PL_in_clean_all) {
1908 qerror(Perl_mess(aTHX_
1909 "Global symbol \"%s%" UTF8f
1910 "\" requires explicit package name (did you forget to "
1911 "declare \"my %s%" UTF8f "\"?)",
1912 (sv_type == SVt_PV ? "$"
1913 : sv_type == SVt_PVAV ? "@"
1914 : sv_type == SVt_PVHV ? "%"
1915 : ""), UTF8fARG(is_utf8, len, name),
1916 (sv_type == SVt_PV ? "$"
1917 : sv_type == SVt_PVAV ? "@"
1918 : sv_type == SVt_PVHV ? "%"
1919 : ""), UTF8fARG(is_utf8, len, name)));
1920 /* To maintain the output of errors after the strict exception
1921 * above, and to keep compat with older releases, rather than
1922 * placing the variables in the pad, we place
1923 * them in the <none>:: stash.
1925 gv = gv_fetchpvs("<none>::", GV_ADDMULTI, SVt_PVHV);
1927 /* symbol table under destruction */
1936 if (!SvREFCNT(*stash)) /* symbol table under destruction */
1942 /* gv_magicalize only turns on the SVf_READONLY flag, not SVf_PROTECT. So
1943 redefine SvREADONLY_on for that purpose. We don’t use it later on in
1945 #undef SvREADONLY_on
1946 #define SvREADONLY_on(sv) (SvFLAGS(sv) |= SVf_READONLY)
1948 /* gv_magicalize() is called by gv_fetchpvn_flags when creating
1950 * Note that it does not insert the GV into the stash prior to
1951 * magicalization, which some variables require need in order
1952 * to work (like %+, %-, %!), so callers must take care of
1955 * It returns true if the gv did turn out to be magical one; i.e.,
1956 * if gv_magicalize actually did something.
1958 PERL_STATIC_INLINE bool
1959 S_gv_magicalize(pTHX_ GV *gv, HV *stash, const char *name, STRLEN len,
1960 const svtype sv_type)
1964 PERL_ARGS_ASSERT_GV_MAGICALIZE;
1966 if (stash != PL_defstash) { /* not the main stash */
1967 /* We only have to check for a few names here: a, b, EXPORT, ISA
1968 and VERSION. All the others apply only to the main stash or to
1969 CORE (which is checked right after this). */
1974 len >= 6 && name[1] == 'X' &&
1975 (memEQs(name, len, "EXPORT")
1976 ||memEQs(name, len, "EXPORT_OK")
1977 ||memEQs(name, len, "EXPORT_FAIL")
1978 ||memEQs(name, len, "EXPORT_TAGS"))
1983 if (memEQs(name, len, "ISA"))
1984 gv_magicalize_isa(gv);
1987 if (memEQs(name, len, "VERSION"))
1991 if (stash == PL_debstash && memEQs(name, len, "args")) {
1992 GvMULTI_on(gv_AVadd(gv));
1997 if (len == 1 && sv_type == SVt_PV)
2006 if (len > 1 /* shortest is uc */ && HvNAMELEN_get(stash) == 4) {
2007 /* Avoid null warning: */
2008 const char * const stashname = HvNAME(stash); assert(stashname);
2009 if (strBEGINs(stashname, "CORE"))
2010 S_maybe_add_coresub(aTHX_ 0, gv, name, len);
2017 /* Nothing else to do.
2018 The compiler will probably turn the switch statement into a
2019 branch table. Make sure we avoid even that small overhead for
2020 the common case of lower case variable names. (On EBCDIC
2021 platforms, we can't just do:
2022 if (NATIVE_TO_ASCII(*name) > NATIVE_TO_ASCII('V') ) {
2023 because cases like '\027' in the switch statement below are
2024 C1 (non-ASCII) controls on those platforms, so the remapping
2025 would make them larger than 'V')
2032 if (memEQs(name, len, "ARGV")) {
2033 IoFLAGS(GvIOn(gv)) |= IOf_ARGV|IOf_START;
2035 else if (memEQs(name, len, "ARGVOUT")) {
2041 len >= 6 && name[1] == 'X' &&
2042 (memEQs(name, len, "EXPORT")
2043 ||memEQs(name, len, "EXPORT_OK")
2044 ||memEQs(name, len, "EXPORT_FAIL")
2045 ||memEQs(name, len, "EXPORT_TAGS"))
2050 if (memEQs(name, len, "ISA")) {
2051 gv_magicalize_isa(gv);
2055 if (memEQs(name, len, "SIG")) {
2058 if (!PL_psig_name) {
2059 Newxz(PL_psig_name, 2 * SIG_SIZE, SV*);
2060 Newxz(PL_psig_pend, SIG_SIZE, int);
2061 PL_psig_ptr = PL_psig_name + SIG_SIZE;
2063 /* I think that the only way to get here is to re-use an
2064 embedded perl interpreter, where the previous
2065 use didn't clean up fully because
2066 PL_perl_destruct_level was 0. I'm not sure that we
2067 "support" that, in that I suspect in that scenario
2068 there are sufficient other garbage values left in the
2069 interpreter structure that something else will crash
2070 before we get here. I suspect that this is one of
2071 those "doctor, it hurts when I do this" bugs. */
2072 Zero(PL_psig_name, 2 * SIG_SIZE, SV*);
2073 Zero(PL_psig_pend, SIG_SIZE, int);
2077 hv_magic(hv, NULL, PERL_MAGIC_sig);
2078 for (i = 1; i < SIG_SIZE; i++) {
2079 SV * const * const init = hv_fetch(hv, PL_sig_name[i], strlen(PL_sig_name[i]), 1);
2081 sv_setsv(*init, &PL_sv_undef);
2086 if (memEQs(name, len, "VERSION"))
2089 case '\003': /* $^CHILD_ERROR_NATIVE */
2090 if (memEQs(name, len, "\003HILD_ERROR_NATIVE"))
2092 /* @{^CAPTURE} %{^CAPTURE} */
2093 if (memEQs(name, len, "\003APTURE")) {
2094 AV* const av = GvAVn(gv);
2095 const Size_t n = *name;
2097 sv_magic(MUTABLE_SV(av), (SV*)n, PERL_MAGIC_regdata, NULL, 0);
2100 require_tie_mod_s(gv, '+', "Tie::Hash::NamedCapture",0);
2102 } else /* %{^CAPTURE_ALL} */
2103 if (memEQs(name, len, "\003APTURE_ALL")) {
2104 require_tie_mod_s(gv, '-', "Tie::Hash::NamedCapture",0);
2107 case '\005': /* $^ENCODING */
2108 if (memEQs(name, len, "\005NCODING"))
2111 case '\007': /* $^GLOBAL_PHASE */
2112 if (memEQs(name, len, "\007LOBAL_PHASE"))
2115 case '\014': /* $^LAST_FH */
2116 if (memEQs(name, len, "\014AST_FH"))
2119 case '\015': /* $^MATCH */
2120 if (memEQs(name, len, "\015ATCH")) {
2121 paren = RX_BUFF_IDX_CARET_FULLMATCH;
2125 case '\017': /* $^OPEN */
2126 if (memEQs(name, len, "\017PEN"))
2129 case '\020': /* $^PREMATCH $^POSTMATCH */
2130 if (memEQs(name, len, "\020REMATCH")) {
2131 paren = RX_BUFF_IDX_CARET_PREMATCH;
2134 if (memEQs(name, len, "\020OSTMATCH")) {
2135 paren = RX_BUFF_IDX_CARET_POSTMATCH;
2140 if (memEQs(name, len, "\023AFE_LOCALES"))
2143 case '\024': /* ${^TAINT} */
2144 if (memEQs(name, len, "\024AINT"))
2147 case '\025': /* ${^UNICODE}, ${^UTF8LOCALE} */
2148 if (memEQs(name, len, "\025NICODE"))
2150 if (memEQs(name, len, "\025TF8LOCALE"))
2152 if (memEQs(name, len, "\025TF8CACHE"))
2155 case '\027': /* $^WARNING_BITS */
2156 if (memEQs(name, len, "\027ARNING_BITS"))
2159 else if (memEQs(name, len, "\027IN32_SLOPPY_STAT"))
2173 /* Ensures that we have an all-digit variable, ${"1foo"} fails
2176 if (!grok_atoUV(name, &uv, NULL) || uv > I32_MAX)
2178 /* XXX why are we using a SSize_t? */
2179 paren = (SSize_t)(I32)uv;
2185 /* Names of length 1. (Or 0. But name is NUL terminated, so that will
2186 be case '\0' in this switch statement (ie a default case) */
2189 paren = RX_BUFF_IDX_FULLMATCH;
2192 paren = RX_BUFF_IDX_PREMATCH;
2195 paren = RX_BUFF_IDX_POSTMATCH;
2197 #ifdef PERL_SAWAMPERSAND
2199 sv_type == SVt_PVAV ||
2200 sv_type == SVt_PVHV ||
2201 sv_type == SVt_PVCV ||
2202 sv_type == SVt_PVFM ||
2204 )) { PL_sawampersand |=
2208 ? SAWAMPERSAND_MIDDLE
2209 : SAWAMPERSAND_RIGHT;
2222 paren = *name - '0';
2225 /* Flag the capture variables with a NULL mg_ptr
2226 Use mg_len for the array index to lookup. */
2227 sv_magic(GvSVn(gv), MUTABLE_SV(gv), PERL_MAGIC_sv, NULL, paren);
2231 sv_setpv(GvSVn(gv),PL_chopset);
2235 #ifdef COMPLEX_STATUS
2236 SvUPGRADE(GvSVn(gv), SVt_PVLV);
2242 /* If %! has been used, automatically load Errno.pm. */
2244 sv_magic(GvSVn(gv), MUTABLE_SV(gv), PERL_MAGIC_sv, name, len);
2246 /* magicalization must be done before require_tie_mod_s is called */
2247 if (sv_type == SVt_PVHV || sv_type == SVt_PVGV)
2248 require_tie_mod_s(gv, '!', "Errno", 1);
2251 case '-': /* $-, %-, @- */
2252 case '+': /* $+, %+, @+ */
2253 GvMULTI_on(gv); /* no used once warnings here */
2255 sv_magic(GvSVn(gv), MUTABLE_SV(gv), PERL_MAGIC_sv, name, len);
2257 SvREADONLY_on(GvSVn(gv));
2260 if (sv_type == SVt_PVHV || sv_type == SVt_PVGV)
2261 require_tie_mod_s(gv, *name, "Tie::Hash::NamedCapture",0);
2264 AV* const av = GvAVn(gv);
2265 const Size_t n = *name;
2267 sv_magic(MUTABLE_SV(av), (SV*)n, PERL_MAGIC_regdata, NULL, 0);
2273 if (sv_type == SVt_PV)
2274 /* diag_listed_as: $* is no longer supported as of Perl 5.30 */
2275 Perl_croak(aTHX_ "$%c is no longer supported as of Perl 5.30", *name);
2277 case '\010': /* $^H */
2279 HV *const hv = GvHVn(gv);
2280 hv_magic(hv, NULL, PERL_MAGIC_hints);
2283 case '\023': /* $^S */
2285 SvREADONLY_on(GvSVn(gv));
2302 case '\001': /* $^A */
2303 case '\003': /* $^C */
2304 case '\004': /* $^D */
2305 case '\005': /* $^E */
2306 case '\006': /* $^F */
2307 case '\011': /* $^I, NOT \t in EBCDIC */
2308 case '\016': /* $^N */
2309 case '\017': /* $^O */
2310 case '\020': /* $^P */
2311 case '\024': /* $^T */
2312 case '\027': /* $^W */
2314 sv_magic(GvSVn(gv), MUTABLE_SV(gv), PERL_MAGIC_sv, name, len);
2317 case '\014': /* $^L */
2318 sv_setpvs(GvSVn(gv),"\f");
2321 sv_setpvs(GvSVn(gv),"\034");
2325 SV * const sv = GvSV(gv);
2326 if (!sv_derived_from(PL_patchlevel, "version"))
2327 upg_version(PL_patchlevel, TRUE);
2328 GvSV(gv) = vnumify(PL_patchlevel);
2329 SvREADONLY_on(GvSV(gv));
2333 case '\026': /* $^V */
2335 SV * const sv = GvSV(gv);
2336 GvSV(gv) = new_version(PL_patchlevel);
2337 SvREADONLY_on(GvSV(gv));
2343 if (sv_type == SVt_PV)
2349 /* Return true if we actually did something. */
2350 return GvAV(gv) || GvHV(gv) || GvIO(gv) || GvCV(gv)
2352 SvOK(GvSV(gv)) || SvMAGICAL(GvSV(gv))
2357 /* If we do ever start using this later on in the file, we need to make
2358 sure we don’t accidentally use the wrong definition. */
2359 #undef SvREADONLY_on
2361 /* This function is called when the stash already holds the GV of the magic
2362 * variable we're looking for, but we need to check that it has the correct
2363 * kind of magic. For example, if someone first uses $! and then %!, the
2364 * latter would end up here, and we add the Errno tie to the HASH slot of
2367 PERL_STATIC_INLINE void
2368 S_maybe_multimagic_gv(pTHX_ GV *gv, const char *name, const svtype sv_type)
2370 PERL_ARGS_ASSERT_MAYBE_MULTIMAGIC_GV;
2372 if (sv_type == SVt_PVHV || sv_type == SVt_PVGV) {
2374 require_tie_mod_s(gv, '!', "Errno", 1);
2375 else if (*name == '-' || *name == '+')
2376 require_tie_mod_s(gv, *name, "Tie::Hash::NamedCapture", 0);
2377 } else if (sv_type == SVt_PV) {
2378 if (*name == '*' || *name == '#') {
2379 /* diag_listed_as: $* is no longer supported as of Perl 5.30 */
2380 Perl_croak(aTHX_ "$%c is no longer supported as of Perl 5.30", *name);
2383 if (sv_type==SVt_PV || sv_type==SVt_PVGV) {
2385 #ifdef PERL_SAWAMPERSAND
2387 PL_sawampersand |= SAWAMPERSAND_LEFT;
2391 PL_sawampersand |= SAWAMPERSAND_MIDDLE;
2395 PL_sawampersand |= SAWAMPERSAND_RIGHT;
2404 =for apidoc gv_fetchpv
2405 =for apidoc_item |GV *|gv_fetchpvn|const char * nambeg|STRLEN full_len|I32 flags|const svtype sv_type
2406 =for apidoc_item ||gv_fetchpvn_flags
2407 =for apidoc_item |GV *|gv_fetchpvs|"name"|I32 flags|const svtype sv_type
2408 =for apidoc_item ||gv_fetchsv
2409 =for apidoc_item |GV *|gv_fetchsv_nomg|SV *name|I32 flags|const svtype sv_type
2411 These all return the GV of type C<sv_type> whose name is given by the inputs,
2412 or NULL if no GV of that name and type could be found. See L<perlguts/Stashes
2415 The only differences are how the input name is specified, and if 'get' magic is
2416 normally used in getting that name.
2418 Don't be fooled by the fact that only one form has C<flags> in its name. They
2419 all have a C<flags> parameter in fact, and all the flag bits have the same
2422 If any of the flags C<GV_ADD>, C<GV_ADDMG>, C<GV_ADDWARN>, C<GV_ADDMULTI>, or
2423 C<GV_NOINIT> is set, a GV is created if none already exists for the input name
2424 and type. However, C<GV_ADDMG> will only do the creation for magical GV's.
2425 For all of these flags except C<GV_NOINIT>, C<L</gv_init_pvn>> is called after
2426 the addition. C<GV_ADDWARN> is used when the caller expects that adding won't
2427 be necessary because the symbol should already exist; but if not, add it
2428 anyway, with a warning that it was unexpectedly absent. The C<GV_ADDMULTI>
2429 flag means to pretend that the GV has been seen before (I<i.e.>, suppress "Used
2432 The flag C<GV_NOADD_NOINIT> causes C<L</gv_init_pvn>> not be to called if the
2433 GV existed but isn't PVGV.
2435 If the C<SVf_UTF8> bit is set, the name is treated as being encoded in UTF-8;
2436 otherwise the name won't be considered to be UTF-8 in the C<pv>-named forms,
2437 and the UTF-8ness of the underlying SVs will be used in the C<sv> forms.
2439 If the flag C<GV_NOTQUAL> is set, the caller warrants that the input name is a
2440 plain symbol name, not qualified with a package, otherwise the name is checked
2441 for being a qualified one.
2443 In C<gv_fetchpv>, C<nambeg> is a C string, NUL-terminated with no intermediate
2446 In C<gv_fetchpvs>, C<name> is a literal C string, hence is enclosed in
2449 C<gv_fetchpvn> and C<gv_fetchpvn_flags> are identical. In these, <nambeg> is
2450 a Perl string whose byte length is given by C<full_len>, and may contain
2453 In C<gv_fetchsv> and C<gv_fetchsv_nomg>, the name is extracted from the PV of
2454 the input C<name> SV. The only difference between these two forms is that
2455 'get' magic is normally done on C<name> in C<gv_fetchsv>, and always skipped
2456 with C<gv_fetchsv_nomg>. Including C<GV_NO_SVGMAGIC> in the C<flags> parameter
2457 to C<gv_fetchsv> makes it behave identically to C<gv_fetchsv_nomg>.
2459 =for apidoc Amnh||GV_ADD
2460 =for apidoc Amnh||GV_ADDMG
2461 =for apidoc Amnh||GV_ADDMULTI
2462 =for apidoc Amnh||GV_ADDWARN
2463 =for apidoc Amnh||GV_NOADD_NOINIT
2464 =for apidoc Amnh||GV_NOINIT
2465 =for apidoc Amnh||GV_NOTQUAL
2466 =for apidoc Amnh||GV_NO_SVGMAGIC
2467 =for apidoc Amnh||SVf_UTF8
2473 Perl_gv_fetchpvn_flags(pTHX_ const char *nambeg, STRLEN full_len, I32 flags,
2474 const svtype sv_type)
2476 const char *name = nambeg;
2481 const I32 no_init = flags & (GV_NOADD_NOINIT | GV_NOINIT);
2482 const I32 no_expand = flags & GV_NOEXPAND;
2483 const I32 add = flags & ~GV_NOADD_MASK;
2484 const U32 is_utf8 = flags & SVf_UTF8;
2485 bool addmg = cBOOL(flags & GV_ADDMG);
2486 const char *const name_end = nambeg + full_len;
2489 PERL_ARGS_ASSERT_GV_FETCHPVN_FLAGS;
2491 /* If we have GV_NOTQUAL, the caller promised that
2492 * there is no stash, so we can skip the check.
2493 * Similarly if full_len is 0, since then we're
2494 * dealing with something like *{""} or ""->foo()
2496 if ((flags & GV_NOTQUAL) || !full_len) {
2499 else if (parse_gv_stash_name(&stash, &gv, &name, &len, nambeg, full_len, is_utf8, add)) {
2500 if (name == name_end) return gv;
2506 if (!stash && !find_default_stash(&stash, name, len, is_utf8, add, sv_type)) {
2510 /* By this point we should have a stash and a name */
2511 gvp = (GV**)hv_fetch(stash,name,is_utf8 ? -(I32)len : (I32)len,add);
2512 if (!gvp || *gvp == (const GV *)&PL_sv_undef) {
2513 if (addmg) gv = (GV *)newSV(0); /* tentatively */
2516 else gv = *gvp, addmg = 0;
2517 /* From this point on, addmg means gv has not been inserted in the
2520 if (SvTYPE(gv) == SVt_PVGV) {
2521 /* The GV already exists, so return it, but check if we need to do
2522 * anything else with it before that.
2525 /* This is the heuristic that handles if a variable triggers the
2526 * 'used only once' warning. If there's already a GV in the stash
2527 * with this name, then we assume that the variable has been used
2528 * before and turn its MULTI flag on.
2529 * It's a heuristic because it can easily be "tricked", like with
2530 * BEGIN { $a = 1; $::{foo} = *a }; () = $foo
2531 * not warning about $main::foo being used just once
2534 gv_init_svtype(gv, sv_type);
2535 /* You reach this path once the typeglob has already been created,
2536 either by the same or a different sigil. If this path didn't
2537 exist, then (say) referencing $! first, and %! second would
2538 mean that %! was not handled correctly. */
2539 if (len == 1 && stash == PL_defstash) {
2540 maybe_multimagic_gv(gv, name, sv_type);
2542 else if (sv_type == SVt_PVAV
2543 && memEQs(name, len, "ISA")
2544 && (!GvAV(gv) || !SvSMAGICAL(GvAV(gv))))
2545 gv_magicalize_isa(gv);
2548 } else if (no_init) {
2552 /* If GV_NOEXPAND is true and what we got off the stash is a ref,
2553 * don't expand it to a glob. This is an optimization so that things
2554 * copying constants over, like Exporter, don't have to be rewritten
2555 * to take into account that you can store more than just globs in
2558 else if (no_expand && SvROK(gv)) {
2563 /* Adding a new symbol.
2564 Unless of course there was already something non-GV here, in which case
2565 we want to behave as if there was always a GV here, containing some sort
2567 Otherwise we run the risk of creating things like GvIO, which can cause
2568 subtle bugs. eg the one that tripped up SQL::Translator */
2570 faking_it = SvOK(gv);
2572 if (add & GV_ADDWARN)
2573 Perl_ck_warner_d(aTHX_ packWARN(WARN_INTERNAL),
2574 "Had to create %" UTF8f " unexpectedly",
2575 UTF8fARG(is_utf8, name_end-nambeg, nambeg));
2576 gv_init_pvn(gv, stash, name, len, (add & GV_ADDMULTI)|is_utf8);
2579 && isIDFIRST_lazy_if_safe(name, name + full_len, is_utf8)
2580 && !ckWARN(WARN_ONCE) )
2585 /* set up magic where warranted */
2586 if ( gv_magicalize(gv, stash, name, len, sv_type) ) {
2589 /* gv_magicalize magicalised this gv, so we want it
2590 * stored in the symtab.
2591 * Effectively the caller is asking, ‘Does this gv exist?’
2592 * And we respond, ‘Er, *now* it does!’
2594 (void)hv_store(stash,name,len,(SV *)gv,0);
2598 /* The temporary GV created above */
2599 SvREFCNT_dec_NN(gv);
2603 if (gv) gv_init_svtype(gv, faking_it ? SVt_PVCV : sv_type);
2608 Perl_gv_fullname4(pTHX_ SV *sv, const GV *gv, const char *prefix, bool keepmain)
2611 const HV * const hv = GvSTASH(gv);
2613 PERL_ARGS_ASSERT_GV_FULLNAME4;
2615 sv_setpv(sv, prefix ? prefix : "");
2617 if (hv && (name = HvNAME(hv))) {
2618 const STRLEN len = HvNAMELEN(hv);
2619 if (keepmain || ! memBEGINs(name, len, "main")) {
2620 sv_catpvn_flags(sv,name,len,HvNAMEUTF8(hv)?SV_CATUTF8:SV_CATBYTES);
2624 else sv_catpvs(sv,"__ANON__::");
2625 sv_catsv(sv,sv_2mortal(newSVhek(GvNAME_HEK(gv))));
2629 Perl_gv_efullname4(pTHX_ SV *sv, const GV *gv, const char *prefix, bool keepmain)
2631 const GV * const egv = GvEGVx(gv);
2633 PERL_ARGS_ASSERT_GV_EFULLNAME4;
2635 gv_fullname4(sv, egv ? egv : gv, prefix, keepmain);
2639 /* recursively scan a stash and any nested stashes looking for entries
2640 * that need the "only used once" warning raised
2644 Perl_gv_check(pTHX_ HV *stash)
2648 PERL_ARGS_ASSERT_GV_CHECK;
2653 assert(HvARRAY(stash));
2655 for (i = 0; i <= (I32) HvMAX(stash); i++) {
2657 /* mark stash is being scanned, to avoid recursing */
2658 HvAUX(stash)->xhv_aux_flags |= HvAUXf_SCAN_STASH;
2659 for (entry = HvARRAY(stash)[i]; entry; entry = HeNEXT(entry)) {
2662 STRLEN keylen = HeKLEN(entry);
2663 const char * const key = HeKEY(entry);
2665 if (keylen >= 2 && key[keylen-2] == ':' && key[keylen-1] == ':' &&
2666 (gv = MUTABLE_GV(HeVAL(entry))) && isGV(gv) && (hv = GvHV(gv)))
2668 if (hv != PL_defstash && hv != stash
2670 && (HvAUX(hv)->xhv_aux_flags & HvAUXf_SCAN_STASH))
2672 gv_check(hv); /* nested package */
2674 else if ( HeKLEN(entry) != 0
2675 && *HeKEY(entry) != '_'
2676 && isIDFIRST_lazy_if_safe(HeKEY(entry),
2677 HeKEY(entry) + HeKLEN(entry),
2681 gv = MUTABLE_GV(HeVAL(entry));
2682 if (SvTYPE(gv) != SVt_PVGV || GvMULTI(gv))
2685 CopLINE_set(PL_curcop, GvLINE(gv));
2687 CopFILE(PL_curcop) = (char *)file; /* set for warning */
2689 CopFILEGV(PL_curcop)
2690 = gv_fetchfile_flags(file, HEK_LEN(GvFILE_HEK(gv)), 0);
2692 Perl_warner(aTHX_ packWARN(WARN_ONCE),
2693 "Name \"%" HEKf "::%" HEKf
2694 "\" used only once: possible typo",
2695 HEKfARG(HvNAME_HEK(stash)),
2696 HEKfARG(GvNAME_HEK(gv)));
2699 HvAUX(stash)->xhv_aux_flags &= ~HvAUXf_SCAN_STASH;
2704 Perl_newGVgen_flags(pTHX_ const char *pack, U32 flags)
2706 PERL_ARGS_ASSERT_NEWGVGEN_FLAGS;
2707 assert(!(flags & ~SVf_UTF8));
2709 return gv_fetchpv(Perl_form(aTHX_ "%" UTF8f "::_GEN_%ld",
2710 UTF8fARG(flags, strlen(pack), pack),
2715 /* hopefully this is only called on local symbol table entries */
2718 Perl_gp_ref(pTHX_ GP *gp)
2725 /* If the GP they asked for a reference to contains
2726 a method cache entry, clear it first, so that we
2727 don't infect them with our cached entry */
2728 SvREFCNT_dec_NN(gp->gp_cv);
2737 Perl_gp_free(pTHX_ GV *gv)
2742 if (!gv || !isGV_with_GP(gv) || !(gp = GvGP(gv)))
2744 if (gp->gp_refcnt == 0) {
2745 Perl_ck_warner_d(aTHX_ packWARN(WARN_INTERNAL),
2746 "Attempt to free unreferenced glob pointers"
2747 pTHX__FORMAT pTHX__VALUE);
2750 if (gp->gp_refcnt > 1) {
2752 if (gp->gp_egv == gv)
2760 /* Copy and null out all the glob slots, so destructors do not see
2762 HEK * const file_hek = gp->gp_file_hek;
2763 SV * const sv = gp->gp_sv;
2764 AV * const av = gp->gp_av;
2765 HV * const hv = gp->gp_hv;
2766 IO * const io = gp->gp_io;
2767 CV * const cv = gp->gp_cv;
2768 CV * const form = gp->gp_form;
2770 gp->gp_file_hek = NULL;
2779 unshare_hek(file_hek);
2783 /* FIXME - another reference loop GV -> symtab -> GV ?
2784 Somehow gp->gp_hv can end up pointing at freed garbage. */
2785 if (hv && SvTYPE(hv) == SVt_PVHV) {
2786 const HEK *hvname_hek = HvNAME_HEK(hv);
2787 if (PL_stashcache && hvname_hek) {
2788 DEBUG_o(Perl_deb(aTHX_
2789 "gp_free clearing PL_stashcache for '%" HEKf "'\n",
2790 HEKfARG(hvname_hek)));
2791 (void)hv_deletehek(PL_stashcache, hvname_hek, G_DISCARD);
2795 if (io && SvREFCNT(io) == 1 && IoIFP(io)
2796 && (IoTYPE(io) == IoTYPE_WRONLY ||
2797 IoTYPE(io) == IoTYPE_RDWR ||
2798 IoTYPE(io) == IoTYPE_APPEND)
2799 && ckWARN_d(WARN_IO)
2800 && IoIFP(io) != PerlIO_stdin()
2801 && IoIFP(io) != PerlIO_stdout()
2802 && IoIFP(io) != PerlIO_stderr()
2803 && !(IoFLAGS(io) & IOf_FAKE_DIRP))
2804 io_close(io, gv, FALSE, TRUE);
2809 /* Possibly reallocated by a destructor */
2812 if (!gp->gp_file_hek
2818 && !gp->gp_form) break;
2820 if (--attempts == 0) {
2822 "panic: gp_free failed to free glob pointer - "
2823 "something is repeatedly re-creating entries"
2828 /* Possibly incremented by a destructor doing glob assignment */
2829 if (gp->gp_refcnt > 1) goto borrowed;
2835 Perl_magic_freeovrld(pTHX_ SV *sv, MAGIC *mg)
2837 AMT * const amtp = (AMT*)mg->mg_ptr;
2838 PERL_UNUSED_ARG(sv);
2840 PERL_ARGS_ASSERT_MAGIC_FREEOVRLD;
2842 if (amtp && AMT_AMAGIC(amtp)) {
2844 for (i = 1; i < NofAMmeth; i++) {
2845 CV * const cv = amtp->table[i];
2847 SvREFCNT_dec_NN(MUTABLE_SV(cv));
2848 amtp->table[i] = NULL;
2855 /* Updates and caches the CV's */
2857 * 1 on success and there is some overload
2858 * 0 if there is no overload
2859 * -1 if some error occurred and it couldn't croak
2863 Perl_Gv_AMupdate(pTHX_ HV *stash, bool destructing)
2865 MAGIC* const mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table);
2867 const struct mro_meta* stash_meta = HvMROMETA(stash);
2870 PERL_ARGS_ASSERT_GV_AMUPDATE;
2872 newgen = PL_sub_generation + stash_meta->pkg_gen + stash_meta->cache_gen;
2874 const AMT * const amtp = (AMT*)mg->mg_ptr;
2875 if (amtp->was_ok_sub == newgen) {
2876 return AMT_AMAGIC(amtp) ? 1 : 0;
2878 sv_unmagic(MUTABLE_SV(stash), PERL_MAGIC_overload_table);
2881 DEBUG_o( Perl_deb(aTHX_ "Recalcing overload magic in package %s\n",HvNAME_get(stash)) );
2884 amt.was_ok_sub = newgen;
2885 amt.fallback = AMGfallNO;
2891 bool deref_seen = 0;
2894 /* Work with "fallback" key, which we assume to be first in PL_AMG_names */
2896 /* Try to find via inheritance. */
2897 GV *gv = gv_fetchmeth_pvn(stash, PL_AMG_names[0], 2, -1, 0);
2898 SV * const sv = gv ? GvSV(gv) : NULL;
2903 if (!gv_fetchmeth_pvn(stash, "((", 2, -1, 0))
2906 #ifdef PERL_DONT_CREATE_GVSV
2908 NOOP; /* Equivalent to !SvTRUE and !SvOK */
2911 else if (SvTRUE(sv))
2912 /* don't need to set overloading here because fallback => 1
2913 * is the default setting for classes without overloading */
2914 amt.fallback=AMGfallYES;
2915 else if (SvOK(sv)) {
2916 amt.fallback=AMGfallNEVER;
2923 assert(SvOOK(stash));
2924 /* initially assume the worst */
2925 HvAUX(stash)->xhv_aux_flags &= ~HvAUXf_NO_DEREF;
2927 for (i = 1; i < NofAMmeth; i++) {
2928 const char * const cooky = PL_AMG_names[i];
2929 /* Human-readable form, for debugging: */
2930 const char * const cp = AMG_id2name(i);
2931 const STRLEN l = PL_AMG_namelens[i];
2933 DEBUG_o( Perl_deb(aTHX_ "Checking overloading of \"%s\" in package \"%.256s\"\n",
2934 cp, HvNAME_get(stash)) );
2935 /* don't fill the cache while looking up!
2936 Creation of inheritance stubs in intermediate packages may
2937 conflict with the logic of runtime method substitution.
2938 Indeed, for inheritance A -> B -> C, if C overloads "+0",
2939 then we could have created stubs for "(+0" in A and C too.
2940 But if B overloads "bool", we may want to use it for
2941 numifying instead of C's "+0". */
2942 gv = Perl_gv_fetchmeth_pvn(aTHX_ stash, cooky, l, -1, 0);
2944 if (gv && (cv = GvCV(gv)) && CvHASGV(cv)) {
2945 const HEK * const gvhek = CvGvNAME_HEK(cv);
2946 const HEK * const stashek =
2947 HvNAME_HEK(CvNAMED(cv) ? CvSTASH(cv) : GvSTASH(CvGV(cv)));
2948 if (memEQs(HEK_KEY(gvhek), HEK_LEN(gvhek), "nil")
2950 && memEQs(HEK_KEY(stashek), HEK_LEN(stashek), "overload")) {
2951 /* This is a hack to support autoloading..., while
2952 knowing *which* methods were declared as overloaded. */
2953 /* GvSV contains the name of the method. */
2955 SV *gvsv = GvSV(gv);
2957 DEBUG_o( Perl_deb(aTHX_ "Resolving method \"%" SVf256\
2958 "\" for overloaded \"%s\" in package \"%.256s\"\n",
2959 (void*)GvSV(gv), cp, HvNAME(stash)) );
2960 if (!gvsv || !SvPOK(gvsv)
2961 || !(ngv = gv_fetchmethod_sv_flags(stash, gvsv, 0)))
2963 /* Can be an import stub (created by "can"). */
2968 const SV * const name = (gvsv && SvPOK(gvsv))
2970 : newSVpvs_flags("???", SVs_TEMP);
2971 /* diag_listed_as: Can't resolve method "%s" overloading "%s" in package "%s" */
2972 Perl_croak(aTHX_ "%s method \"%" SVf256
2973 "\" overloading \"%s\" "\
2974 "in package \"%" HEKf256 "\"",
2975 (GvCVGEN(gv) ? "Stub found while resolving"
2983 cv = GvCV(gv = ngv);
2985 DEBUG_o( Perl_deb(aTHX_ "Overloading \"%s\" in package \"%.256s\" via \"%.256s::%.256s\"\n",
2986 cp, HvNAME_get(stash), HvNAME_get(GvSTASH(CvGV(cv))),
2987 GvNAME(CvGV(cv))) );
2989 } else if (gv) { /* Autoloaded... */
2990 cv = MUTABLE_CV(gv);
2993 amt.table[i]=MUTABLE_CV(SvREFCNT_inc_simple(cv));
3009 /* none of @{} etc overloaded; we can do $obj->[N] quicker.
3010 * NB - aux var invalid here, HvARRAY() could have been
3011 * reallocated since it was assigned to */
3012 HvAUX(stash)->xhv_aux_flags |= HvAUXf_NO_DEREF;
3015 AMT_AMAGIC_on(&amt);
3016 sv_magic(MUTABLE_SV(stash), 0, PERL_MAGIC_overload_table,
3017 (char*)&amt, sizeof(AMT));
3021 /* Here we have no table: */
3023 AMT_AMAGIC_off(&amt);
3024 sv_magic(MUTABLE_SV(stash), 0, PERL_MAGIC_overload_table,
3025 (char*)&amt, sizeof(AMTS));
3031 Perl_gv_handler(pTHX_ HV *stash, I32 id)
3036 struct mro_meta* stash_meta;
3038 if (!stash || !HvNAME_get(stash))
3041 stash_meta = HvMROMETA(stash);
3042 newgen = PL_sub_generation + stash_meta->pkg_gen + stash_meta->cache_gen;
3044 mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table);
3047 if (Gv_AMupdate(stash, 0) == -1)
3049 mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table);
3052 amtp = (AMT*)mg->mg_ptr;
3053 if ( amtp->was_ok_sub != newgen )
3055 if (AMT_AMAGIC(amtp)) {
3056 CV * const ret = amtp->table[id];
3057 if (ret && isGV(ret)) { /* Autoloading stab */
3058 /* Passing it through may have resulted in a warning
3059 "Inherited AUTOLOAD for a non-method deprecated", since
3060 our caller is going through a function call, not a method call.
3061 So return the CV for AUTOLOAD, setting $AUTOLOAD. */
3062 GV * const gv = gv_fetchmethod(stash, PL_AMG_names[id]);
3074 /* Implement tryAMAGICun_MG macro.
3075 Do get magic, then see if the stack arg is overloaded and if so call it.
3077 AMGf_numeric apply sv_2num to the stack arg.
3081 Perl_try_amagic_un(pTHX_ int method, int flags) {
3084 SV* const arg = TOPs;
3088 if (SvAMAGIC(arg) && (tmpsv = amagic_call(arg, &PL_sv_undef, method,
3089 AMGf_noright | AMGf_unary
3090 | (flags & AMGf_numarg))))
3092 /* where the op is of the form:
3093 * $lex = $x op $y (where the assign is optimised away)
3094 * then assign the returned value to targ and return that;
3095 * otherwise return the value directly
3097 if ( (PL_opargs[PL_op->op_type] & OA_TARGLEX)
3098 && (PL_op->op_private & OPpTARGET_MY))
3101 sv_setsv(TARG, tmpsv);
3111 if ((flags & AMGf_numeric) && SvROK(arg))
3117 /* Implement tryAMAGICbin_MG macro.
3118 Do get magic, then see if the two stack args are overloaded and if so
3121 AMGf_assign op may be called as mutator (eg +=)
3122 AMGf_numeric apply sv_2num to the stack arg.
3126 Perl_try_amagic_bin(pTHX_ int method, int flags) {
3128 SV* const left = TOPm1s;
3129 SV* const right = TOPs;
3135 if (SvAMAGIC(left) || SvAMAGIC(right)) {
3137 /* STACKED implies mutator variant, e.g. $x += 1 */
3138 bool mutator = (flags & AMGf_assign) && (PL_op->op_flags & OPf_STACKED);
3140 tmpsv = amagic_call(left, right, method,
3141 (mutator ? AMGf_assign: 0)
3142 | (flags & AMGf_numarg));
3145 /* where the op is one of the two forms:
3147 * $lex = $x op $y (where the assign is optimised away)
3148 * then assign the returned value to targ and return that;
3149 * otherwise return the value directly
3152 || ( (PL_opargs[PL_op->op_type] & OA_TARGLEX)
3153 && (PL_op->op_private & OPpTARGET_MY)))
3156 TARG = mutator ? *SP : PAD_SV(PL_op->op_targ);
3157 sv_setsv(TARG, tmpsv);
3168 if(left==right && SvGMAGICAL(left)) {
3169 SV * const left = sv_newmortal();
3171 /* Print the uninitialized warning now, so it includes the vari-
3174 if (ckWARN(WARN_UNINITIALIZED)) report_uninit(right);
3175 sv_setsv_flags(left, &PL_sv_no, 0);
3177 else sv_setsv_flags(left, right, 0);
3180 if (flags & AMGf_numeric) {
3182 *(sp-1) = sv_2num(TOPm1s);
3184 *sp = sv_2num(right);
3190 Perl_amagic_deref_call(pTHX_ SV *ref, int method) {
3194 PERL_ARGS_ASSERT_AMAGIC_DEREF_CALL;
3198 /* return quickly if none of the deref ops are overloaded */
3199 stash = SvSTASH(SvRV(ref));
3200 assert(SvOOK(stash));
3201 if (HvAUX(stash)->xhv_aux_flags & HvAUXf_NO_DEREF)
3204 while ((tmpsv = amagic_call(ref, &PL_sv_undef, method,
3205 AMGf_noright | AMGf_unary))) {
3207 Perl_croak(aTHX_ "Overloaded dereference did not return a reference");
3208 if (tmpsv == ref || SvRV(tmpsv) == SvRV(ref)) {
3209 /* Bail out if it returns us the same reference. */
3216 return tmpsv ? tmpsv : ref;
3220 Perl_amagic_is_enabled(pTHX_ int method)
3222 SV *lex_mask = cop_hints_fetch_pvs(PL_curcop, "overloading", 0);
3224 assert(PL_curcop->cop_hints & HINT_NO_AMAGIC);
3226 if ( !lex_mask || !SvOK(lex_mask) )
3227 /* overloading lexically disabled */
3229 else if ( lex_mask && SvPOK(lex_mask) ) {
3230 /* we have an entry in the hints hash, check if method has been
3231 * masked by overloading.pm */
3233 const int offset = method / 8;
3234 const int bit = method % 8;
3235 char *pv = SvPV(lex_mask, len);
3237 /* Bit set, so this overloading operator is disabled */
3238 if ( (STRLEN)offset < len && pv[offset] & ( 1 << bit ) )
3245 Perl_amagic_call(pTHX_ SV *left, SV *right, int method, int flags)
3249 CV **cvp=NULL, **ocvp=NULL;
3250 AMT *amtp=NULL, *oamtp=NULL;
3251 int off = 0, off1, lr = 0, notfound = 0;
3252 int postpr = 0, force_cpy = 0;
3253 int assign = AMGf_assign & flags;
3254 const int assignshift = assign ? 1 : 0;
3255 int use_default_op = 0;
3256 int force_scalar = 0;
3262 PERL_ARGS_ASSERT_AMAGIC_CALL;
3264 if ( PL_curcop->cop_hints & HINT_NO_AMAGIC ) {
3265 if (!amagic_is_enabled(method)) return NULL;
3268 if (!(AMGf_noleft & flags) && SvAMAGIC(left)
3269 && (stash = SvSTASH(SvRV(left))) && Gv_AMG(stash)
3270 && (mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table))
3271 && (ocvp = cvp = (AMT_AMAGIC((AMT*)mg->mg_ptr)
3272 ? (oamtp = amtp = (AMT*)mg->mg_ptr)->table
3274 && ((cv = cvp[off=method+assignshift])
3275 || (assign && amtp->fallback > AMGfallNEVER && /* fallback to
3281 cv = cvp[off=method])))) {
3282 lr = -1; /* Call method for left argument */
3284 if (cvp && amtp->fallback > AMGfallNEVER && flags & AMGf_unary) {
3287 /* look for substituted methods */
3288 /* In all the covered cases we should be called with assign==0. */
3292 if ((cv = cvp[off=add_ass_amg])
3293 || ((cv = cvp[off = add_amg]) && (force_cpy = 0, postpr = 1))) {
3294 right = &PL_sv_yes; lr = -1; assign = 1;
3299 if ((cv = cvp[off = subtr_ass_amg])
3300 || ((cv = cvp[off = subtr_amg]) && (force_cpy = 0, postpr=1))) {
3301 right = &PL_sv_yes; lr = -1; assign = 1;
3305 (void)((cv = cvp[off=numer_amg]) || (cv = cvp[off=string_amg]));
3308 (void)((cv = cvp[off=string_amg]) || (cv = cvp[off=bool__amg]));
3311 (void)((cv = cvp[off=numer_amg]) || (cv = cvp[off=bool__amg]));
3314 (void)((cv = cvp[off=bool__amg])
3315 || (cv = cvp[off=numer_amg])
3316 || (cv = cvp[off=string_amg]));
3323 * SV* ref causes confusion with the interpreter variable of
3326 SV* const tmpRef=SvRV(left);
3327 if (!SvROK(tmpRef) && SvTYPE(tmpRef) <= SVt_PVMG) {
3329 * Just to be extra cautious. Maybe in some
3330 * additional cases sv_setsv is safe, too.
3332 SV* const newref = newSVsv(tmpRef);
3333 SvOBJECT_on(newref);
3334 /* No need to do SvAMAGIC_on here, as SvAMAGIC macros
3335 delegate to the stash. */
3336 SvSTASH_set(newref, MUTABLE_HV(SvREFCNT_inc(SvSTASH(tmpRef))));
3342 if ((cvp[off1=lt_amg] || cvp[off1=ncmp_amg])
3343 && ((cv = cvp[off=neg_amg]) || (cv = cvp[off=subtr_amg]))) {
3344 SV* const nullsv=&PL_sv_zero;
3346 SV* const lessp = amagic_call(left,nullsv,
3347 lt_amg,AMGf_noright);
3348 logic = SvTRUE_NN(lessp);
3350 SV* const lessp = amagic_call(left,nullsv,
3351 ncmp_amg,AMGf_noright);
3352 logic = (SvNV(lessp) < 0);
3355 if (off==subtr_amg) {
3366 if ((cv = cvp[off=subtr_amg])) {
3373 case iter_amg: /* XXXX Eventually should do to_gv. */
3374 case ftest_amg: /* XXXX Eventually should do to_gv. */
3377 return NULL; /* Delegate operation to standard mechanisms. */
3385 return left; /* Delegate operation to standard mechanisms. */
3390 if (!cv) goto not_found;
3391 } else if (!(AMGf_noright & flags) && SvAMAGIC(right)
3392 && (stash = SvSTASH(SvRV(right))) && Gv_AMG(stash)
3393 && (mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table))
3394 && (cvp = (AMT_AMAGIC((AMT*)mg->mg_ptr)
3395 ? (amtp = (AMT*)mg->mg_ptr)->table
3397 && (cv = cvp[off=method])) { /* Method for right
3400 } else if (((cvp && amtp->fallback > AMGfallNEVER)
3401 || (ocvp && oamtp->fallback > AMGfallNEVER))
3402 && !(flags & AMGf_unary)) {
3403 /* We look for substitution for
3404 * comparison operations and
3406 if (method==concat_amg || method==concat_ass_amg
3407 || method==repeat_amg || method==repeat_ass_amg) {
3408 return NULL; /* Delegate operation to string conversion */
3430 if (ocvp && (oamtp->fallback > AMGfallNEVER)) {
3434 if (!cv && (cvp && amtp->fallback > AMGfallNEVER)) {
3444 not_found: /* No method found, either report or croak */
3452 return left; /* Delegate operation to standard mechanisms. */
3454 if (ocvp && (cv=ocvp[nomethod_amg])) { /* Call report method */
3455 notfound = 1; lr = -1;
3456 } else if (cvp && (cv=cvp[nomethod_amg])) {
3457 notfound = 1; lr = 1;
3458 } else if ((use_default_op =
3459 (!ocvp || oamtp->fallback >= AMGfallYES)
3460 && (!cvp || amtp->fallback >= AMGfallYES))
3462 /* Skip generating the "no method found" message. */
3466 if (off==-1) off=method;
3467 msg = sv_2mortal(Perl_newSVpvf(aTHX_
3468 "Operation \"%s\": no method found,%sargument %s%" SVf "%s%" SVf,
3469 AMG_id2name(method + assignshift),
3470 (flags & AMGf_unary ? " " : "\n\tleft "),
3472 "in overloaded package ":
3473 "has no overloaded magic",
3475 SVfARG(sv_2mortal(newSVhek(HvNAME_HEK(SvSTASH(SvRV(left)))))):
3478 ",\n\tright argument in overloaded package ":
3481 : ",\n\tright argument has no overloaded magic"),
3483 SVfARG(sv_2mortal(newSVhek(HvNAME_HEK(SvSTASH(SvRV(right)))))):
3484 SVfARG(&PL_sv_no)));
3485 if (use_default_op) {
3486 DEBUG_o( Perl_deb(aTHX_ "%" SVf, SVfARG(msg)) );
3488 Perl_croak(aTHX_ "%" SVf, SVfARG(msg));
3492 force_cpy = force_cpy || assign;
3497 /* in these cases, we're calling '+' or '-' as a fallback for a ++ or --
3498 * operation. we need this to return a value, so that it can be assigned
3499 * later on, in the postpr block (case inc_amg/dec_amg), even if the
3500 * increment or decrement was itself called in void context */
3506 if (off == subtr_amg)
3509 /* in these cases, we're calling an assignment variant of an operator
3510 * (+= rather than +, for instance). regardless of whether it's a
3511 * fallback or not, it always has to return a value, which will be
3512 * assigned to the proper variable later */
3532 /* the copy constructor always needs to return a value */
3536 /* because of the way these are implemented (they don't perform the
3537 * dereferencing themselves, they return a reference that perl then
3538 * dereferences later), they always have to be in scalar context */
3546 /* these don't have an op of their own; they're triggered by their parent
3547 * op, so the context there isn't meaningful ('$a and foo()' in void
3548 * context still needs to pass scalar context on to $a's bool overload) */
3558 DEBUG_o(Perl_deb(aTHX_
3559 "Overloaded operator \"%s\"%s%s%s:\n\tmethod%s found%s in package %" SVf "%s\n",
3561 method+assignshift==off? "" :
3563 method+assignshift==off? "" :
3564 AMG_id2name(method+assignshift),
3565 method+assignshift==off? "" : "\")",
3566 flags & AMGf_unary? "" :
3567 lr==1 ? " for right argument": " for left argument",
3568 flags & AMGf_unary? " for argument" : "",
3569 stash ? SVfARG(sv_2mortal(newSVhek(HvNAME_HEK(stash)))) : SVfARG(newSVpvs_flags("null", SVs_TEMP)),
3570 fl? ",\n\tassignment variant used": "") );
3573 /* Since we use shallow copy during assignment, we need
3574 * to dublicate the contents, probably calling user-supplied
3575 * version of copy operator
3577 /* We need to copy in following cases:
3578 * a) Assignment form was called.
3579 * assignshift==1, assign==T, method + 1 == off
3580 * b) Increment or decrement, called directly.
3581 * assignshift==0, assign==0, method + 0 == off
3582 * c) Increment or decrement, translated to assignment add/subtr.
3583 * assignshift==0, assign==T,
3585 * d) Increment or decrement, translated to nomethod.
3586 * assignshift==0, assign==0,
3588 * e) Assignment form translated to nomethod.
3589 * assignshift==1, assign==T, method + 1 != off
3592 /* off is method, method+assignshift, or a result of opcode substitution.
3593 * In the latter case assignshift==0, so only notfound case is important.
3595 if ( (lr == -1) && ( ( (method + assignshift == off)
3596 && (assign || (method == inc_amg) || (method == dec_amg)))
3599 /* newSVsv does not behave as advertised, so we copy missing
3600 * information by hand */
3601 SV *tmpRef = SvRV(left);
3603 if (SvREFCNT(tmpRef) > 1 && (rv_copy = AMG_CALLunary(left,copy_amg))) {
3604 SvRV_set(left, rv_copy);
3606 SvREFCNT_dec_NN(tmpRef);
3614 const bool oldcatch = CATCH_GET;
3616 /* for multiconcat, we may call overload several times,
3617 * with the context of individual concats being scalar,
3618 * regardless of the overall context of the multiconcat op
3620 U8 gimme = (force_scalar || PL_op->op_type == OP_MULTICONCAT)
3621 ? G_SCALAR : GIMME_V;
3624 Zero(&myop, 1, BINOP);
3625 myop.op_last = (OP *) &myop;
3626 myop.op_next = NULL;
3627 myop.op_flags = OPf_STACKED;
3631 myop.op_flags |= OPf_WANT_VOID;
3634 if (flags & AMGf_want_list) {
3635 myop.op_flags |= OPf_WANT_LIST;
3640 myop.op_flags |= OPf_WANT_SCALAR;
3644 PUSHSTACKi(PERLSI_OVERLOAD);
3647 PL_op = (OP *) &myop;
3648 if (PERLDB_SUB && PL_curstash != PL_debstash)
3649 PL_op->op_private |= OPpENTERSUB_DB;
3650 Perl_pp_pushmark(aTHX);
3652 EXTEND(SP, notfound + 5);
3653 PUSHs(lr>0? right: left);
3654 PUSHs(lr>0? left: right);
3655 PUSHs( lr > 0 ? &PL_sv_yes : ( assign ? &PL_sv_undef : &PL_sv_no ));
3657 PUSHs(newSVpvn_flags(AMG_id2name(method + assignshift),
3658 AMG_id2namelen(method + assignshift), SVs_TEMP));
3660 else if (flags & AMGf_numarg)
3661 PUSHs(&PL_sv_undef);
3662 if (flags & AMGf_numarg)
3664 PUSHs(MUTABLE_SV(cv));
3668 if ((PL_op = PL_ppaddr[OP_ENTERSUB](aTHX)))
3672 nret = SP - (PL_stack_base + oldmark);
3676 /* returning NULL has another meaning, and we check the context
3677 * at the call site too, so this can be differentiated from the
3680 SP = PL_stack_base + oldmark;
3683 if (flags & AMGf_want_list) {
3684 res = sv_2mortal((SV *)newAV());
3685 av_extend((AV *)res, nret);
3687 av_store((AV *)res, nret, POPs);
3698 CATCH_SET(oldcatch);
3705 ans=SvIV(res)<=0; break;
3708 ans=SvIV(res)<0; break;
3711 ans=SvIV(res)>=0; break;
3714 ans=SvIV(res)>0; break;
3717 ans=SvIV(res)==0; break;
3720 ans=SvIV(res)!=0; break;
3723 SvSetSV(left,res); return left;
3725 ans=!SvTRUE_NN(res); break;
3730 } else if (method==copy_amg) {
3732 Perl_croak(aTHX_ "Copy method did not return a reference");
3734 return SvREFCNT_inc(SvRV(res));
3742 Perl_gv_name_set(pTHX_ GV *gv, const char *name, U32 len, U32 flags)
3746 PERL_ARGS_ASSERT_GV_NAME_SET;
3749 Perl_croak(aTHX_ "panic: gv name too long (%" UVuf ")", (UV) len);
3751 if (!(flags & GV_ADD) && GvNAME_HEK(gv)) {
3752 unshare_hek(GvNAME_HEK(gv));
3755 PERL_HASH(hash, name, len);
3756 GvNAME_HEK(gv) = share_hek(name, (flags & SVf_UTF8 ? -(I32)len : (I32)len), hash);
3760 =for apidoc gv_try_downgrade
3762 If the typeglob C<gv> can be expressed more succinctly, by having
3763 something other than a real GV in its place in the stash, replace it
3764 with the optimised form. Basic requirements for this are that C<gv>
3765 is a real typeglob, is sufficiently ordinary, and is only referenced
3766 from its package. This function is meant to be used when a GV has been
3767 looked up in part to see what was there, causing upgrading, but based
3768 on what was found it turns out that the real GV isn't required after all.
3770 If C<gv> is a completely empty typeglob, it is deleted from the stash.
3772 If C<gv> is a typeglob containing only a sufficiently-ordinary constant
3773 sub, the typeglob is replaced with a scalar-reference placeholder that
3774 more compactly represents the same thing.
3780 Perl_gv_try_downgrade(pTHX_ GV *gv)
3786 PERL_ARGS_ASSERT_GV_TRY_DOWNGRADE;
3788 /* XXX Why and where does this leave dangling pointers during global
3790 if (PL_phase == PERL_PHASE_DESTRUCT) return;
3792 if (!(SvREFCNT(gv) == 1 && SvTYPE(gv) == SVt_PVGV && !SvFAKE(gv) &&
3793 !SvOBJECT(gv) && !SvREADONLY(gv) &&
3794 isGV_with_GP(gv) && GvGP(gv) &&
3795 !GvINTRO(gv) && GvREFCNT(gv) == 1 &&
3796 !GvSV(gv) && !GvAV(gv) && !GvHV(gv) && !GvIOp(gv) && !GvFORM(gv) &&
3797 GvEGVx(gv) == gv && (stash = GvSTASH(gv))))
3799 if (gv == PL_statgv || gv == PL_last_in_gv || gv == PL_stderrgv)
3801 if (SvMAGICAL(gv)) {
3803 /* only backref magic is allowed */
3804 if (SvGMAGICAL(gv) || SvSMAGICAL(gv))
3806 for (mg = SvMAGIC(gv); mg; mg = mg->mg_moremagic) {
3807 if (mg->mg_type != PERL_MAGIC_backref)
3813 HEK *gvnhek = GvNAME_HEK(gv);
3814 (void)hv_deletehek(stash, gvnhek, G_DISCARD);
3815 } else if (GvMULTI(gv) && cv && SvREFCNT(cv) == 1 &&
3816 !SvOBJECT(cv) && !SvMAGICAL(cv) && !SvREADONLY(cv) &&
3817 CvSTASH(cv) == stash && !CvNAMED(cv) && CvGV(cv) == gv &&
3818 CvCONST(cv) && !CvMETHOD(cv) && !CvLVALUE(cv) && !CvUNIQUE(cv) &&
3819 !CvNODEBUG(cv) && !CvCLONE(cv) && !CvCLONED(cv) && !CvANON(cv) &&
3820 (namehek = GvNAME_HEK(gv)) &&
3821 (gvp = hv_fetchhek(stash, namehek, 0)) &&
3823 SV *value = SvREFCNT_inc(CvXSUBANY(cv).any_ptr);
3824 const bool imported = !!GvIMPORTED_CV(gv);
3828 SvFLAGS(gv) = SVt_IV|SVf_ROK|SVprv_PCS_IMPORTED * imported;
3830 /* See also: 'SET_SVANY_FOR_BODYLESS_IV' in sv.c */
3831 SvANY(gv) = (XPVGV*)((char*)&(gv->sv_u.svu_iv) -
3832 STRUCT_OFFSET(XPVIV, xiv_iv));
3833 SvRV_set(gv, value);
3838 Perl_gv_override(pTHX_ const char * const name, const STRLEN len)
3840 GV *gv = gv_fetchpvn(name, len, GV_NOTQUAL, SVt_PVCV);
3842 PERL_ARGS_ASSERT_GV_OVERRIDE;
3843 if (gv && GvCVu(gv) && GvIMPORTED_CV(gv)) return gv;
3844 gvp = (GV**)hv_fetch(PL_globalstash, name, len, FALSE);
3845 gv = gvp ? *gvp : NULL;
3846 if (gv && !isGV(gv)) {
3847 if (!SvPCS_IMPORTED(gv)) return NULL;
3848 gv_init(gv, PL_globalstash, name, len, 0);
3851 return gv && GvCVu(gv) && GvIMPORTED_CV(gv) ? gv : NULL;
3857 core_xsub(pTHX_ CV* cv)
3860 "&CORE::%s cannot be called directly", GvNAME(CvGV(cv))
3865 * ex: set ts=8 sts=4 sw=4 et: