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"]
25 A GV is a structure which corresponds to to a Perl typeglob, ie *foo.
26 It is a structure that holds a pointer to a scalar, an array, a hash etc,
27 corresponding to $foo, @foo, %foo.
29 GVs are usually found as values in stashes (symbol table hashes) where
30 Perl stores its global variables.
40 static const char S_autoload[] = "AUTOLOAD";
41 static const STRLEN S_autolen = sizeof(S_autoload)-1;
44 Perl_gv_add_by_type(pTHX_ GV *gv, svtype type)
48 if (!gv || SvTYPE((const SV *)gv) != SVt_PVGV) {
50 if (type == SVt_PVIO) {
52 * if it walks like a dirhandle, then let's assume that
53 * this is a dirhandle.
55 what = PL_op->op_type == OP_READDIR ||
56 PL_op->op_type == OP_TELLDIR ||
57 PL_op->op_type == OP_SEEKDIR ||
58 PL_op->op_type == OP_REWINDDIR ||
59 PL_op->op_type == OP_CLOSEDIR ?
60 "dirhandle" : "filehandle";
61 /* diag_listed_as: Bad symbol for filehandle */
62 } else if (type == SVt_PVHV) {
65 what = type == SVt_PVAV ? "array" : "scalar";
67 Perl_croak(aTHX_ "Bad symbol for %s", what);
70 if (type == SVt_PVHV) {
71 where = (SV **)&GvHV(gv);
72 } else if (type == SVt_PVAV) {
73 where = (SV **)&GvAV(gv);
74 } else if (type == SVt_PVIO) {
75 where = (SV **)&GvIOp(gv);
81 *where = newSV_type(type);
86 Perl_gv_fetchfile(pTHX_ const char *name)
88 PERL_ARGS_ASSERT_GV_FETCHFILE;
89 return gv_fetchfile_flags(name, strlen(name), 0);
93 Perl_gv_fetchfile_flags(pTHX_ const char *const name, const STRLEN namelen,
99 const STRLEN tmplen = namelen + 2;
102 PERL_ARGS_ASSERT_GV_FETCHFILE_FLAGS;
103 PERL_UNUSED_ARG(flags);
108 if (tmplen <= sizeof smallbuf)
111 Newx(tmpbuf, tmplen, char);
112 /* This is where the debugger's %{"::_<$filename"} hash is created */
115 memcpy(tmpbuf + 2, name, namelen);
116 gv = *(GV**)hv_fetch(PL_defstash, tmpbuf, tmplen, TRUE);
118 gv_init(gv, PL_defstash, tmpbuf, tmplen, FALSE);
119 #ifdef PERL_DONT_CREATE_GVSV
120 GvSV(gv) = newSVpvn(name, namelen);
122 sv_setpvn(GvSV(gv), name, namelen);
125 if ((PERLDB_LINE || PERLDB_SAVESRC) && !GvAV(gv))
126 hv_magic(GvHVn(gv_AVadd(gv)), NULL, PERL_MAGIC_dbfile);
127 if (tmpbuf != smallbuf)
133 =for apidoc gv_const_sv
135 If C<gv> is a typeglob whose subroutine entry is a constant sub eligible for
136 inlining, or C<gv> is a placeholder reference that would be promoted to such
137 a typeglob, then returns the value returned by the sub. Otherwise, returns
144 Perl_gv_const_sv(pTHX_ GV *gv)
146 PERL_ARGS_ASSERT_GV_CONST_SV;
148 if (SvTYPE(gv) == SVt_PVGV)
149 return cv_const_sv(GvCVu(gv));
150 return SvROK(gv) ? SvRV(gv) : NULL;
154 Perl_newGP(pTHX_ GV *const gv)
159 const char *const file
160 = (PL_curcop && CopFILE(PL_curcop)) ? CopFILE(PL_curcop) : "";
161 const STRLEN len = strlen(file);
163 SV *const temp_sv = CopFILESV(PL_curcop);
167 PERL_ARGS_ASSERT_NEWGP;
170 file = SvPVX(temp_sv);
171 len = SvCUR(temp_sv);
178 PERL_HASH(hash, file, len);
182 #ifndef PERL_DONT_CREATE_GVSV
183 gp->gp_sv = newSV(0);
186 gp->gp_line = PL_curcop ? CopLINE(PL_curcop) : 0;
187 /* XXX Ideally this cast would be replaced with a change to const char*
189 gp->gp_file_hek = share_hek(file, len, hash);
196 /* Assign CvGV(cv) = gv, handling weak references.
197 * See also S_anonymise_cv_maybe */
200 Perl_cvgv_set(pTHX_ CV* cv, GV* gv)
202 GV * const oldgv = CvGV(cv);
203 PERL_ARGS_ASSERT_CVGV_SET;
214 sv_del_backref(MUTABLE_SV(oldgv), MUTABLE_SV(cv));
218 SvANY(cv)->xcv_gv = gv;
219 assert(!CvCVGV_RC(cv));
224 if (isGV_with_GP(gv) && GvGP(gv) && (GvCV(gv) == cv || GvFORM(gv) == cv))
225 Perl_sv_add_backref(aTHX_ MUTABLE_SV(gv), MUTABLE_SV(cv));
228 SvREFCNT_inc_simple_void_NN(gv);
234 Perl_gv_init(pTHX_ GV *gv, HV *stash, const char *name, STRLEN len, int multi)
237 const U32 old_type = SvTYPE(gv);
238 const bool doproto = old_type > SVt_NULL;
239 char * const proto = (doproto && SvPOK(gv)) ? SvPVX(gv) : NULL;
240 const STRLEN protolen = proto ? SvCUR(gv) : 0;
241 SV *const has_constant = doproto && SvROK(gv) ? SvRV(gv) : NULL;
242 const U32 exported_constant = has_constant ? SvPCS_IMPORTED(gv) : 0;
244 PERL_ARGS_ASSERT_GV_INIT;
245 assert (!(proto && has_constant));
248 /* The constant has to be a simple scalar type. */
249 switch (SvTYPE(has_constant)) {
255 Perl_croak(aTHX_ "Cannot convert a reference to %s to typeglob",
256 sv_reftype(has_constant, 0));
264 if (old_type < SVt_PVGV) {
265 if (old_type >= SVt_PV)
267 sv_upgrade(MUTABLE_SV(gv), SVt_PVGV);
275 Safefree(SvPVX_mutable(gv));
280 GvGP(gv) = Perl_newGP(aTHX_ gv);
283 Perl_sv_add_backref(aTHX_ MUTABLE_SV(stash), MUTABLE_SV(gv));
284 gv_name_set(gv, name, len, GV_ADD);
285 if (multi || doproto) /* doproto means it _was_ mentioned */
287 if (doproto) { /* Replicate part of newSUB here. */
293 /* newCONSTSUB doesn't take a len arg, so make sure we
294 * give it a \0-terminated string */
295 name0 = savepvn(name,len);
297 /* newCONSTSUB takes ownership of the reference from us. */
298 cv = newCONSTSUB(stash, (name0 ? name0 : name), has_constant);
299 assert(GvCV(gv) == cv); /* newCONSTSUB should have set this */
302 /* If this reference was a copy of another, then the subroutine
303 must have been "imported", by a Perl space assignment to a GV
304 from a reference to CV. */
305 if (exported_constant)
306 GvIMPORTED_CV_on(gv);
308 (void) start_subparse(0,0); /* Create empty CV in compcv. */
314 mro_method_changed_in(GvSTASH(gv)); /* sub Foo::bar($) { (shift) } sub ASDF::baz($); *ASDF::baz = \&Foo::bar */
316 CvFILE_set_from_cop(cv, PL_curcop);
317 CvSTASH(cv) = PL_curstash;
319 Perl_sv_add_backref(aTHX_ MUTABLE_SV(PL_curstash), MUTABLE_SV(cv));
321 sv_usepvn_flags(MUTABLE_SV(cv), proto, protolen,
322 SV_HAS_TRAILING_NUL);
328 S_gv_init_sv(pTHX_ GV *gv, const svtype sv_type)
330 PERL_ARGS_ASSERT_GV_INIT_SV;
342 #ifdef PERL_DONT_CREATE_GVSV
350 /* Work round what appears to be a bug in Sun C++ 5.8 2005/10/13
351 If we just cast GvSVn(gv) to void, it ignores evaluating it for
359 =for apidoc gv_fetchmeth
361 Returns the glob with the given C<name> and a defined subroutine or
362 C<NULL>. The glob lives in the given C<stash>, or in the stashes
363 accessible via @ISA and UNIVERSAL::.
365 The argument C<level> should be either 0 or -1. If C<level==0>, as a
366 side-effect creates a glob with the given C<name> in the given C<stash>
367 which in the case of success contains an alias for the subroutine, and sets
368 up caching info for this glob.
370 This function grants C<"SUPER"> token as a postfix of the stash name. The
371 GV returned from C<gv_fetchmeth> may be a method cache entry, which is not
372 visible to Perl code. So when calling C<call_sv>, you should not use
373 the GV directly; instead, you should use the method's CV, which can be
374 obtained from the GV with the C<GvCV> macro.
379 /* NOTE: No support for tied ISA */
382 Perl_gv_fetchmeth(pTHX_ HV *stash, const char *name, STRLEN len, I32 level)
390 GV* candidate = NULL;
395 I32 create = (level >= 0) ? 1 : 0;
400 PERL_ARGS_ASSERT_GV_FETCHMETH;
402 /* UNIVERSAL methods should be callable without a stash */
404 create = 0; /* probably appropriate */
405 if(!(stash = gv_stashpvs("UNIVERSAL", 0)))
411 hvname = HvNAME_get(stash);
413 Perl_croak(aTHX_ "Can't use anonymous symbol table for method lookup");
418 DEBUG_o( Perl_deb(aTHX_ "Looking for method %s in package %s\n",name,hvname) );
420 topgen_cmp = HvMROMETA(stash)->cache_gen + PL_sub_generation;
422 /* check locally for a real method or a cache entry */
423 gvp = (GV**)hv_fetch(stash, name, len, create);
427 if (SvTYPE(topgv) != SVt_PVGV)
428 gv_init(topgv, stash, name, len, TRUE);
429 if ((cand_cv = GvCV(topgv))) {
430 /* If genuine method or valid cache entry, use it */
431 if (!GvCVGEN(topgv) || GvCVGEN(topgv) == topgen_cmp) {
435 /* stale cache entry, junk it and move on */
436 SvREFCNT_dec(cand_cv);
437 GvCV(topgv) = cand_cv = NULL;
441 else if (GvCVGEN(topgv) == topgen_cmp) {
442 /* cache indicates no such method definitively */
447 packlen = HvNAMELEN_get(stash);
448 if (packlen >= 7 && strEQ(hvname + packlen - 7, "::SUPER")) {
451 basestash = gv_stashpvn(hvname, packlen, GV_ADD);
452 linear_av = mro_get_linear_isa(basestash);
455 linear_av = mro_get_linear_isa(stash); /* has ourselves at the top of the list */
458 linear_svp = AvARRAY(linear_av) + 1; /* skip over self */
459 items = AvFILLp(linear_av); /* no +1, to skip over self */
461 linear_sv = *linear_svp++;
463 cstash = gv_stashsv(linear_sv, 0);
466 Perl_ck_warner(aTHX_ packWARN(WARN_SYNTAX), "Can't locate package %"SVf" for @%s::ISA",
467 SVfARG(linear_sv), hvname);
473 gvp = (GV**)hv_fetch(cstash, name, len, 0);
477 if (SvTYPE(candidate) != SVt_PVGV) gv_init(candidate, cstash, name, len, TRUE);
478 if (SvTYPE(candidate) == SVt_PVGV && (cand_cv = GvCV(candidate)) && !GvCVGEN(candidate)) {
480 * Found real method, cache method in topgv if:
481 * 1. topgv has no synonyms (else inheritance crosses wires)
482 * 2. method isn't a stub (else AUTOLOAD fails spectacularly)
484 if (topgv && (GvREFCNT(topgv) == 1) && (CvROOT(cand_cv) || CvXSUB(cand_cv))) {
485 if ((old_cv = GvCV(topgv))) SvREFCNT_dec(old_cv);
486 SvREFCNT_inc_simple_void_NN(cand_cv);
487 GvCV(topgv) = cand_cv;
488 GvCVGEN(topgv) = topgen_cmp;
494 /* Check UNIVERSAL without caching */
495 if(level == 0 || level == -1) {
496 candidate = gv_fetchmeth(NULL, name, len, 1);
498 cand_cv = GvCV(candidate);
499 if (topgv && (GvREFCNT(topgv) == 1) && (CvROOT(cand_cv) || CvXSUB(cand_cv))) {
500 if ((old_cv = GvCV(topgv))) SvREFCNT_dec(old_cv);
501 SvREFCNT_inc_simple_void_NN(cand_cv);
502 GvCV(topgv) = cand_cv;
503 GvCVGEN(topgv) = topgen_cmp;
509 if (topgv && GvREFCNT(topgv) == 1) {
510 /* cache the fact that the method is not defined */
511 GvCVGEN(topgv) = topgen_cmp;
518 =for apidoc gv_fetchmeth_autoload
520 Same as gv_fetchmeth(), but looks for autoloaded subroutines too.
521 Returns a glob for the subroutine.
523 For an autoloaded subroutine without a GV, will create a GV even
524 if C<level < 0>. For an autoloaded subroutine without a stub, GvCV()
525 of the result may be zero.
531 Perl_gv_fetchmeth_autoload(pTHX_ HV *stash, const char *name, STRLEN len, I32 level)
533 GV *gv = gv_fetchmeth(stash, name, len, level);
535 PERL_ARGS_ASSERT_GV_FETCHMETH_AUTOLOAD;
542 return NULL; /* UNIVERSAL::AUTOLOAD could cause trouble */
543 if (len == S_autolen && memEQ(name, S_autoload, S_autolen))
545 if (!(gv = gv_fetchmeth(stash, S_autoload, S_autolen, FALSE)))
548 if (!(CvROOT(cv) || CvXSUB(cv)))
550 /* Have an autoload */
551 if (level < 0) /* Cannot do without a stub */
552 gv_fetchmeth(stash, name, len, 0);
553 gvp = (GV**)hv_fetch(stash, name, len, (level >= 0));
562 =for apidoc gv_fetchmethod_autoload
564 Returns the glob which contains the subroutine to call to invoke the method
565 on the C<stash>. In fact in the presence of autoloading this may be the
566 glob for "AUTOLOAD". In this case the corresponding variable $AUTOLOAD is
569 The third parameter of C<gv_fetchmethod_autoload> determines whether
570 AUTOLOAD lookup is performed if the given method is not present: non-zero
571 means yes, look for AUTOLOAD; zero means no, don't look for AUTOLOAD.
572 Calling C<gv_fetchmethod> is equivalent to calling C<gv_fetchmethod_autoload>
573 with a non-zero C<autoload> parameter.
575 These functions grant C<"SUPER"> token as a prefix of the method name. Note
576 that if you want to keep the returned glob for a long time, you need to
577 check for it being "AUTOLOAD", since at the later time the call may load a
578 different subroutine due to $AUTOLOAD changing its value. Use the glob
579 created via a side effect to do this.
581 These functions have the same side-effects and as C<gv_fetchmeth> with
582 C<level==0>. C<name> should be writable if contains C<':'> or C<'
583 ''>. The warning against passing the GV returned by C<gv_fetchmeth> to
584 C<call_sv> apply equally to these functions.
590 S_gv_get_super_pkg(pTHX_ const char* name, I32 namelen)
597 PERL_ARGS_ASSERT_GV_GET_SUPER_PKG;
599 stash = gv_stashpvn(name, namelen, 0);
600 if(stash) return stash;
602 /* If we must create it, give it an @ISA array containing
603 the real package this SUPER is for, so that it's tied
604 into the cache invalidation code correctly */
605 stash = gv_stashpvn(name, namelen, GV_ADD);
606 gvp = (GV**)hv_fetchs(stash, "ISA", TRUE);
608 gv_init(gv, stash, "ISA", 3, TRUE);
609 superisa = GvAVn(gv);
611 sv_magic(MUTABLE_SV(superisa), MUTABLE_SV(gv), PERL_MAGIC_isa, NULL, 0);
613 av_push(superisa, newSVpv(CopSTASHPV(PL_curcop), 0));
615 av_push(superisa, newSVhek(CopSTASH(PL_curcop)
616 ? HvNAME_HEK(CopSTASH(PL_curcop)) : NULL));
623 Perl_gv_fetchmethod_autoload(pTHX_ HV *stash, const char *name, I32 autoload)
625 PERL_ARGS_ASSERT_GV_FETCHMETHOD_AUTOLOAD;
627 return gv_fetchmethod_flags(stash, name, autoload ? GV_AUTOLOAD : 0);
630 /* Don't merge this yet, as it's likely to get a len parameter, and possibly
633 Perl_gv_fetchmethod_flags(pTHX_ HV *stash, const char *name, U32 flags)
636 register const char *nend;
637 const char *nsplit = NULL;
640 const char * const origname = name;
641 SV *const error_report = MUTABLE_SV(stash);
642 const U32 autoload = flags & GV_AUTOLOAD;
643 const U32 do_croak = flags & GV_CROAK;
645 PERL_ARGS_ASSERT_GV_FETCHMETHOD_FLAGS;
647 if (SvTYPE(stash) < SVt_PVHV)
650 /* The only way stash can become NULL later on is if nsplit is set,
651 which in turn means that there is no need for a SVt_PVHV case
652 the error reporting code. */
655 for (nend = name; *nend; nend++) {
660 else if (*nend == ':' && *(nend + 1) == ':') {
666 if ((nsplit - origname) == 5 && memEQ(origname, "SUPER", 5)) {
667 /* ->SUPER::method should really be looked up in original stash */
668 SV * const tmpstr = sv_2mortal(Perl_newSVpvf(aTHX_ "%s::SUPER",
669 CopSTASHPV(PL_curcop)));
670 /* __PACKAGE__::SUPER stash should be autovivified */
671 stash = gv_get_super_pkg(SvPVX_const(tmpstr), SvCUR(tmpstr));
672 DEBUG_o( Perl_deb(aTHX_ "Treating %s as %s::%s\n",
673 origname, HvNAME_get(stash), name) );
676 /* don't autovifify if ->NoSuchStash::method */
677 stash = gv_stashpvn(origname, nsplit - origname, 0);
679 /* however, explicit calls to Pkg::SUPER::method may
680 happen, and may require autovivification to work */
681 if (!stash && (nsplit - origname) >= 7 &&
682 strnEQ(nsplit - 7, "::SUPER", 7) &&
683 gv_stashpvn(origname, nsplit - origname - 7, 0))
684 stash = gv_get_super_pkg(origname, nsplit - origname);
689 gv = gv_fetchmeth(stash, name, nend - name, 0);
691 if (strEQ(name,"import") || strEQ(name,"unimport"))
692 gv = MUTABLE_GV(&PL_sv_yes);
694 gv = gv_autoload4(ostash, name, nend - name, TRUE);
695 if (!gv && do_croak) {
696 /* Right now this is exclusively for the benefit of S_method_common
700 "Can't locate object method \"%s\" via package \"%.*s\"",
701 name, (int)HvNAMELEN_get(stash), HvNAME_get(stash));
705 const char *packname;
708 packlen = nsplit - origname;
711 packname = SvPV_const(error_report, packlen);
715 "Can't locate object method \"%s\" via package \"%.*s\""
716 " (perhaps you forgot to load \"%.*s\"?)",
717 name, (int)packlen, packname, (int)packlen, packname);
722 CV* const cv = GvCV(gv);
723 if (!CvROOT(cv) && !CvXSUB(cv)) {
731 if (GvCV(stubgv) != cv) /* orphaned import */
734 autogv = gv_autoload4(GvSTASH(stubgv),
735 GvNAME(stubgv), GvNAMELEN(stubgv), TRUE);
745 Perl_gv_autoload4(pTHX_ HV *stash, const char *name, STRLEN len, I32 method)
753 const char *packname = "";
754 STRLEN packname_len = 0;
756 PERL_ARGS_ASSERT_GV_AUTOLOAD4;
758 if (len == S_autolen && memEQ(name, S_autoload, S_autolen))
761 if (SvTYPE(stash) < SVt_PVHV) {
762 packname = SvPV_const(MUTABLE_SV(stash), packname_len);
766 packname = HvNAME_get(stash);
767 packname_len = HvNAMELEN_get(stash);
770 if (!(gv = gv_fetchmeth(stash, S_autoload, S_autolen, FALSE)))
774 if (!(CvROOT(cv) || CvXSUB(cv)))
778 * Inheriting AUTOLOAD for non-methods works ... for now.
780 if (!method && (GvCVGEN(gv) || GvSTASH(gv) != stash)
782 Perl_ck_warner_d(aTHX_ packWARN(WARN_DEPRECATED),
783 "Use of inherited AUTOLOAD for non-method %s::%.*s() is deprecated",
784 packname, (int)len, name);
787 /* rather than lookup/init $AUTOLOAD here
788 * only to have the XSUB do another lookup for $AUTOLOAD
789 * and split that value on the last '::',
790 * pass along the same data via some unused fields in the CV
794 Perl_sv_add_backref(aTHX_ MUTABLE_SV(stash), MUTABLE_SV(cv));
795 SvPV_set(cv, (char *)name); /* cast to lose constness warning */
801 * Given &FOO::AUTOLOAD, set $FOO::AUTOLOAD to desired function name.
802 * The subroutine's original name may not be "AUTOLOAD", so we don't
803 * use that, but for lack of anything better we will use the sub's
804 * original package to look up $AUTOLOAD.
806 varstash = GvSTASH(CvGV(cv));
807 vargv = *(GV**)hv_fetch(varstash, S_autoload, S_autolen, TRUE);
811 gv_init(vargv, varstash, S_autoload, S_autolen, FALSE);
812 #ifdef PERL_DONT_CREATE_GVSV
813 GvSV(vargv) = newSV(0);
817 varsv = GvSVn(vargv);
818 sv_setpvn(varsv, packname, packname_len);
819 sv_catpvs(varsv, "::");
820 sv_catpvn(varsv, name, len);
825 /* require_tie_mod() internal routine for requiring a module
826 * that implements the logic of automatical ties like %! and %-
828 * The "gv" parameter should be the glob.
829 * "varpv" holds the name of the var, used for error messages.
830 * "namesv" holds the module name. Its refcount will be decremented.
831 * "methpv" holds the method name to test for to check that things
832 * are working reasonably close to as expected.
833 * "flags": if flag & 1 then save the scalar before loading.
834 * For the protection of $! to work (it is set by this routine)
835 * the sv slot must already be magicalized.
838 S_require_tie_mod(pTHX_ GV *gv, const char *varpv, SV* namesv, const char *methpv,const U32 flags)
841 HV* stash = gv_stashsv(namesv, 0);
843 PERL_ARGS_ASSERT_REQUIRE_TIE_MOD;
845 if (!stash || !(gv_fetchmethod(stash, methpv))) {
846 SV *module = newSVsv(namesv);
847 char varname = *varpv; /* varpv might be clobbered by load_module,
848 so save it. For the moment it's always
854 PUSHSTACKi(PERLSI_MAGIC);
855 Perl_load_module(aTHX_ PERL_LOADMOD_NOIMPORT, module, NULL);
859 stash = gv_stashsv(namesv, 0);
861 Perl_croak(aTHX_ "panic: Can't use %%%c because %"SVf" is not available",
862 varname, SVfARG(namesv));
863 else if (!gv_fetchmethod(stash, methpv))
864 Perl_croak(aTHX_ "panic: Can't use %%%c because %"SVf" does not support method %s",
865 varname, SVfARG(namesv), methpv);
867 SvREFCNT_dec(namesv);
872 =for apidoc gv_stashpv
874 Returns a pointer to the stash for a specified package. Uses C<strlen> to
875 determine the length of C<name>, then calls C<gv_stashpvn()>.
881 Perl_gv_stashpv(pTHX_ const char *name, I32 create)
883 PERL_ARGS_ASSERT_GV_STASHPV;
884 return gv_stashpvn(name, strlen(name), create);
888 =for apidoc gv_stashpvn
890 Returns a pointer to the stash for a specified package. The C<namelen>
891 parameter indicates the length of the C<name>, in bytes. C<flags> is passed
892 to C<gv_fetchpvn_flags()>, so if set to C<GV_ADD> then the package will be
893 created if it does not already exist. If the package does not exist and
894 C<flags> is 0 (or any other setting that does not create packages) then NULL
902 Perl_gv_stashpvn(pTHX_ const char *name, U32 namelen, I32 flags)
908 U32 tmplen = namelen + 2;
910 PERL_ARGS_ASSERT_GV_STASHPVN;
912 if (tmplen <= sizeof smallbuf)
915 Newx(tmpbuf, tmplen, char);
916 Copy(name, tmpbuf, namelen, char);
917 tmpbuf[namelen] = ':';
918 tmpbuf[namelen+1] = ':';
919 tmpgv = gv_fetchpvn_flags(tmpbuf, tmplen, flags, SVt_PVHV);
920 if (tmpbuf != smallbuf)
925 GvHV(tmpgv) = newHV();
927 if (!HvNAME_get(stash))
928 hv_name_set(stash, name, namelen, 0);
933 =for apidoc gv_stashsv
935 Returns a pointer to the stash for a specified package. See C<gv_stashpvn>.
941 Perl_gv_stashsv(pTHX_ SV *sv, I32 flags)
944 const char * const ptr = SvPV_const(sv,len);
946 PERL_ARGS_ASSERT_GV_STASHSV;
948 return gv_stashpvn(ptr, len, flags);
953 Perl_gv_fetchpv(pTHX_ const char *nambeg, I32 add, const svtype sv_type) {
954 PERL_ARGS_ASSERT_GV_FETCHPV;
955 return gv_fetchpvn_flags(nambeg, strlen(nambeg), add, sv_type);
959 Perl_gv_fetchsv(pTHX_ SV *name, I32 flags, const svtype sv_type) {
961 const char * const nambeg = SvPV_const(name, len);
962 PERL_ARGS_ASSERT_GV_FETCHSV;
963 return gv_fetchpvn_flags(nambeg, len, flags | SvUTF8(name), sv_type);
967 S_gv_magicalize_isa(pTHX_ GV *gv, const char *nambeg, I32 add)
971 PERL_ARGS_ASSERT_GV_MAGICALIZE_ISA;
975 sv_magic(MUTABLE_SV(av), MUTABLE_SV(gv), PERL_MAGIC_isa,
977 /* NOTE: No support for tied ISA */
978 if ((add & GV_ADDMULTI) && strEQ(nambeg,"AnyDBM_File::ISA")
979 && AvFILLp(av) == -1)
981 av_push(av, newSVpvs("NDBM_File"));
982 gv_stashpvs("NDBM_File", GV_ADD);
983 av_push(av, newSVpvs("DB_File"));
984 gv_stashpvs("DB_File", GV_ADD);
985 av_push(av, newSVpvs("GDBM_File"));
986 gv_stashpvs("GDBM_File", GV_ADD);
987 av_push(av, newSVpvs("SDBM_File"));
988 gv_stashpvs("SDBM_File", GV_ADD);
989 av_push(av, newSVpvs("ODBM_File"));
990 gv_stashpvs("ODBM_File", GV_ADD);
995 S_gv_magicalize_overload(pTHX_ GV *gv)
999 PERL_ARGS_ASSERT_GV_MAGICALIZE_OVERLOAD;
1003 hv_magic(hv, NULL, PERL_MAGIC_overload);
1007 Perl_gv_fetchpvn_flags(pTHX_ const char *nambeg, STRLEN full_len, I32 flags,
1008 const svtype sv_type)
1011 register const char *name = nambeg;
1012 register GV *gv = NULL;
1015 register const char *name_cursor;
1017 const I32 no_init = flags & (GV_NOADD_NOINIT | GV_NOINIT);
1018 const I32 no_expand = flags & GV_NOEXPAND;
1019 const I32 add = flags & ~GV_NOADD_MASK;
1020 const char *const name_end = nambeg + full_len;
1021 const char *const name_em1 = name_end - 1;
1024 PERL_ARGS_ASSERT_GV_FETCHPVN_FLAGS;
1026 if (flags & GV_NOTQUAL) {
1027 /* Caller promised that there is no stash, so we can skip the check. */
1032 if (full_len > 2 && *name == '*' && isALPHA(name[1])) {
1033 /* accidental stringify on a GV? */
1037 for (name_cursor = name; name_cursor < name_end; name_cursor++) {
1038 if ((*name_cursor == ':' && name_cursor < name_em1
1039 && name_cursor[1] == ':')
1040 || (*name_cursor == '\'' && name_cursor[1]))
1043 stash = PL_defstash;
1044 if (!stash || !SvREFCNT(stash)) /* symbol table under destruction */
1047 len = name_cursor - name;
1052 if (len + 2 <= (I32)sizeof (smallbuf))
1055 Newx(tmpbuf, len+2, char);
1056 Copy(name, tmpbuf, len, char);
1057 tmpbuf[len++] = ':';
1058 tmpbuf[len++] = ':';
1059 gvp = (GV**)hv_fetch(stash,tmpbuf,len,add);
1060 gv = gvp ? *gvp : NULL;
1061 if (gv && gv != (const GV *)&PL_sv_undef) {
1062 if (SvTYPE(gv) != SVt_PVGV)
1063 gv_init(gv, stash, tmpbuf, len, (add & GV_ADDMULTI));
1067 if (tmpbuf != smallbuf)
1069 if (!gv || gv == (const GV *)&PL_sv_undef)
1072 if (!(stash = GvHV(gv)))
1073 stash = GvHV(gv) = newHV();
1075 if (!HvNAME_get(stash))
1076 hv_name_set(stash, nambeg, name_cursor - nambeg, 0);
1079 if (*name_cursor == ':')
1083 if (name == name_end)
1085 ? gv : MUTABLE_GV(*hv_fetchs(PL_defstash, "main::", TRUE));
1088 len = name_cursor - name;
1090 /* No stash in name, so see how we can default */
1094 if (len && isIDFIRST_lazy(name)) {
1095 bool global = FALSE;
1103 if ((name[0] == 'I' && name[1] == 'N' && name[2] == 'C')
1104 || (name[0] == 'E' && name[1] == 'N' && name[2] == 'V')
1105 || (name[0] == 'S' && name[1] == 'I' && name[2] == 'G'))
1109 if (name[0] == 'A' && name[1] == 'R' && name[2] == 'G'
1114 if (name[0] == 'S' && name[1] == 'T' && name[2] == 'D'
1115 && name[3] == 'I' && name[4] == 'N')
1119 if ((name[0] == 'S' && name[1] == 'T' && name[2] == 'D')
1120 &&((name[3] == 'O' && name[4] == 'U' && name[5] == 'T')
1121 ||(name[3] == 'E' && name[4] == 'R' && name[5] == 'R')))
1125 if (name[0] == 'A' && name[1] == 'R' && name[2] == 'G'
1126 && name[3] == 'V' && name[4] == 'O' && name[5] == 'U'
1133 stash = PL_defstash;
1134 else if (IN_PERL_COMPILETIME) {
1135 stash = PL_curstash;
1136 if (add && (PL_hints & HINT_STRICT_VARS) &&
1137 sv_type != SVt_PVCV &&
1138 sv_type != SVt_PVGV &&
1139 sv_type != SVt_PVFM &&
1140 sv_type != SVt_PVIO &&
1141 !(len == 1 && sv_type == SVt_PV &&
1142 (*name == 'a' || *name == 'b')) )
1144 gvp = (GV**)hv_fetch(stash,name,len,0);
1146 *gvp == (const GV *)&PL_sv_undef ||
1147 SvTYPE(*gvp) != SVt_PVGV)
1151 else if ((sv_type == SVt_PV && !GvIMPORTED_SV(*gvp)) ||
1152 (sv_type == SVt_PVAV && !GvIMPORTED_AV(*gvp)) ||
1153 (sv_type == SVt_PVHV && !GvIMPORTED_HV(*gvp)) )
1155 /* diag_listed_as: Variable "%s" is not imported%s */
1157 aTHX_ packWARN(WARN_MISC),
1158 "Variable \"%c%s\" is not imported",
1159 sv_type == SVt_PVAV ? '@' :
1160 sv_type == SVt_PVHV ? '%' : '$',
1164 aTHX_ packWARN(WARN_MISC),
1165 "\t(Did you mean &%s instead?)\n", name
1172 stash = CopSTASH(PL_curcop);
1175 stash = PL_defstash;
1178 /* By this point we should have a stash and a name */
1182 SV * const err = Perl_mess(aTHX_
1183 "Global symbol \"%s%s\" requires explicit package name",
1184 (sv_type == SVt_PV ? "$"
1185 : sv_type == SVt_PVAV ? "@"
1186 : sv_type == SVt_PVHV ? "%"
1189 if (USE_UTF8_IN_NAMES)
1192 gv = gv_fetchpvs("<none>::", GV_ADDMULTI, SVt_PVHV);
1194 /* symbol table under destruction */
1203 if (!SvREFCNT(stash)) /* symbol table under destruction */
1206 gvp = (GV**)hv_fetch(stash,name,len,add);
1207 if (!gvp || *gvp == (const GV *)&PL_sv_undef)
1210 if (SvTYPE(gv) == SVt_PVGV) {
1213 gv_init_sv(gv, sv_type);
1214 if (len == 1 && (sv_type == SVt_PVHV || sv_type == SVt_PVGV)) {
1216 require_tie_mod(gv, "!", newSVpvs("Errno"), "TIEHASH", 1);
1217 else if (*name == '-' || *name == '+')
1218 require_tie_mod(gv, name, newSVpvs("Tie::Hash::NamedCapture"), "TIEHASH", 0);
1222 } else if (no_init) {
1224 } else if (no_expand && SvROK(gv)) {
1228 /* Adding a new symbol.
1229 Unless of course there was already something non-GV here, in which case
1230 we want to behave as if there was always a GV here, containing some sort
1232 Otherwise we run the risk of creating things like GvIO, which can cause
1233 subtle bugs. eg the one that tripped up SQL::Translator */
1235 faking_it = SvOK(gv);
1237 if (add & GV_ADDWARN)
1238 Perl_ck_warner_d(aTHX_ packWARN(WARN_INTERNAL), "Had to create %s unexpectedly", nambeg);
1239 gv_init(gv, stash, name, len, add & GV_ADDMULTI);
1240 gv_init_sv(gv, faking_it ? SVt_PVCV : sv_type);
1242 if (isALPHA(name[0]) && ! (isLEXWARN_on ? ckWARN(WARN_ONCE)
1243 : (PL_dowarn & G_WARN_ON ) ) )
1246 /* set up magic where warranted */
1247 if (stash != PL_defstash) { /* not the main stash */
1248 /* We only have to check for four names here: EXPORT, ISA, OVERLOAD
1249 and VERSION. All the others apply only to the main stash. */
1251 const char * const name2 = name + 1;
1254 if (strnEQ(name2, "XPORT", 5))
1258 if (strEQ(name2, "SA"))
1259 gv_magicalize_isa(gv, nambeg, add);
1262 if (strEQ(name2, "VERLOAD"))
1263 gv_magicalize_overload(gv);
1266 if (strEQ(name2, "ERSION"))
1276 /* Nothing else to do.
1277 The compiler will probably turn the switch statement into a
1278 branch table. Make sure we avoid even that small overhead for
1279 the common case of lower case variable names. */
1283 const char * const name2 = name + 1;
1286 if (strEQ(name2, "RGV")) {
1287 IoFLAGS(GvIOn(gv)) |= IOf_ARGV|IOf_START;
1289 else if (strEQ(name2, "RGVOUT")) {
1294 if (strnEQ(name2, "XPORT", 5))
1298 if (strEQ(name2, "SA")) {
1299 gv_magicalize_isa(gv, nambeg, add);
1303 if (strEQ(name2, "VERLOAD")) {
1304 gv_magicalize_overload(gv);
1308 if (strEQ(name2, "IG")) {
1311 if (!PL_psig_name) {
1312 Newxz(PL_psig_name, 2 * SIG_SIZE, SV*);
1313 Newxz(PL_psig_pend, SIG_SIZE, int);
1314 PL_psig_ptr = PL_psig_name + SIG_SIZE;
1316 /* I think that the only way to get here is to re-use an
1317 embedded perl interpreter, where the previous
1318 use didn't clean up fully because
1319 PL_perl_destruct_level was 0. I'm not sure that we
1320 "support" that, in that I suspect in that scenario
1321 there are sufficient other garbage values left in the
1322 interpreter structure that something else will crash
1323 before we get here. I suspect that this is one of
1324 those "doctor, it hurts when I do this" bugs. */
1325 Zero(PL_psig_name, 2 * SIG_SIZE, SV*);
1326 Zero(PL_psig_pend, SIG_SIZE, int);
1330 hv_magic(hv, NULL, PERL_MAGIC_sig);
1331 for (i = 1; i < SIG_SIZE; i++) {
1332 SV * const * const init = hv_fetch(hv, PL_sig_name[i], strlen(PL_sig_name[i]), 1);
1334 sv_setsv(*init, &PL_sv_undef);
1339 if (strEQ(name2, "ERSION"))
1342 case '\003': /* $^CHILD_ERROR_NATIVE */
1343 if (strEQ(name2, "HILD_ERROR_NATIVE"))
1346 case '\005': /* $^ENCODING */
1347 if (strEQ(name2, "NCODING"))
1350 case '\015': /* $^MATCH */
1351 if (strEQ(name2, "ATCH"))
1353 case '\017': /* $^OPEN */
1354 if (strEQ(name2, "PEN"))
1357 case '\020': /* $^PREMATCH $^POSTMATCH */
1358 if (strEQ(name2, "REMATCH") || strEQ(name2, "OSTMATCH"))
1360 case '\024': /* ${^TAINT} */
1361 if (strEQ(name2, "AINT"))
1364 case '\025': /* ${^UNICODE}, ${^UTF8LOCALE} */
1365 if (strEQ(name2, "NICODE"))
1367 if (strEQ(name2, "TF8LOCALE"))
1369 if (strEQ(name2, "TF8CACHE"))
1372 case '\027': /* $^WARNING_BITS */
1373 if (strEQ(name2, "ARNING_BITS"))
1386 /* Ensures that we have an all-digit variable, ${"1foo"} fails
1388 /* This snippet is taken from is_gv_magical */
1389 const char *end = name + len;
1390 while (--end > name) {
1391 if (!isDIGIT(*end)) return gv;
1398 /* Names of length 1. (Or 0. But name is NUL terminated, so that will
1399 be case '\0' in this switch statement (ie a default case) */
1405 sv_type == SVt_PVAV ||
1406 sv_type == SVt_PVHV ||
1407 sv_type == SVt_PVCV ||
1408 sv_type == SVt_PVFM ||
1411 PL_sawampersand = TRUE;
1415 sv_setpv(GvSVn(gv),PL_chopset);
1419 #ifdef COMPLEX_STATUS
1420 SvUPGRADE(GvSVn(gv), SVt_PVLV);
1426 /* If %! has been used, automatically load Errno.pm. */
1428 sv_magic(GvSVn(gv), MUTABLE_SV(gv), PERL_MAGIC_sv, name, len);
1430 /* magicalization must be done before require_tie_mod is called */
1431 if (sv_type == SVt_PVHV || sv_type == SVt_PVGV)
1432 require_tie_mod(gv, "!", newSVpvs("Errno"), "TIEHASH", 1);
1437 GvMULTI_on(gv); /* no used once warnings here */
1439 AV* const av = GvAVn(gv);
1440 SV* const avc = (*name == '+') ? MUTABLE_SV(av) : NULL;
1442 sv_magic(MUTABLE_SV(av), avc, PERL_MAGIC_regdata, NULL, 0);
1443 sv_magic(GvSVn(gv), MUTABLE_SV(gv), PERL_MAGIC_sv, name, len);
1445 SvREADONLY_on(GvSVn(gv));
1448 if (sv_type == SVt_PVHV || sv_type == SVt_PVGV)
1449 require_tie_mod(gv, name, newSVpvs("Tie::Hash::NamedCapture"), "TIEHASH", 0);
1455 if (sv_type == SVt_PV)
1456 Perl_ck_warner_d(aTHX_ packWARN2(WARN_DEPRECATED, WARN_SYNTAX),
1457 "$%c is no longer supported", *name);
1460 sv_setiv(GvSVn(gv), (IV)(IoFLAGS(GvIOp(PL_defoutgv)) & IOf_FLUSH) != 0);
1463 case '\010': /* $^H */
1465 HV *const hv = GvHVn(gv);
1466 hv_magic(hv, NULL, PERL_MAGIC_hints);
1469 case '\023': /* $^S */
1471 SvREADONLY_on(GvSVn(gv));
1495 case '\001': /* $^A */
1496 case '\003': /* $^C */
1497 case '\004': /* $^D */
1498 case '\005': /* $^E */
1499 case '\006': /* $^F */
1500 case '\011': /* $^I, NOT \t in EBCDIC */
1501 case '\016': /* $^N */
1502 case '\017': /* $^O */
1503 case '\020': /* $^P */
1504 case '\024': /* $^T */
1505 case '\027': /* $^W */
1507 sv_magic(GvSVn(gv), MUTABLE_SV(gv), PERL_MAGIC_sv, name, len);
1510 case '\014': /* $^L */
1511 sv_setpvs(GvSVn(gv),"\f");
1512 PL_formfeed = GvSVn(gv);
1515 sv_setpvs(GvSVn(gv),"\034");
1519 SV * const sv = GvSVn(gv);
1520 if (!sv_derived_from(PL_patchlevel, "version"))
1521 upg_version(PL_patchlevel, TRUE);
1522 GvSV(gv) = vnumify(PL_patchlevel);
1523 SvREADONLY_on(GvSV(gv));
1527 case '\026': /* $^V */
1529 SV * const sv = GvSVn(gv);
1530 GvSV(gv) = new_version(PL_patchlevel);
1531 SvREADONLY_on(GvSV(gv));
1541 Perl_gv_fullname4(pTHX_ SV *sv, const GV *gv, const char *prefix, bool keepmain)
1545 const HV * const hv = GvSTASH(gv);
1547 PERL_ARGS_ASSERT_GV_FULLNAME4;
1553 sv_setpv(sv, prefix ? prefix : "");
1555 name = HvNAME_get(hv);
1557 namelen = HvNAMELEN_get(hv);
1563 if (keepmain || strNE(name, "main")) {
1564 sv_catpvn(sv,name,namelen);
1567 sv_catpvn(sv,GvNAME(gv),GvNAMELEN(gv));
1571 Perl_gv_efullname4(pTHX_ SV *sv, const GV *gv, const char *prefix, bool keepmain)
1573 const GV * const egv = GvEGVx(gv);
1575 PERL_ARGS_ASSERT_GV_EFULLNAME4;
1577 gv_fullname4(sv, egv ? egv : gv, prefix, keepmain);
1581 Perl_gv_check(pTHX_ const HV *stash)
1586 PERL_ARGS_ASSERT_GV_CHECK;
1588 if (!HvARRAY(stash))
1590 for (i = 0; i <= (I32) HvMAX(stash); i++) {
1592 for (entry = HvARRAY(stash)[i]; entry; entry = HeNEXT(entry)) {
1595 if (HeKEY(entry)[HeKLEN(entry)-1] == ':' &&
1596 (gv = MUTABLE_GV(HeVAL(entry))) && isGV(gv) && (hv = GvHV(gv)))
1598 if (hv != PL_defstash && hv != stash)
1599 gv_check(hv); /* nested package */
1601 else if (isALPHA(*HeKEY(entry))) {
1603 gv = MUTABLE_GV(HeVAL(entry));
1604 if (SvTYPE(gv) != SVt_PVGV || GvMULTI(gv))
1607 CopLINE_set(PL_curcop, GvLINE(gv));
1609 CopFILE(PL_curcop) = (char *)file; /* set for warning */
1611 CopFILEGV(PL_curcop)
1612 = gv_fetchfile_flags(file, HEK_LEN(GvFILE_HEK(gv)), 0);
1614 Perl_warner(aTHX_ packWARN(WARN_ONCE),
1615 "Name \"%s::%s\" used only once: possible typo",
1616 HvNAME_get(stash), GvNAME(gv));
1623 Perl_newGVgen(pTHX_ const char *pack)
1627 PERL_ARGS_ASSERT_NEWGVGEN;
1629 return gv_fetchpv(Perl_form(aTHX_ "%s::_GEN_%ld", pack, (long)PL_gensym++),
1633 /* hopefully this is only called on local symbol table entries */
1636 Perl_gp_ref(pTHX_ GP *gp)
1644 /* If the GP they asked for a reference to contains
1645 a method cache entry, clear it first, so that we
1646 don't infect them with our cached entry */
1647 SvREFCNT_dec(gp->gp_cv);
1656 Perl_gp_free(pTHX_ GV *gv)
1661 if (!gv || !isGV_with_GP(gv) || !(gp = GvGP(gv)))
1663 if (gp->gp_refcnt == 0) {
1664 Perl_ck_warner_d(aTHX_ packWARN(WARN_INTERNAL),
1665 "Attempt to free unreferenced glob pointers"
1666 pTHX__FORMAT pTHX__VALUE);
1669 if (--gp->gp_refcnt > 0) {
1670 if (gp->gp_egv == gv)
1676 if (gp->gp_file_hek)
1677 unshare_hek(gp->gp_file_hek);
1678 SvREFCNT_dec(gp->gp_sv);
1679 SvREFCNT_dec(gp->gp_av);
1680 /* FIXME - another reference loop GV -> symtab -> GV ?
1681 Somehow gp->gp_hv can end up pointing at freed garbage. */
1682 if (gp->gp_hv && SvTYPE(gp->gp_hv) == SVt_PVHV) {
1683 const char *hvname = HvNAME_get(gp->gp_hv);
1684 if (PL_stashcache && hvname)
1685 (void)hv_delete(PL_stashcache, hvname, HvNAMELEN_get(gp->gp_hv),
1687 SvREFCNT_dec(gp->gp_hv);
1689 SvREFCNT_dec(gp->gp_io);
1690 SvREFCNT_dec(gp->gp_cv);
1691 SvREFCNT_dec(gp->gp_form);
1698 Perl_magic_freeovrld(pTHX_ SV *sv, MAGIC *mg)
1700 AMT * const amtp = (AMT*)mg->mg_ptr;
1701 PERL_UNUSED_ARG(sv);
1703 PERL_ARGS_ASSERT_MAGIC_FREEOVRLD;
1705 if (amtp && AMT_AMAGIC(amtp)) {
1707 for (i = 1; i < NofAMmeth; i++) {
1708 CV * const cv = amtp->table[i];
1710 SvREFCNT_dec(MUTABLE_SV(cv));
1711 amtp->table[i] = NULL;
1718 /* Updates and caches the CV's */
1720 * 1 on success and there is some overload
1721 * 0 if there is no overload
1722 * -1 if some error occurred and it couldn't croak
1726 Perl_Gv_AMupdate(pTHX_ HV *stash, bool destructing)
1729 MAGIC* const mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table);
1731 const struct mro_meta* stash_meta = HvMROMETA(stash);
1734 PERL_ARGS_ASSERT_GV_AMUPDATE;
1736 newgen = PL_sub_generation + stash_meta->pkg_gen + stash_meta->cache_gen;
1738 const AMT * const amtp = (AMT*)mg->mg_ptr;
1739 if (amtp->was_ok_am == PL_amagic_generation
1740 && amtp->was_ok_sub == newgen) {
1741 return AMT_OVERLOADED(amtp) ? 1 : 0;
1743 sv_unmagic(MUTABLE_SV(stash), PERL_MAGIC_overload_table);
1746 DEBUG_o( Perl_deb(aTHX_ "Recalcing overload magic in package %s\n",HvNAME_get(stash)) );
1749 amt.was_ok_am = PL_amagic_generation;
1750 amt.was_ok_sub = newgen;
1751 amt.fallback = AMGfallNO;
1755 int filled = 0, have_ovl = 0;
1758 /* Work with "fallback" key, which we assume to be first in PL_AMG_names */
1760 /* Try to find via inheritance. */
1761 GV *gv = gv_fetchmeth(stash, PL_AMG_names[0], 2, -1);
1762 SV * const sv = gv ? GvSV(gv) : NULL;
1766 lim = DESTROY_amg; /* Skip overloading entries. */
1767 #ifdef PERL_DONT_CREATE_GVSV
1769 NOOP; /* Equivalent to !SvTRUE and !SvOK */
1772 else if (SvTRUE(sv))
1773 amt.fallback=AMGfallYES;
1775 amt.fallback=AMGfallNEVER;
1777 for (i = 1; i < lim; i++)
1778 amt.table[i] = NULL;
1779 for (; i < NofAMmeth; i++) {
1780 const char * const cooky = PL_AMG_names[i];
1781 /* Human-readable form, for debugging: */
1782 const char * const cp = (i >= DESTROY_amg ? cooky : AMG_id2name(i));
1783 const STRLEN l = PL_AMG_namelens[i];
1785 DEBUG_o( Perl_deb(aTHX_ "Checking overloading of \"%s\" in package \"%.256s\"\n",
1786 cp, HvNAME_get(stash)) );
1787 /* don't fill the cache while looking up!
1788 Creation of inheritance stubs in intermediate packages may
1789 conflict with the logic of runtime method substitution.
1790 Indeed, for inheritance A -> B -> C, if C overloads "+0",
1791 then we could have created stubs for "(+0" in A and C too.
1792 But if B overloads "bool", we may want to use it for
1793 numifying instead of C's "+0". */
1794 if (i >= DESTROY_amg)
1795 gv = Perl_gv_fetchmeth_autoload(aTHX_ stash, cooky, l, 0);
1796 else /* Autoload taken care of below */
1797 gv = Perl_gv_fetchmeth(aTHX_ stash, cooky, l, -1);
1799 if (gv && (cv = GvCV(gv))) {
1801 if (GvNAMELEN(CvGV(cv)) == 3 && strEQ(GvNAME(CvGV(cv)), "nil")
1802 && strEQ(hvname = HvNAME_get(GvSTASH(CvGV(cv))), "overload")) {
1803 /* This is a hack to support autoloading..., while
1804 knowing *which* methods were declared as overloaded. */
1805 /* GvSV contains the name of the method. */
1807 SV *gvsv = GvSV(gv);
1809 DEBUG_o( Perl_deb(aTHX_ "Resolving method \"%"SVf256\
1810 "\" for overloaded \"%s\" in package \"%.256s\"\n",
1811 (void*)GvSV(gv), cp, hvname) );
1812 if (!gvsv || !SvPOK(gvsv)
1813 || !(ngv = gv_fetchmethod_autoload(stash, SvPVX_const(gvsv),
1816 /* Can be an import stub (created by "can"). */
1821 const char * const name = (gvsv && SvPOK(gvsv)) ? SvPVX_const(gvsv) : "???";
1822 Perl_croak(aTHX_ "%s method \"%.256s\" overloading \"%s\" "\
1823 "in package \"%.256s\"",
1824 (GvCVGEN(gv) ? "Stub found while resolving"
1829 cv = GvCV(gv = ngv);
1831 DEBUG_o( Perl_deb(aTHX_ "Overloading \"%s\" in package \"%.256s\" via \"%.256s::%.256s\"\n",
1832 cp, HvNAME_get(stash), HvNAME_get(GvSTASH(CvGV(cv))),
1833 GvNAME(CvGV(cv))) );
1835 if (i < DESTROY_amg)
1837 } else if (gv) { /* Autoloaded... */
1838 cv = MUTABLE_CV(gv);
1841 amt.table[i]=MUTABLE_CV(SvREFCNT_inc_simple(cv));
1844 AMT_AMAGIC_on(&amt);
1846 AMT_OVERLOADED_on(&amt);
1847 sv_magic(MUTABLE_SV(stash), 0, PERL_MAGIC_overload_table,
1848 (char*)&amt, sizeof(AMT));
1852 /* Here we have no table: */
1854 AMT_AMAGIC_off(&amt);
1855 sv_magic(MUTABLE_SV(stash), 0, PERL_MAGIC_overload_table,
1856 (char*)&amt, sizeof(AMTS));
1862 Perl_gv_handler(pTHX_ HV *stash, I32 id)
1868 struct mro_meta* stash_meta;
1870 if (!stash || !HvNAME_get(stash))
1873 stash_meta = HvMROMETA(stash);
1874 newgen = PL_sub_generation + stash_meta->pkg_gen + stash_meta->cache_gen;
1876 mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table);
1879 /* If we're looking up a destructor to invoke, we must avoid
1880 * that Gv_AMupdate croaks, because we might be dying already */
1881 if (Gv_AMupdate(stash, id == DESTROY_amg) == -1) {
1882 /* and if it didn't found a destructor, we fall back
1883 * to a simpler method that will only look for the
1884 * destructor instead of the whole magic */
1885 if (id == DESTROY_amg) {
1886 GV * const gv = gv_fetchmethod(stash, "DESTROY");
1892 mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table);
1895 amtp = (AMT*)mg->mg_ptr;
1896 if ( amtp->was_ok_am != PL_amagic_generation
1897 || amtp->was_ok_sub != newgen )
1899 if (AMT_AMAGIC(amtp)) {
1900 CV * const ret = amtp->table[id];
1901 if (ret && isGV(ret)) { /* Autoloading stab */
1902 /* Passing it through may have resulted in a warning
1903 "Inherited AUTOLOAD for a non-method deprecated", since
1904 our caller is going through a function call, not a method call.
1905 So return the CV for AUTOLOAD, setting $AUTOLOAD. */
1906 GV * const gv = gv_fetchmethod(stash, PL_AMG_names[id]);
1918 /* Implement tryAMAGICun_MG macro.
1919 Do get magic, then see if the stack arg is overloaded and if so call it.
1921 AMGf_set return the arg using SETs rather than assigning to
1923 AMGf_numeric apply sv_2num to the stack arg.
1927 Perl_try_amagic_un(pTHX_ int method, int flags) {
1931 SV* const arg = TOPs;
1935 if (SvAMAGIC(arg) && (tmpsv = AMG_CALLun_var(arg,method))) {
1936 if (flags & AMGf_set) {
1941 if (SvPADMY(TARG)) {
1942 sv_setsv(TARG, tmpsv);
1952 if ((flags & AMGf_numeric) && SvROK(arg))
1958 /* Implement tryAMAGICbin_MG macro.
1959 Do get magic, then see if the two stack args are overloaded and if so
1962 AMGf_set return the arg using SETs rather than assigning to
1964 AMGf_assign op may be called as mutator (eg +=)
1965 AMGf_numeric apply sv_2num to the stack arg.
1969 Perl_try_amagic_bin(pTHX_ int method, int flags) {
1972 SV* const left = TOPm1s;
1973 SV* const right = TOPs;
1979 if (SvAMAGIC(left) || SvAMAGIC(right)) {
1980 SV * const tmpsv = amagic_call(left, right, method,
1981 ((flags & AMGf_assign) && opASSIGN ? AMGf_assign: 0));
1983 if (flags & AMGf_set) {
1990 if (opASSIGN || SvPADMY(TARG)) {
1991 sv_setsv(TARG, tmpsv);
2001 if (flags & AMGf_numeric) {
2003 *(sp-1) = sv_2num(left);
2005 *sp = sv_2num(right);
2012 Perl_amagic_call(pTHX_ SV *left, SV *right, int method, int flags)
2017 CV **cvp=NULL, **ocvp=NULL;
2018 AMT *amtp=NULL, *oamtp=NULL;
2019 int off = 0, off1, lr = 0, notfound = 0;
2020 int postpr = 0, force_cpy = 0;
2021 int assign = AMGf_assign & flags;
2022 const int assignshift = assign ? 1 : 0;
2028 PERL_ARGS_ASSERT_AMAGIC_CALL;
2030 if ( PL_curcop->cop_hints & HINT_NO_AMAGIC ) {
2031 SV *lex_mask = Perl_refcounted_he_fetch(aTHX_ PL_curcop->cop_hints_hash,
2032 0, "overloading", 11, 0, 0);
2034 if ( !lex_mask || !SvOK(lex_mask) )
2035 /* overloading lexically disabled */
2037 else if ( lex_mask && SvPOK(lex_mask) ) {
2038 /* we have an entry in the hints hash, check if method has been
2039 * masked by overloading.pm */
2041 const int offset = method / 8;
2042 const int bit = method % 8;
2043 char *pv = SvPV(lex_mask, len);
2045 /* Bit set, so this overloading operator is disabled */
2046 if ( (STRLEN)offset < len && pv[offset] & ( 1 << bit ) )
2051 if (!(AMGf_noleft & flags) && SvAMAGIC(left)
2052 && (stash = SvSTASH(SvRV(left)))
2053 && (mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table))
2054 && (ocvp = cvp = (AMT_AMAGIC((AMT*)mg->mg_ptr)
2055 ? (oamtp = amtp = (AMT*)mg->mg_ptr)->table
2057 && ((cv = cvp[off=method+assignshift])
2058 || (assign && amtp->fallback > AMGfallNEVER && /* fallback to
2064 cv = cvp[off=method])))) {
2065 lr = -1; /* Call method for left argument */
2067 if (cvp && amtp->fallback > AMGfallNEVER && flags & AMGf_unary) {
2070 /* look for substituted methods */
2071 /* In all the covered cases we should be called with assign==0. */
2075 if ((cv = cvp[off=add_ass_amg])
2076 || ((cv = cvp[off = add_amg]) && (force_cpy = 0, postpr = 1))) {
2077 right = &PL_sv_yes; lr = -1; assign = 1;
2082 if ((cv = cvp[off = subtr_ass_amg])
2083 || ((cv = cvp[off = subtr_amg]) && (force_cpy = 0, postpr=1))) {
2084 right = &PL_sv_yes; lr = -1; assign = 1;
2088 (void)((cv = cvp[off=numer_amg]) || (cv = cvp[off=string_amg]));
2091 (void)((cv = cvp[off=string_amg]) || (cv = cvp[off=bool__amg]));
2094 (void)((cv = cvp[off=numer_amg]) || (cv = cvp[off=bool__amg]));
2097 (void)((cv = cvp[off=bool__amg])
2098 || (cv = cvp[off=numer_amg])
2099 || (cv = cvp[off=string_amg]));
2106 * SV* ref causes confusion with the interpreter variable of
2109 SV* const tmpRef=SvRV(left);
2110 if (!SvROK(tmpRef) && SvTYPE(tmpRef) <= SVt_PVMG) {
2112 * Just to be extra cautious. Maybe in some
2113 * additional cases sv_setsv is safe, too.
2115 SV* const newref = newSVsv(tmpRef);
2116 SvOBJECT_on(newref);
2117 /* As a bit of a source compatibility hack, SvAMAGIC() and
2118 friends dereference an RV, to behave the same was as when
2119 overloading was stored on the reference, not the referant.
2120 Hence we can't use SvAMAGIC_on()
2122 SvFLAGS(newref) |= SVf_AMAGIC;
2123 SvSTASH_set(newref, MUTABLE_HV(SvREFCNT_inc(SvSTASH(tmpRef))));
2129 if ((cvp[off1=lt_amg] || cvp[off1=ncmp_amg])
2130 && ((cv = cvp[off=neg_amg]) || (cv = cvp[off=subtr_amg]))) {
2131 SV* const nullsv=sv_2mortal(newSViv(0));
2133 SV* const lessp = amagic_call(left,nullsv,
2134 lt_amg,AMGf_noright);
2135 logic = SvTRUE(lessp);
2137 SV* const lessp = amagic_call(left,nullsv,
2138 ncmp_amg,AMGf_noright);
2139 logic = (SvNV(lessp) < 0);
2142 if (off==subtr_amg) {
2153 if ((cv = cvp[off=subtr_amg])) {
2155 left = sv_2mortal(newSViv(0));
2160 case iter_amg: /* XXXX Eventually should do to_gv. */
2161 case ftest_amg: /* XXXX Eventually should do to_gv. */
2164 return NULL; /* Delegate operation to standard mechanisms. */
2172 return left; /* Delegate operation to standard mechanisms. */
2177 if (!cv) goto not_found;
2178 } else if (!(AMGf_noright & flags) && SvAMAGIC(right)
2179 && (stash = SvSTASH(SvRV(right)))
2180 && (mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table))
2181 && (cvp = (AMT_AMAGIC((AMT*)mg->mg_ptr)
2182 ? (amtp = (AMT*)mg->mg_ptr)->table
2184 && (cv = cvp[off=method])) { /* Method for right
2187 } else if (((ocvp && oamtp->fallback > AMGfallNEVER
2188 && (cvp=ocvp) && (lr = -1))
2189 || (cvp && amtp->fallback > AMGfallNEVER && (lr=1)))
2190 && !(flags & AMGf_unary)) {
2191 /* We look for substitution for
2192 * comparison operations and
2194 if (method==concat_amg || method==concat_ass_amg
2195 || method==repeat_amg || method==repeat_ass_amg) {
2196 return NULL; /* Delegate operation to string conversion */
2217 if ((off != -1) && (cv = cvp[off]))
2222 not_found: /* No method found, either report or croak */
2230 return left; /* Delegate operation to standard mechanisms. */
2233 if (ocvp && (cv=ocvp[nomethod_amg])) { /* Call report method */
2234 notfound = 1; lr = -1;
2235 } else if (cvp && (cv=cvp[nomethod_amg])) {
2236 notfound = 1; lr = 1;
2237 } else if ((amtp && amtp->fallback >= AMGfallYES) && !DEBUG_o_TEST) {
2238 /* Skip generating the "no method found" message. */
2242 if (off==-1) off=method;
2243 msg = sv_2mortal(Perl_newSVpvf(aTHX_
2244 "Operation \"%s\": no method found,%sargument %s%s%s%s",
2245 AMG_id2name(method + assignshift),
2246 (flags & AMGf_unary ? " " : "\n\tleft "),
2248 "in overloaded package ":
2249 "has no overloaded magic",
2251 HvNAME_get(SvSTASH(SvRV(left))):
2254 ",\n\tright argument in overloaded package ":
2257 : ",\n\tright argument has no overloaded magic"),
2259 HvNAME_get(SvSTASH(SvRV(right))):
2261 if (amtp && amtp->fallback >= AMGfallYES) {
2262 DEBUG_o( Perl_deb(aTHX_ "%s", SvPVX_const(msg)) );
2264 Perl_croak(aTHX_ "%"SVf, SVfARG(msg));
2268 force_cpy = force_cpy || assign;
2273 DEBUG_o(Perl_deb(aTHX_
2274 "Overloaded operator \"%s\"%s%s%s:\n\tmethod%s found%s in package %s%s\n",
2276 method+assignshift==off? "" :
2278 method+assignshift==off? "" :
2279 AMG_id2name(method+assignshift),
2280 method+assignshift==off? "" : "\")",
2281 flags & AMGf_unary? "" :
2282 lr==1 ? " for right argument": " for left argument",
2283 flags & AMGf_unary? " for argument" : "",
2284 stash ? HvNAME_get(stash) : "null",
2285 fl? ",\n\tassignment variant used": "") );
2288 /* Since we use shallow copy during assignment, we need
2289 * to dublicate the contents, probably calling user-supplied
2290 * version of copy operator
2292 /* We need to copy in following cases:
2293 * a) Assignment form was called.
2294 * assignshift==1, assign==T, method + 1 == off
2295 * b) Increment or decrement, called directly.
2296 * assignshift==0, assign==0, method + 0 == off
2297 * c) Increment or decrement, translated to assignment add/subtr.
2298 * assignshift==0, assign==T,
2300 * d) Increment or decrement, translated to nomethod.
2301 * assignshift==0, assign==0,
2303 * e) Assignment form translated to nomethod.
2304 * assignshift==1, assign==T, method + 1 != off
2307 /* off is method, method+assignshift, or a result of opcode substitution.
2308 * In the latter case assignshift==0, so only notfound case is important.
2310 if (( (method + assignshift == off)
2311 && (assign || (method == inc_amg) || (method == dec_amg)))
2321 const bool oldcatch = CATCH_GET;
2324 Zero(&myop, 1, BINOP);
2325 myop.op_last = (OP *) &myop;
2326 myop.op_next = NULL;
2327 myop.op_flags = OPf_WANT_SCALAR | OPf_STACKED;
2329 PUSHSTACKi(PERLSI_OVERLOAD);
2332 PL_op = (OP *) &myop;
2333 if (PERLDB_SUB && PL_curstash != PL_debstash)
2334 PL_op->op_private |= OPpENTERSUB_DB;
2338 EXTEND(SP, notfound + 5);
2339 PUSHs(lr>0? right: left);
2340 PUSHs(lr>0? left: right);
2341 PUSHs( lr > 0 ? &PL_sv_yes : ( assign ? &PL_sv_undef : &PL_sv_no ));
2343 PUSHs(newSVpvn_flags(AMG_id2name(method + assignshift),
2344 AMG_id2namelen(method + assignshift), SVs_TEMP));
2346 PUSHs(MUTABLE_SV(cv));
2349 if ((PL_op = PL_ppaddr[OP_ENTERSUB](aTHX)))
2357 CATCH_SET(oldcatch);
2364 ans=SvIV(res)<=0; break;
2367 ans=SvIV(res)<0; break;
2370 ans=SvIV(res)>=0; break;
2373 ans=SvIV(res)>0; break;
2376 ans=SvIV(res)==0; break;
2379 ans=SvIV(res)!=0; break;
2382 SvSetSV(left,res); return left;
2384 ans=!SvTRUE(res); break;
2389 } else if (method==copy_amg) {
2391 Perl_croak(aTHX_ "Copy method did not return a reference");
2393 return SvREFCNT_inc(SvRV(res));
2401 =for apidoc is_gv_magical_sv
2403 Returns C<TRUE> if given the name of a magical GV.
2405 Currently only useful internally when determining if a GV should be
2406 created even in rvalue contexts.
2408 C<flags> is not used at present but available for future extension to
2409 allow selecting particular classes of magical variable.
2411 Currently assumes that C<name> is NUL terminated (as well as len being valid).
2412 This assumption is met by all callers within the perl core, which all pass
2413 pointers returned by SvPV.
2419 Perl_is_gv_magical_sv(pTHX_ SV *const name_sv, U32 flags)
2422 const char *const name = SvPV_const(name_sv, len);
2424 PERL_UNUSED_ARG(flags);
2425 PERL_ARGS_ASSERT_IS_GV_MAGICAL_SV;
2428 const char * const name1 = name + 1;
2431 if (len == 3 && name[1] == 'S' && name[2] == 'A')
2435 if (len == 8 && strEQ(name1, "VERLOAD"))
2439 if (len == 3 && name[1] == 'I' && name[2] == 'G')
2442 /* Using ${^...} variables is likely to be sufficiently rare that
2443 it seems sensible to avoid the space hit of also checking the
2445 case '\017': /* ${^OPEN} */
2446 if (strEQ(name1, "PEN"))
2449 case '\024': /* ${^TAINT} */
2450 if (strEQ(name1, "AINT"))
2453 case '\025': /* ${^UNICODE} */
2454 if (strEQ(name1, "NICODE"))
2456 if (strEQ(name1, "TF8LOCALE"))
2459 case '\027': /* ${^WARNING_BITS} */
2460 if (strEQ(name1, "ARNING_BITS"))
2473 const char *end = name + len;
2474 while (--end > name) {
2482 /* Because we're already assuming that name is NUL terminated
2483 below, we can treat an empty name as "\0" */
2509 case '\001': /* $^A */
2510 case '\003': /* $^C */
2511 case '\004': /* $^D */
2512 case '\005': /* $^E */
2513 case '\006': /* $^F */
2514 case '\010': /* $^H */
2515 case '\011': /* $^I, NOT \t in EBCDIC */
2516 case '\014': /* $^L */
2517 case '\016': /* $^N */
2518 case '\017': /* $^O */
2519 case '\020': /* $^P */
2520 case '\023': /* $^S */
2521 case '\024': /* $^T */
2522 case '\026': /* $^V */
2523 case '\027': /* $^W */
2543 Perl_gv_name_set(pTHX_ GV *gv, const char *name, U32 len, U32 flags)
2548 PERL_ARGS_ASSERT_GV_NAME_SET;
2549 PERL_UNUSED_ARG(flags);
2552 Perl_croak(aTHX_ "panic: gv name too long (%"UVuf")", (UV) len);
2554 if (!(flags & GV_ADD) && GvNAME_HEK(gv)) {
2555 unshare_hek(GvNAME_HEK(gv));
2558 PERL_HASH(hash, name, len);
2559 GvNAME_HEK(gv) = share_hek(name, len, hash);
2563 =for apidoc gv_try_downgrade
2565 If the typeglob C<gv> can be expressed more succinctly, by having
2566 something other than a real GV in its place in the stash, replace it
2567 with the optimised form. Basic requirements for this are that C<gv>
2568 is a real typeglob, is sufficiently ordinary, and is only referenced
2569 from its package. This function is meant to be used when a GV has been
2570 looked up in part to see what was there, causing upgrading, but based
2571 on what was found it turns out that the real GV isn't required after all.
2573 If C<gv> is a completely empty typeglob, it is deleted from the stash.
2575 If C<gv> is a typeglob containing only a sufficiently-ordinary constant
2576 sub, the typeglob is replaced with a scalar-reference placeholder that
2577 more compactly represents the same thing.
2583 Perl_gv_try_downgrade(pTHX_ GV *gv)
2589 PERL_ARGS_ASSERT_GV_TRY_DOWNGRADE;
2590 if (!(SvREFCNT(gv) == 1 && SvTYPE(gv) == SVt_PVGV && !SvFAKE(gv) &&
2591 !SvOBJECT(gv) && !SvREADONLY(gv) &&
2592 isGV_with_GP(gv) && GvGP(gv) &&
2593 !GvINTRO(gv) && GvREFCNT(gv) == 1 &&
2594 !GvSV(gv) && !GvAV(gv) && !GvHV(gv) && !GvIOp(gv) && !GvFORM(gv) &&
2595 GvEGVx(gv) == gv && (stash = GvSTASH(gv))))
2597 if (SvMAGICAL(gv)) {
2599 /* only backref magic is allowed */
2600 if (SvGMAGICAL(gv) || SvSMAGICAL(gv))
2602 for (mg = SvMAGIC(gv); mg; mg = mg->mg_moremagic) {
2603 if (mg->mg_type != PERL_MAGIC_backref)
2609 HEK *gvnhek = GvNAME_HEK(gv);
2610 (void)hv_delete(stash, HEK_KEY(gvnhek),
2611 HEK_UTF8(gvnhek) ? -HEK_LEN(gvnhek) : HEK_LEN(gvnhek), G_DISCARD);
2612 } else if (GvMULTI(gv) && cv &&
2613 !SvOBJECT(cv) && !SvMAGICAL(cv) && !SvREADONLY(cv) &&
2614 CvSTASH(cv) == stash && CvGV(cv) == gv &&
2615 CvCONST(cv) && !CvMETHOD(cv) && !CvLVALUE(cv) && !CvUNIQUE(cv) &&
2616 !CvNODEBUG(cv) && !CvCLONE(cv) && !CvCLONED(cv) && !CvANON(cv) &&
2617 (namehek = GvNAME_HEK(gv)) &&
2618 (gvp = hv_fetch(stash, HEK_KEY(namehek),
2619 HEK_LEN(namehek)*(HEK_UTF8(namehek) ? -1 : 1), 0)) &&
2621 SV *value = SvREFCNT_inc(CvXSUBANY(cv).any_ptr);
2625 SvFLAGS(gv) = SVt_IV|SVf_ROK;
2626 SvANY(gv) = (XPVGV*)((char*)&(gv->sv_u.svu_iv) -
2627 STRUCT_OFFSET(XPVIV, xiv_iv));
2628 SvRV_set(gv, value);
2634 * c-indentation-style: bsd
2636 * indent-tabs-mode: t
2639 * ex: set ts=8 sts=4 sw=4 noet: