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);
124 if (PERLDB_LINE || PERLDB_SAVESRC)
125 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. */
291 /* newCONSTSUB takes ownership of the reference from us. */
292 cv = newCONSTSUB(stash, name, has_constant);
293 /* If this reference was a copy of another, then the subroutine
294 must have been "imported", by a Perl space assignment to a GV
295 from a reference to CV. */
296 if (exported_constant)
297 GvIMPORTED_CV_on(gv);
299 (void) start_subparse(0,0); /* Create empty CV in compcv. */
305 mro_method_changed_in(GvSTASH(gv)); /* sub Foo::bar($) { (shift) } sub ASDF::baz($); *ASDF::baz = \&Foo::bar */
307 CvFILE_set_from_cop(cv, PL_curcop);
308 CvSTASH(cv) = PL_curstash;
310 Perl_sv_add_backref(aTHX_ MUTABLE_SV(PL_curstash), MUTABLE_SV(cv));
312 sv_usepvn_flags(MUTABLE_SV(cv), proto, protolen,
313 SV_HAS_TRAILING_NUL);
319 S_gv_init_sv(pTHX_ GV *gv, const svtype sv_type)
321 PERL_ARGS_ASSERT_GV_INIT_SV;
333 #ifdef PERL_DONT_CREATE_GVSV
341 /* Work round what appears to be a bug in Sun C++ 5.8 2005/10/13
342 If we just cast GvSVn(gv) to void, it ignores evaluating it for
350 =for apidoc gv_fetchmeth
352 Returns the glob with the given C<name> and a defined subroutine or
353 C<NULL>. The glob lives in the given C<stash>, or in the stashes
354 accessible via @ISA and UNIVERSAL::.
356 The argument C<level> should be either 0 or -1. If C<level==0>, as a
357 side-effect creates a glob with the given C<name> in the given C<stash>
358 which in the case of success contains an alias for the subroutine, and sets
359 up caching info for this glob.
361 This function grants C<"SUPER"> token as a postfix of the stash name. The
362 GV returned from C<gv_fetchmeth> may be a method cache entry, which is not
363 visible to Perl code. So when calling C<call_sv>, you should not use
364 the GV directly; instead, you should use the method's CV, which can be
365 obtained from the GV with the C<GvCV> macro.
370 /* NOTE: No support for tied ISA */
373 Perl_gv_fetchmeth(pTHX_ HV *stash, const char *name, STRLEN len, I32 level)
381 GV* candidate = NULL;
386 I32 create = (level >= 0) ? 1 : 0;
391 PERL_ARGS_ASSERT_GV_FETCHMETH;
393 /* UNIVERSAL methods should be callable without a stash */
395 create = 0; /* probably appropriate */
396 if(!(stash = gv_stashpvs("UNIVERSAL", 0)))
402 hvname = HvNAME_get(stash);
404 Perl_croak(aTHX_ "Can't use anonymous symbol table for method lookup");
409 DEBUG_o( Perl_deb(aTHX_ "Looking for method %s in package %s\n",name,hvname) );
411 topgen_cmp = HvMROMETA(stash)->cache_gen + PL_sub_generation;
413 /* check locally for a real method or a cache entry */
414 gvp = (GV**)hv_fetch(stash, name, len, create);
418 if (SvTYPE(topgv) != SVt_PVGV)
419 gv_init(topgv, stash, name, len, TRUE);
420 if ((cand_cv = GvCV(topgv))) {
421 /* If genuine method or valid cache entry, use it */
422 if (!GvCVGEN(topgv) || GvCVGEN(topgv) == topgen_cmp) {
426 /* stale cache entry, junk it and move on */
427 SvREFCNT_dec(cand_cv);
428 GvCV(topgv) = cand_cv = NULL;
432 else if (GvCVGEN(topgv) == topgen_cmp) {
433 /* cache indicates no such method definitively */
438 packlen = HvNAMELEN_get(stash);
439 if (packlen >= 7 && strEQ(hvname + packlen - 7, "::SUPER")) {
442 basestash = gv_stashpvn(hvname, packlen, GV_ADD);
443 linear_av = mro_get_linear_isa(basestash);
446 linear_av = mro_get_linear_isa(stash); /* has ourselves at the top of the list */
449 linear_svp = AvARRAY(linear_av) + 1; /* skip over self */
450 items = AvFILLp(linear_av); /* no +1, to skip over self */
452 linear_sv = *linear_svp++;
454 cstash = gv_stashsv(linear_sv, 0);
457 Perl_ck_warner(aTHX_ packWARN(WARN_SYNTAX), "Can't locate package %"SVf" for @%s::ISA",
458 SVfARG(linear_sv), hvname);
464 gvp = (GV**)hv_fetch(cstash, name, len, 0);
468 if (SvTYPE(candidate) != SVt_PVGV) gv_init(candidate, cstash, name, len, TRUE);
469 if (SvTYPE(candidate) == SVt_PVGV && (cand_cv = GvCV(candidate)) && !GvCVGEN(candidate)) {
471 * Found real method, cache method in topgv if:
472 * 1. topgv has no synonyms (else inheritance crosses wires)
473 * 2. method isn't a stub (else AUTOLOAD fails spectacularly)
475 if (topgv && (GvREFCNT(topgv) == 1) && (CvROOT(cand_cv) || CvXSUB(cand_cv))) {
476 if ((old_cv = GvCV(topgv))) SvREFCNT_dec(old_cv);
477 SvREFCNT_inc_simple_void_NN(cand_cv);
478 GvCV(topgv) = cand_cv;
479 GvCVGEN(topgv) = topgen_cmp;
485 /* Check UNIVERSAL without caching */
486 if(level == 0 || level == -1) {
487 candidate = gv_fetchmeth(NULL, name, len, 1);
489 cand_cv = GvCV(candidate);
490 if (topgv && (GvREFCNT(topgv) == 1) && (CvROOT(cand_cv) || CvXSUB(cand_cv))) {
491 if ((old_cv = GvCV(topgv))) SvREFCNT_dec(old_cv);
492 SvREFCNT_inc_simple_void_NN(cand_cv);
493 GvCV(topgv) = cand_cv;
494 GvCVGEN(topgv) = topgen_cmp;
500 if (topgv && GvREFCNT(topgv) == 1) {
501 /* cache the fact that the method is not defined */
502 GvCVGEN(topgv) = topgen_cmp;
509 =for apidoc gv_fetchmeth_autoload
511 Same as gv_fetchmeth(), but looks for autoloaded subroutines too.
512 Returns a glob for the subroutine.
514 For an autoloaded subroutine without a GV, will create a GV even
515 if C<level < 0>. For an autoloaded subroutine without a stub, GvCV()
516 of the result may be zero.
522 Perl_gv_fetchmeth_autoload(pTHX_ HV *stash, const char *name, STRLEN len, I32 level)
524 GV *gv = gv_fetchmeth(stash, name, len, level);
526 PERL_ARGS_ASSERT_GV_FETCHMETH_AUTOLOAD;
533 return NULL; /* UNIVERSAL::AUTOLOAD could cause trouble */
534 if (len == S_autolen && memEQ(name, S_autoload, S_autolen))
536 if (!(gv = gv_fetchmeth(stash, S_autoload, S_autolen, FALSE)))
539 if (!(CvROOT(cv) || CvXSUB(cv)))
541 /* Have an autoload */
542 if (level < 0) /* Cannot do without a stub */
543 gv_fetchmeth(stash, name, len, 0);
544 gvp = (GV**)hv_fetch(stash, name, len, (level >= 0));
553 =for apidoc gv_fetchmethod_autoload
555 Returns the glob which contains the subroutine to call to invoke the method
556 on the C<stash>. In fact in the presence of autoloading this may be the
557 glob for "AUTOLOAD". In this case the corresponding variable $AUTOLOAD is
560 The third parameter of C<gv_fetchmethod_autoload> determines whether
561 AUTOLOAD lookup is performed if the given method is not present: non-zero
562 means yes, look for AUTOLOAD; zero means no, don't look for AUTOLOAD.
563 Calling C<gv_fetchmethod> is equivalent to calling C<gv_fetchmethod_autoload>
564 with a non-zero C<autoload> parameter.
566 These functions grant C<"SUPER"> token as a prefix of the method name. Note
567 that if you want to keep the returned glob for a long time, you need to
568 check for it being "AUTOLOAD", since at the later time the call may load a
569 different subroutine due to $AUTOLOAD changing its value. Use the glob
570 created via a side effect to do this.
572 These functions have the same side-effects and as C<gv_fetchmeth> with
573 C<level==0>. C<name> should be writable if contains C<':'> or C<'
574 ''>. The warning against passing the GV returned by C<gv_fetchmeth> to
575 C<call_sv> apply equally to these functions.
581 S_gv_get_super_pkg(pTHX_ const char* name, I32 namelen)
588 PERL_ARGS_ASSERT_GV_GET_SUPER_PKG;
590 stash = gv_stashpvn(name, namelen, 0);
591 if(stash) return stash;
593 /* If we must create it, give it an @ISA array containing
594 the real package this SUPER is for, so that it's tied
595 into the cache invalidation code correctly */
596 stash = gv_stashpvn(name, namelen, GV_ADD);
597 gvp = (GV**)hv_fetchs(stash, "ISA", TRUE);
599 gv_init(gv, stash, "ISA", 3, TRUE);
600 superisa = GvAVn(gv);
602 sv_magic(MUTABLE_SV(superisa), MUTABLE_SV(gv), PERL_MAGIC_isa, NULL, 0);
604 av_push(superisa, newSVpv(CopSTASHPV(PL_curcop), 0));
606 av_push(superisa, newSVhek(CopSTASH(PL_curcop)
607 ? HvNAME_HEK(CopSTASH(PL_curcop)) : NULL));
614 Perl_gv_fetchmethod_autoload(pTHX_ HV *stash, const char *name, I32 autoload)
616 PERL_ARGS_ASSERT_GV_FETCHMETHOD_AUTOLOAD;
618 return gv_fetchmethod_flags(stash, name, autoload ? GV_AUTOLOAD : 0);
621 /* Don't merge this yet, as it's likely to get a len parameter, and possibly
624 Perl_gv_fetchmethod_flags(pTHX_ HV *stash, const char *name, U32 flags)
627 register const char *nend;
628 const char *nsplit = NULL;
631 const char * const origname = name;
632 SV *const error_report = MUTABLE_SV(stash);
633 const U32 autoload = flags & GV_AUTOLOAD;
634 const U32 do_croak = flags & GV_CROAK;
636 PERL_ARGS_ASSERT_GV_FETCHMETHOD_FLAGS;
638 if (SvTYPE(stash) < SVt_PVHV)
641 /* The only way stash can become NULL later on is if nsplit is set,
642 which in turn means that there is no need for a SVt_PVHV case
643 the error reporting code. */
646 for (nend = name; *nend; nend++) {
651 else if (*nend == ':' && *(nend + 1) == ':') {
657 if ((nsplit - origname) == 5 && memEQ(origname, "SUPER", 5)) {
658 /* ->SUPER::method should really be looked up in original stash */
659 SV * const tmpstr = sv_2mortal(Perl_newSVpvf(aTHX_ "%s::SUPER",
660 CopSTASHPV(PL_curcop)));
661 /* __PACKAGE__::SUPER stash should be autovivified */
662 stash = gv_get_super_pkg(SvPVX_const(tmpstr), SvCUR(tmpstr));
663 DEBUG_o( Perl_deb(aTHX_ "Treating %s as %s::%s\n",
664 origname, HvNAME_get(stash), name) );
667 /* don't autovifify if ->NoSuchStash::method */
668 stash = gv_stashpvn(origname, nsplit - origname, 0);
670 /* however, explicit calls to Pkg::SUPER::method may
671 happen, and may require autovivification to work */
672 if (!stash && (nsplit - origname) >= 7 &&
673 strnEQ(nsplit - 7, "::SUPER", 7) &&
674 gv_stashpvn(origname, nsplit - origname - 7, 0))
675 stash = gv_get_super_pkg(origname, nsplit - origname);
680 gv = gv_fetchmeth(stash, name, nend - name, 0);
682 if (strEQ(name,"import") || strEQ(name,"unimport"))
683 gv = MUTABLE_GV(&PL_sv_yes);
685 gv = gv_autoload4(ostash, name, nend - name, TRUE);
686 if (!gv && do_croak) {
687 /* Right now this is exclusively for the benefit of S_method_common
691 "Can't locate object method \"%s\" via package \"%.*s\"",
692 name, (int)HvNAMELEN_get(stash), HvNAME_get(stash));
696 const char *packname;
699 packlen = nsplit - origname;
702 packname = SvPV_const(error_report, packlen);
706 "Can't locate object method \"%s\" via package \"%.*s\""
707 " (perhaps you forgot to load \"%.*s\"?)",
708 name, (int)packlen, packname, (int)packlen, packname);
713 CV* const cv = GvCV(gv);
714 if (!CvROOT(cv) && !CvXSUB(cv)) {
722 if (GvCV(stubgv) != cv) /* orphaned import */
725 autogv = gv_autoload4(GvSTASH(stubgv),
726 GvNAME(stubgv), GvNAMELEN(stubgv), TRUE);
736 Perl_gv_autoload4(pTHX_ HV *stash, const char *name, STRLEN len, I32 method)
744 const char *packname = "";
745 STRLEN packname_len = 0;
747 PERL_ARGS_ASSERT_GV_AUTOLOAD4;
749 if (len == S_autolen && memEQ(name, S_autoload, S_autolen))
752 if (SvTYPE(stash) < SVt_PVHV) {
753 packname = SvPV_const(MUTABLE_SV(stash), packname_len);
757 packname = HvNAME_get(stash);
758 packname_len = HvNAMELEN_get(stash);
761 if (!(gv = gv_fetchmeth(stash, S_autoload, S_autolen, FALSE)))
765 if (!(CvROOT(cv) || CvXSUB(cv)))
769 * Inheriting AUTOLOAD for non-methods works ... for now.
771 if (!method && (GvCVGEN(gv) || GvSTASH(gv) != stash)
773 Perl_ck_warner_d(aTHX_ packWARN(WARN_DEPRECATED),
774 "Use of inherited AUTOLOAD for non-method %s::%.*s() is deprecated",
775 packname, (int)len, name);
778 /* rather than lookup/init $AUTOLOAD here
779 * only to have the XSUB do another lookup for $AUTOLOAD
780 * and split that value on the last '::',
781 * pass along the same data via some unused fields in the CV
785 Perl_sv_add_backref(aTHX_ MUTABLE_SV(stash), MUTABLE_SV(cv));
786 SvPV_set(cv, (char *)name); /* cast to lose constness warning */
792 * Given &FOO::AUTOLOAD, set $FOO::AUTOLOAD to desired function name.
793 * The subroutine's original name may not be "AUTOLOAD", so we don't
794 * use that, but for lack of anything better we will use the sub's
795 * original package to look up $AUTOLOAD.
797 varstash = GvSTASH(CvGV(cv));
798 vargv = *(GV**)hv_fetch(varstash, S_autoload, S_autolen, TRUE);
802 gv_init(vargv, varstash, S_autoload, S_autolen, FALSE);
803 #ifdef PERL_DONT_CREATE_GVSV
804 GvSV(vargv) = newSV(0);
808 varsv = GvSVn(vargv);
809 sv_setpvn(varsv, packname, packname_len);
810 sv_catpvs(varsv, "::");
811 sv_catpvn(varsv, name, len);
816 /* require_tie_mod() internal routine for requiring a module
817 * that implements the logic of automatical ties like %! and %-
819 * The "gv" parameter should be the glob.
820 * "varpv" holds the name of the var, used for error messages.
821 * "namesv" holds the module name. Its refcount will be decremented.
822 * "methpv" holds the method name to test for to check that things
823 * are working reasonably close to as expected.
824 * "flags": if flag & 1 then save the scalar before loading.
825 * For the protection of $! to work (it is set by this routine)
826 * the sv slot must already be magicalized.
829 S_require_tie_mod(pTHX_ GV *gv, const char *varpv, SV* namesv, const char *methpv,const U32 flags)
832 HV* stash = gv_stashsv(namesv, 0);
834 PERL_ARGS_ASSERT_REQUIRE_TIE_MOD;
836 if (!stash || !(gv_fetchmethod(stash, methpv))) {
837 SV *module = newSVsv(namesv);
838 char varname = *varpv; /* varpv might be clobbered by load_module,
839 so save it. For the moment it's always
845 PUSHSTACKi(PERLSI_MAGIC);
846 Perl_load_module(aTHX_ PERL_LOADMOD_NOIMPORT, module, NULL);
850 stash = gv_stashsv(namesv, 0);
852 Perl_croak(aTHX_ "panic: Can't use %%%c because %"SVf" is not available",
853 varname, SVfARG(namesv));
854 else if (!gv_fetchmethod(stash, methpv))
855 Perl_croak(aTHX_ "panic: Can't use %%%c because %"SVf" does not support method %s",
856 varname, SVfARG(namesv), methpv);
858 SvREFCNT_dec(namesv);
863 =for apidoc gv_stashpv
865 Returns a pointer to the stash for a specified package. Uses C<strlen> to
866 determine the length of C<name>, then calls C<gv_stashpvn()>.
872 Perl_gv_stashpv(pTHX_ const char *name, I32 create)
874 PERL_ARGS_ASSERT_GV_STASHPV;
875 return gv_stashpvn(name, strlen(name), create);
879 =for apidoc gv_stashpvn
881 Returns a pointer to the stash for a specified package. The C<namelen>
882 parameter indicates the length of the C<name>, in bytes. C<flags> is passed
883 to C<gv_fetchpvn_flags()>, so if set to C<GV_ADD> then the package will be
884 created if it does not already exist. If the package does not exist and
885 C<flags> is 0 (or any other setting that does not create packages) then NULL
893 Perl_gv_stashpvn(pTHX_ const char *name, U32 namelen, I32 flags)
899 U32 tmplen = namelen + 2;
901 PERL_ARGS_ASSERT_GV_STASHPVN;
903 if (tmplen <= sizeof smallbuf)
906 Newx(tmpbuf, tmplen, char);
907 Copy(name, tmpbuf, namelen, char);
908 tmpbuf[namelen] = ':';
909 tmpbuf[namelen+1] = ':';
910 tmpgv = gv_fetchpvn_flags(tmpbuf, tmplen, flags, SVt_PVHV);
911 if (tmpbuf != smallbuf)
916 GvHV(tmpgv) = newHV();
918 if (!HvNAME_get(stash))
919 hv_name_set(stash, name, namelen, 0);
924 =for apidoc gv_stashsv
926 Returns a pointer to the stash for a specified package. See C<gv_stashpvn>.
932 Perl_gv_stashsv(pTHX_ SV *sv, I32 flags)
935 const char * const ptr = SvPV_const(sv,len);
937 PERL_ARGS_ASSERT_GV_STASHSV;
939 return gv_stashpvn(ptr, len, flags);
944 Perl_gv_fetchpv(pTHX_ const char *nambeg, I32 add, const svtype sv_type) {
945 PERL_ARGS_ASSERT_GV_FETCHPV;
946 return gv_fetchpvn_flags(nambeg, strlen(nambeg), add, sv_type);
950 Perl_gv_fetchsv(pTHX_ SV *name, I32 flags, const svtype sv_type) {
952 const char * const nambeg = SvPV_const(name, len);
953 PERL_ARGS_ASSERT_GV_FETCHSV;
954 return gv_fetchpvn_flags(nambeg, len, flags | SvUTF8(name), sv_type);
958 Perl_gv_fetchpvn_flags(pTHX_ const char *nambeg, STRLEN full_len, I32 flags,
959 const svtype sv_type)
962 register const char *name = nambeg;
963 register GV *gv = NULL;
966 register const char *name_cursor;
968 const I32 no_init = flags & (GV_NOADD_NOINIT | GV_NOINIT);
969 const I32 no_expand = flags & GV_NOEXPAND;
970 const I32 add = flags & ~GV_NOADD_MASK;
971 const char *const name_end = nambeg + full_len;
972 const char *const name_em1 = name_end - 1;
975 PERL_ARGS_ASSERT_GV_FETCHPVN_FLAGS;
977 if (flags & GV_NOTQUAL) {
978 /* Caller promised that there is no stash, so we can skip the check. */
983 if (full_len > 2 && *name == '*' && isALPHA(name[1])) {
984 /* accidental stringify on a GV? */
988 for (name_cursor = name; name_cursor < name_end; name_cursor++) {
989 if ((*name_cursor == ':' && name_cursor < name_em1
990 && name_cursor[1] == ':')
991 || (*name_cursor == '\'' && name_cursor[1]))
995 if (!stash || !SvREFCNT(stash)) /* symbol table under destruction */
998 len = name_cursor - name;
1003 if (len + 2 <= (I32)sizeof (smallbuf))
1006 Newx(tmpbuf, len+2, char);
1007 Copy(name, tmpbuf, len, char);
1008 tmpbuf[len++] = ':';
1009 tmpbuf[len++] = ':';
1010 gvp = (GV**)hv_fetch(stash,tmpbuf,len,add);
1011 gv = gvp ? *gvp : NULL;
1012 if (gv && gv != (const GV *)&PL_sv_undef) {
1013 if (SvTYPE(gv) != SVt_PVGV)
1014 gv_init(gv, stash, tmpbuf, len, (add & GV_ADDMULTI));
1018 if (tmpbuf != smallbuf)
1020 if (!gv || gv == (const GV *)&PL_sv_undef)
1023 if (!(stash = GvHV(gv)))
1024 stash = GvHV(gv) = newHV();
1026 if (!HvNAME_get(stash))
1027 hv_name_set(stash, nambeg, name_cursor - nambeg, 0);
1030 if (*name_cursor == ':')
1034 if (name == name_end)
1036 ? gv : MUTABLE_GV(*hv_fetchs(PL_defstash, "main::", TRUE));
1039 len = name_cursor - name;
1041 /* No stash in name, so see how we can default */
1045 if (len && isIDFIRST_lazy(name)) {
1046 bool global = FALSE;
1054 if ((name[0] == 'I' && name[1] == 'N' && name[2] == 'C')
1055 || (name[0] == 'E' && name[1] == 'N' && name[2] == 'V')
1056 || (name[0] == 'S' && name[1] == 'I' && name[2] == 'G'))
1060 if (name[0] == 'A' && name[1] == 'R' && name[2] == 'G'
1065 if (name[0] == 'S' && name[1] == 'T' && name[2] == 'D'
1066 && name[3] == 'I' && name[4] == 'N')
1070 if ((name[0] == 'S' && name[1] == 'T' && name[2] == 'D')
1071 &&((name[3] == 'O' && name[4] == 'U' && name[5] == 'T')
1072 ||(name[3] == 'E' && name[4] == 'R' && name[5] == 'R')))
1076 if (name[0] == 'A' && name[1] == 'R' && name[2] == 'G'
1077 && name[3] == 'V' && name[4] == 'O' && name[5] == 'U'
1084 stash = PL_defstash;
1085 else if (IN_PERL_COMPILETIME) {
1086 stash = PL_curstash;
1087 if (add && (PL_hints & HINT_STRICT_VARS) &&
1088 sv_type != SVt_PVCV &&
1089 sv_type != SVt_PVGV &&
1090 sv_type != SVt_PVFM &&
1091 sv_type != SVt_PVIO &&
1092 !(len == 1 && sv_type == SVt_PV &&
1093 (*name == 'a' || *name == 'b')) )
1095 gvp = (GV**)hv_fetch(stash,name,len,0);
1097 *gvp == (const GV *)&PL_sv_undef ||
1098 SvTYPE(*gvp) != SVt_PVGV)
1102 else if ((sv_type == SVt_PV && !GvIMPORTED_SV(*gvp)) ||
1103 (sv_type == SVt_PVAV && !GvIMPORTED_AV(*gvp)) ||
1104 (sv_type == SVt_PVHV && !GvIMPORTED_HV(*gvp)) )
1106 /* diag_listed_as: Variable "%s" is not imported%s */
1108 aTHX_ packWARN(WARN_MISC),
1109 "Variable \"%c%s\" is not imported",
1110 sv_type == SVt_PVAV ? '@' :
1111 sv_type == SVt_PVHV ? '%' : '$',
1115 aTHX_ packWARN(WARN_MISC),
1116 "\t(Did you mean &%s instead?)\n", name
1123 stash = CopSTASH(PL_curcop);
1126 stash = PL_defstash;
1129 /* By this point we should have a stash and a name */
1133 SV * const err = Perl_mess(aTHX_
1134 "Global symbol \"%s%s\" requires explicit package name",
1135 (sv_type == SVt_PV ? "$"
1136 : sv_type == SVt_PVAV ? "@"
1137 : sv_type == SVt_PVHV ? "%"
1140 if (USE_UTF8_IN_NAMES)
1143 gv = gv_fetchpvs("<none>::", GV_ADDMULTI, SVt_PVHV);
1145 /* symbol table under destruction */
1154 if (!SvREFCNT(stash)) /* symbol table under destruction */
1157 gvp = (GV**)hv_fetch(stash,name,len,add);
1158 if (!gvp || *gvp == (const GV *)&PL_sv_undef)
1161 if (SvTYPE(gv) == SVt_PVGV) {
1164 gv_init_sv(gv, sv_type);
1165 if (len == 1 && (sv_type == SVt_PVHV || sv_type == SVt_PVGV)) {
1167 require_tie_mod(gv, "!", newSVpvs("Errno"), "TIEHASH", 1);
1168 else if (*name == '-' || *name == '+')
1169 require_tie_mod(gv, name, newSVpvs("Tie::Hash::NamedCapture"), "TIEHASH", 0);
1173 } else if (no_init) {
1175 } else if (no_expand && SvROK(gv)) {
1179 /* Adding a new symbol.
1180 Unless of course there was already something non-GV here, in which case
1181 we want to behave as if there was always a GV here, containing some sort
1183 Otherwise we run the risk of creating things like GvIO, which can cause
1184 subtle bugs. eg the one that tripped up SQL::Translator */
1186 faking_it = SvOK(gv);
1188 if (add & GV_ADDWARN)
1189 Perl_ck_warner_d(aTHX_ packWARN(WARN_INTERNAL), "Had to create %s unexpectedly", nambeg);
1190 gv_init(gv, stash, name, len, add & GV_ADDMULTI);
1191 gv_init_sv(gv, faking_it ? SVt_PVCV : sv_type);
1193 if (isALPHA(name[0]) && ! (isLEXWARN_on ? ckWARN(WARN_ONCE)
1194 : (PL_dowarn & G_WARN_ON ) ) )
1197 /* set up magic where warranted */
1202 /* Nothing else to do.
1203 The compiler will probably turn the switch statement into a
1204 branch table. Make sure we avoid even that small overhead for
1205 the common case of lower case variable names. */
1209 const char * const name2 = name + 1;
1212 if (strEQ(name2, "RGV")) {
1213 IoFLAGS(GvIOn(gv)) |= IOf_ARGV|IOf_START;
1215 else if (strEQ(name2, "RGVOUT")) {
1220 if (strnEQ(name2, "XPORT", 5))
1224 if (strEQ(name2, "SA")) {
1225 AV* const av = GvAVn(gv);
1227 sv_magic(MUTABLE_SV(av), MUTABLE_SV(gv), PERL_MAGIC_isa,
1229 /* NOTE: No support for tied ISA */
1230 if ((add & GV_ADDMULTI) && strEQ(nambeg,"AnyDBM_File::ISA")
1231 && AvFILLp(av) == -1)
1233 av_push(av, newSVpvs("NDBM_File"));
1234 gv_stashpvs("NDBM_File", GV_ADD);
1235 av_push(av, newSVpvs("DB_File"));
1236 gv_stashpvs("DB_File", GV_ADD);
1237 av_push(av, newSVpvs("GDBM_File"));
1238 gv_stashpvs("GDBM_File", GV_ADD);
1239 av_push(av, newSVpvs("SDBM_File"));
1240 gv_stashpvs("SDBM_File", GV_ADD);
1241 av_push(av, newSVpvs("ODBM_File"));
1242 gv_stashpvs("ODBM_File", GV_ADD);
1247 if (strEQ(name2, "VERLOAD")) {
1248 HV* const hv = GvHVn(gv);
1250 hv_magic(hv, NULL, PERL_MAGIC_overload);
1254 if (strEQ(name2, "IG")) {
1257 if (!PL_psig_name) {
1258 Newxz(PL_psig_name, 2 * SIG_SIZE, SV*);
1259 Newxz(PL_psig_pend, SIG_SIZE, int);
1260 PL_psig_ptr = PL_psig_name + SIG_SIZE;
1262 /* I think that the only way to get here is to re-use an
1263 embedded perl interpreter, where the previous
1264 use didn't clean up fully because
1265 PL_perl_destruct_level was 0. I'm not sure that we
1266 "support" that, in that I suspect in that scenario
1267 there are sufficient other garbage values left in the
1268 interpreter structure that something else will crash
1269 before we get here. I suspect that this is one of
1270 those "doctor, it hurts when I do this" bugs. */
1271 Zero(PL_psig_name, 2 * SIG_SIZE, SV*);
1272 Zero(PL_psig_pend, SIG_SIZE, int);
1276 hv_magic(hv, NULL, PERL_MAGIC_sig);
1277 for (i = 1; i < SIG_SIZE; i++) {
1278 SV * const * const init = hv_fetch(hv, PL_sig_name[i], strlen(PL_sig_name[i]), 1);
1280 sv_setsv(*init, &PL_sv_undef);
1285 if (strEQ(name2, "ERSION"))
1288 case '\003': /* $^CHILD_ERROR_NATIVE */
1289 if (strEQ(name2, "HILD_ERROR_NATIVE"))
1292 case '\005': /* $^ENCODING */
1293 if (strEQ(name2, "NCODING"))
1296 case '\015': /* $^MATCH */
1297 if (strEQ(name2, "ATCH"))
1299 case '\017': /* $^OPEN */
1300 if (strEQ(name2, "PEN"))
1303 case '\020': /* $^PREMATCH $^POSTMATCH */
1304 if (strEQ(name2, "REMATCH") || strEQ(name2, "OSTMATCH"))
1306 case '\024': /* ${^TAINT} */
1307 if (strEQ(name2, "AINT"))
1310 case '\025': /* ${^UNICODE}, ${^UTF8LOCALE} */
1311 if (strEQ(name2, "NICODE"))
1313 if (strEQ(name2, "TF8LOCALE"))
1315 if (strEQ(name2, "TF8CACHE"))
1318 case '\027': /* $^WARNING_BITS */
1319 if (strEQ(name2, "ARNING_BITS"))
1332 /* Ensures that we have an all-digit variable, ${"1foo"} fails
1334 /* This snippet is taken from is_gv_magical */
1335 const char *end = name + len;
1336 while (--end > name) {
1337 if (!isDIGIT(*end)) return gv;
1344 /* Names of length 1. (Or 0. But name is NUL terminated, so that will
1345 be case '\0' in this switch statement (ie a default case) */
1351 sv_type == SVt_PVAV ||
1352 sv_type == SVt_PVHV ||
1353 sv_type == SVt_PVCV ||
1354 sv_type == SVt_PVFM ||
1357 PL_sawampersand = TRUE;
1361 sv_setpv(GvSVn(gv),PL_chopset);
1365 #ifdef COMPLEX_STATUS
1366 SvUPGRADE(GvSVn(gv), SVt_PVLV);
1372 /* If %! has been used, automatically load Errno.pm. */
1374 sv_magic(GvSVn(gv), MUTABLE_SV(gv), PERL_MAGIC_sv, name, len);
1376 /* magicalization must be done before require_tie_mod is called */
1377 if (sv_type == SVt_PVHV || sv_type == SVt_PVGV)
1378 require_tie_mod(gv, "!", newSVpvs("Errno"), "TIEHASH", 1);
1383 GvMULTI_on(gv); /* no used once warnings here */
1385 AV* const av = GvAVn(gv);
1386 SV* const avc = (*name == '+') ? MUTABLE_SV(av) : NULL;
1388 sv_magic(MUTABLE_SV(av), avc, PERL_MAGIC_regdata, NULL, 0);
1389 sv_magic(GvSVn(gv), MUTABLE_SV(gv), PERL_MAGIC_sv, name, len);
1391 SvREADONLY_on(GvSVn(gv));
1394 if (sv_type == SVt_PVHV || sv_type == SVt_PVGV)
1395 require_tie_mod(gv, name, newSVpvs("Tie::Hash::NamedCapture"), "TIEHASH", 0);
1401 if (sv_type == SVt_PV)
1402 Perl_ck_warner_d(aTHX_ packWARN2(WARN_DEPRECATED, WARN_SYNTAX),
1403 "$%c is no longer supported", *name);
1406 sv_setiv(GvSVn(gv), (IV)(IoFLAGS(GvIOp(PL_defoutgv)) & IOf_FLUSH) != 0);
1409 case '\010': /* $^H */
1411 HV *const hv = GvHVn(gv);
1412 hv_magic(hv, NULL, PERL_MAGIC_hints);
1415 case '\023': /* $^S */
1417 SvREADONLY_on(GvSVn(gv));
1441 case '\001': /* $^A */
1442 case '\003': /* $^C */
1443 case '\004': /* $^D */
1444 case '\005': /* $^E */
1445 case '\006': /* $^F */
1446 case '\011': /* $^I, NOT \t in EBCDIC */
1447 case '\016': /* $^N */
1448 case '\017': /* $^O */
1449 case '\020': /* $^P */
1450 case '\024': /* $^T */
1451 case '\027': /* $^W */
1453 sv_magic(GvSVn(gv), MUTABLE_SV(gv), PERL_MAGIC_sv, name, len);
1456 case '\014': /* $^L */
1457 sv_setpvs(GvSVn(gv),"\f");
1458 PL_formfeed = GvSVn(gv);
1461 sv_setpvs(GvSVn(gv),"\034");
1465 SV * const sv = GvSVn(gv);
1466 if (!sv_derived_from(PL_patchlevel, "version"))
1467 upg_version(PL_patchlevel, TRUE);
1468 GvSV(gv) = vnumify(PL_patchlevel);
1469 SvREADONLY_on(GvSV(gv));
1473 case '\026': /* $^V */
1475 SV * const sv = GvSVn(gv);
1476 GvSV(gv) = new_version(PL_patchlevel);
1477 SvREADONLY_on(GvSV(gv));
1487 Perl_gv_fullname4(pTHX_ SV *sv, const GV *gv, const char *prefix, bool keepmain)
1491 const HV * const hv = GvSTASH(gv);
1493 PERL_ARGS_ASSERT_GV_FULLNAME4;
1499 sv_setpv(sv, prefix ? prefix : "");
1501 name = HvNAME_get(hv);
1503 namelen = HvNAMELEN_get(hv);
1509 if (keepmain || strNE(name, "main")) {
1510 sv_catpvn(sv,name,namelen);
1513 sv_catpvn(sv,GvNAME(gv),GvNAMELEN(gv));
1517 Perl_gv_efullname4(pTHX_ SV *sv, const GV *gv, const char *prefix, bool keepmain)
1519 const GV * const egv = GvEGVx(gv);
1521 PERL_ARGS_ASSERT_GV_EFULLNAME4;
1523 gv_fullname4(sv, egv ? egv : gv, prefix, keepmain);
1527 Perl_gv_check(pTHX_ const HV *stash)
1532 PERL_ARGS_ASSERT_GV_CHECK;
1534 if (!HvARRAY(stash))
1536 for (i = 0; i <= (I32) HvMAX(stash); i++) {
1538 for (entry = HvARRAY(stash)[i]; entry; entry = HeNEXT(entry)) {
1541 if (HeKEY(entry)[HeKLEN(entry)-1] == ':' &&
1542 (gv = MUTABLE_GV(HeVAL(entry))) && isGV(gv) && (hv = GvHV(gv)))
1544 if (hv != PL_defstash && hv != stash)
1545 gv_check(hv); /* nested package */
1547 else if (isALPHA(*HeKEY(entry))) {
1549 gv = MUTABLE_GV(HeVAL(entry));
1550 if (SvTYPE(gv) != SVt_PVGV || GvMULTI(gv))
1553 CopLINE_set(PL_curcop, GvLINE(gv));
1555 CopFILE(PL_curcop) = (char *)file; /* set for warning */
1557 CopFILEGV(PL_curcop)
1558 = gv_fetchfile_flags(file, HEK_LEN(GvFILE_HEK(gv)), 0);
1560 Perl_warner(aTHX_ packWARN(WARN_ONCE),
1561 "Name \"%s::%s\" used only once: possible typo",
1562 HvNAME_get(stash), GvNAME(gv));
1569 Perl_newGVgen(pTHX_ const char *pack)
1573 PERL_ARGS_ASSERT_NEWGVGEN;
1575 return gv_fetchpv(Perl_form(aTHX_ "%s::_GEN_%ld", pack, (long)PL_gensym++),
1579 /* hopefully this is only called on local symbol table entries */
1582 Perl_gp_ref(pTHX_ GP *gp)
1590 /* If the GP they asked for a reference to contains
1591 a method cache entry, clear it first, so that we
1592 don't infect them with our cached entry */
1593 SvREFCNT_dec(gp->gp_cv);
1602 Perl_gp_free(pTHX_ GV *gv)
1607 if (!gv || !isGV_with_GP(gv) || !(gp = GvGP(gv)))
1609 if (gp->gp_refcnt == 0) {
1610 Perl_ck_warner_d(aTHX_ packWARN(WARN_INTERNAL),
1611 "Attempt to free unreferenced glob pointers"
1612 pTHX__FORMAT pTHX__VALUE);
1615 if (--gp->gp_refcnt > 0) {
1616 if (gp->gp_egv == gv)
1622 if (gp->gp_file_hek)
1623 unshare_hek(gp->gp_file_hek);
1624 SvREFCNT_dec(gp->gp_sv);
1625 SvREFCNT_dec(gp->gp_av);
1626 /* FIXME - another reference loop GV -> symtab -> GV ?
1627 Somehow gp->gp_hv can end up pointing at freed garbage. */
1628 if (gp->gp_hv && SvTYPE(gp->gp_hv) == SVt_PVHV) {
1629 const char *hvname = HvNAME_get(gp->gp_hv);
1630 if (PL_stashcache && hvname)
1631 (void)hv_delete(PL_stashcache, hvname, HvNAMELEN_get(gp->gp_hv),
1633 SvREFCNT_dec(gp->gp_hv);
1635 SvREFCNT_dec(gp->gp_io);
1636 SvREFCNT_dec(gp->gp_cv);
1637 SvREFCNT_dec(gp->gp_form);
1644 Perl_magic_freeovrld(pTHX_ SV *sv, MAGIC *mg)
1646 AMT * const amtp = (AMT*)mg->mg_ptr;
1647 PERL_UNUSED_ARG(sv);
1649 PERL_ARGS_ASSERT_MAGIC_FREEOVRLD;
1651 if (amtp && AMT_AMAGIC(amtp)) {
1653 for (i = 1; i < NofAMmeth; i++) {
1654 CV * const cv = amtp->table[i];
1656 SvREFCNT_dec(MUTABLE_SV(cv));
1657 amtp->table[i] = NULL;
1664 /* Updates and caches the CV's */
1666 * 1 on success and there is some overload
1667 * 0 if there is no overload
1668 * -1 if some error occurred and it couldn't croak
1672 Perl_Gv_AMupdate(pTHX_ HV *stash, bool destructing)
1675 MAGIC* const mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table);
1677 const struct mro_meta* stash_meta = HvMROMETA(stash);
1680 PERL_ARGS_ASSERT_GV_AMUPDATE;
1682 newgen = PL_sub_generation + stash_meta->pkg_gen + stash_meta->cache_gen;
1684 const AMT * const amtp = (AMT*)mg->mg_ptr;
1685 if (amtp->was_ok_am == PL_amagic_generation
1686 && amtp->was_ok_sub == newgen) {
1687 return AMT_OVERLOADED(amtp) ? 1 : 0;
1689 sv_unmagic(MUTABLE_SV(stash), PERL_MAGIC_overload_table);
1692 DEBUG_o( Perl_deb(aTHX_ "Recalcing overload magic in package %s\n",HvNAME_get(stash)) );
1695 amt.was_ok_am = PL_amagic_generation;
1696 amt.was_ok_sub = newgen;
1697 amt.fallback = AMGfallNO;
1701 int filled = 0, have_ovl = 0;
1704 /* Work with "fallback" key, which we assume to be first in PL_AMG_names */
1706 /* Try to find via inheritance. */
1707 GV *gv = gv_fetchmeth(stash, PL_AMG_names[0], 2, -1);
1708 SV * const sv = gv ? GvSV(gv) : NULL;
1712 lim = DESTROY_amg; /* Skip overloading entries. */
1713 #ifdef PERL_DONT_CREATE_GVSV
1715 NOOP; /* Equivalent to !SvTRUE and !SvOK */
1718 else if (SvTRUE(sv))
1719 amt.fallback=AMGfallYES;
1721 amt.fallback=AMGfallNEVER;
1723 for (i = 1; i < lim; i++)
1724 amt.table[i] = NULL;
1725 for (; i < NofAMmeth; i++) {
1726 const char * const cooky = PL_AMG_names[i];
1727 /* Human-readable form, for debugging: */
1728 const char * const cp = (i >= DESTROY_amg ? cooky : AMG_id2name(i));
1729 const STRLEN l = PL_AMG_namelens[i];
1731 DEBUG_o( Perl_deb(aTHX_ "Checking overloading of \"%s\" in package \"%.256s\"\n",
1732 cp, HvNAME_get(stash)) );
1733 /* don't fill the cache while looking up!
1734 Creation of inheritance stubs in intermediate packages may
1735 conflict with the logic of runtime method substitution.
1736 Indeed, for inheritance A -> B -> C, if C overloads "+0",
1737 then we could have created stubs for "(+0" in A and C too.
1738 But if B overloads "bool", we may want to use it for
1739 numifying instead of C's "+0". */
1740 if (i >= DESTROY_amg)
1741 gv = Perl_gv_fetchmeth_autoload(aTHX_ stash, cooky, l, 0);
1742 else /* Autoload taken care of below */
1743 gv = Perl_gv_fetchmeth(aTHX_ stash, cooky, l, -1);
1745 if (gv && (cv = GvCV(gv))) {
1747 if (GvNAMELEN(CvGV(cv)) == 3 && strEQ(GvNAME(CvGV(cv)), "nil")
1748 && strEQ(hvname = HvNAME_get(GvSTASH(CvGV(cv))), "overload")) {
1749 /* This is a hack to support autoloading..., while
1750 knowing *which* methods were declared as overloaded. */
1751 /* GvSV contains the name of the method. */
1753 SV *gvsv = GvSV(gv);
1755 DEBUG_o( Perl_deb(aTHX_ "Resolving method \"%"SVf256\
1756 "\" for overloaded \"%s\" in package \"%.256s\"\n",
1757 (void*)GvSV(gv), cp, hvname) );
1758 if (!gvsv || !SvPOK(gvsv)
1759 || !(ngv = gv_fetchmethod_autoload(stash, SvPVX_const(gvsv),
1762 /* Can be an import stub (created by "can"). */
1767 const char * const name = (gvsv && SvPOK(gvsv)) ? SvPVX_const(gvsv) : "???";
1768 Perl_croak(aTHX_ "%s method \"%.256s\" overloading \"%s\" "\
1769 "in package \"%.256s\"",
1770 (GvCVGEN(gv) ? "Stub found while resolving"
1775 cv = GvCV(gv = ngv);
1777 DEBUG_o( Perl_deb(aTHX_ "Overloading \"%s\" in package \"%.256s\" via \"%.256s::%.256s\"\n",
1778 cp, HvNAME_get(stash), HvNAME_get(GvSTASH(CvGV(cv))),
1779 GvNAME(CvGV(cv))) );
1781 if (i < DESTROY_amg)
1783 } else if (gv) { /* Autoloaded... */
1784 cv = MUTABLE_CV(gv);
1787 amt.table[i]=MUTABLE_CV(SvREFCNT_inc_simple(cv));
1790 AMT_AMAGIC_on(&amt);
1792 AMT_OVERLOADED_on(&amt);
1793 sv_magic(MUTABLE_SV(stash), 0, PERL_MAGIC_overload_table,
1794 (char*)&amt, sizeof(AMT));
1798 /* Here we have no table: */
1800 AMT_AMAGIC_off(&amt);
1801 sv_magic(MUTABLE_SV(stash), 0, PERL_MAGIC_overload_table,
1802 (char*)&amt, sizeof(AMTS));
1808 Perl_gv_handler(pTHX_ HV *stash, I32 id)
1814 struct mro_meta* stash_meta;
1816 if (!stash || !HvNAME_get(stash))
1819 stash_meta = HvMROMETA(stash);
1820 newgen = PL_sub_generation + stash_meta->pkg_gen + stash_meta->cache_gen;
1822 mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table);
1825 /* If we're looking up a destructor to invoke, we must avoid
1826 * that Gv_AMupdate croaks, because we might be dying already */
1827 if (Gv_AMupdate(stash, id == DESTROY_amg) == -1) {
1828 /* and if it didn't found a destructor, we fall back
1829 * to a simpler method that will only look for the
1830 * destructor instead of the whole magic */
1831 if (id == DESTROY_amg) {
1832 GV * const gv = gv_fetchmethod(stash, "DESTROY");
1838 mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table);
1841 amtp = (AMT*)mg->mg_ptr;
1842 if ( amtp->was_ok_am != PL_amagic_generation
1843 || amtp->was_ok_sub != newgen )
1845 if (AMT_AMAGIC(amtp)) {
1846 CV * const ret = amtp->table[id];
1847 if (ret && isGV(ret)) { /* Autoloading stab */
1848 /* Passing it through may have resulted in a warning
1849 "Inherited AUTOLOAD for a non-method deprecated", since
1850 our caller is going through a function call, not a method call.
1851 So return the CV for AUTOLOAD, setting $AUTOLOAD. */
1852 GV * const gv = gv_fetchmethod(stash, PL_AMG_names[id]);
1864 /* Implement tryAMAGICun_MG macro.
1865 Do get magic, then see if the stack arg is overloaded and if so call it.
1867 AMGf_set return the arg using SETs rather than assigning to
1869 AMGf_numeric apply sv_2num to the stack arg.
1873 Perl_try_amagic_un(pTHX_ int method, int flags) {
1877 SV* const arg = TOPs;
1881 if (SvAMAGIC(arg) && (tmpsv = AMG_CALLun_var(arg,method))) {
1882 if (flags & AMGf_set) {
1887 if (SvPADMY(TARG)) {
1888 sv_setsv(TARG, tmpsv);
1898 if ((flags & AMGf_numeric) && SvROK(arg))
1904 /* Implement tryAMAGICbin_MG macro.
1905 Do get magic, then see if the two stack args are overloaded and if so
1908 AMGf_set return the arg using SETs rather than assigning to
1910 AMGf_assign op may be called as mutator (eg +=)
1911 AMGf_numeric apply sv_2num to the stack arg.
1915 Perl_try_amagic_bin(pTHX_ int method, int flags) {
1918 SV* const left = TOPm1s;
1919 SV* const right = TOPs;
1925 if (SvAMAGIC(left) || SvAMAGIC(right)) {
1926 SV * const tmpsv = amagic_call(left, right, method,
1927 ((flags & AMGf_assign) && opASSIGN ? AMGf_assign: 0));
1929 if (flags & AMGf_set) {
1936 if (opASSIGN || SvPADMY(TARG)) {
1937 sv_setsv(TARG, tmpsv);
1947 if (flags & AMGf_numeric) {
1949 *(sp-1) = sv_2num(left);
1951 *sp = sv_2num(right);
1958 Perl_amagic_call(pTHX_ SV *left, SV *right, int method, int flags)
1963 CV **cvp=NULL, **ocvp=NULL;
1964 AMT *amtp=NULL, *oamtp=NULL;
1965 int off = 0, off1, lr = 0, notfound = 0;
1966 int postpr = 0, force_cpy = 0;
1967 int assign = AMGf_assign & flags;
1968 const int assignshift = assign ? 1 : 0;
1974 PERL_ARGS_ASSERT_AMAGIC_CALL;
1976 if ( PL_curcop->cop_hints & HINT_NO_AMAGIC ) {
1977 SV *lex_mask = Perl_refcounted_he_fetch(aTHX_ PL_curcop->cop_hints_hash,
1978 0, "overloading", 11, 0, 0);
1980 if ( !lex_mask || !SvOK(lex_mask) )
1981 /* overloading lexically disabled */
1983 else if ( lex_mask && SvPOK(lex_mask) ) {
1984 /* we have an entry in the hints hash, check if method has been
1985 * masked by overloading.pm */
1987 const int offset = method / 8;
1988 const int bit = method % 8;
1989 char *pv = SvPV(lex_mask, len);
1991 /* Bit set, so this overloading operator is disabled */
1992 if ( (STRLEN)offset < len && pv[offset] & ( 1 << bit ) )
1997 if (!(AMGf_noleft & flags) && SvAMAGIC(left)
1998 && (stash = SvSTASH(SvRV(left)))
1999 && (mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table))
2000 && (ocvp = cvp = (AMT_AMAGIC((AMT*)mg->mg_ptr)
2001 ? (oamtp = amtp = (AMT*)mg->mg_ptr)->table
2003 && ((cv = cvp[off=method+assignshift])
2004 || (assign && amtp->fallback > AMGfallNEVER && /* fallback to
2010 cv = cvp[off=method])))) {
2011 lr = -1; /* Call method for left argument */
2013 if (cvp && amtp->fallback > AMGfallNEVER && flags & AMGf_unary) {
2016 /* look for substituted methods */
2017 /* In all the covered cases we should be called with assign==0. */
2021 if ((cv = cvp[off=add_ass_amg])
2022 || ((cv = cvp[off = add_amg]) && (force_cpy = 0, postpr = 1))) {
2023 right = &PL_sv_yes; lr = -1; assign = 1;
2028 if ((cv = cvp[off = subtr_ass_amg])
2029 || ((cv = cvp[off = subtr_amg]) && (force_cpy = 0, postpr=1))) {
2030 right = &PL_sv_yes; lr = -1; assign = 1;
2034 (void)((cv = cvp[off=numer_amg]) || (cv = cvp[off=string_amg]));
2037 (void)((cv = cvp[off=string_amg]) || (cv = cvp[off=bool__amg]));
2040 (void)((cv = cvp[off=numer_amg]) || (cv = cvp[off=bool__amg]));
2043 (void)((cv = cvp[off=bool__amg])
2044 || (cv = cvp[off=numer_amg])
2045 || (cv = cvp[off=string_amg]));
2052 * SV* ref causes confusion with the interpreter variable of
2055 SV* const tmpRef=SvRV(left);
2056 if (!SvROK(tmpRef) && SvTYPE(tmpRef) <= SVt_PVMG) {
2058 * Just to be extra cautious. Maybe in some
2059 * additional cases sv_setsv is safe, too.
2061 SV* const newref = newSVsv(tmpRef);
2062 SvOBJECT_on(newref);
2063 /* As a bit of a source compatibility hack, SvAMAGIC() and
2064 friends dereference an RV, to behave the same was as when
2065 overloading was stored on the reference, not the referant.
2066 Hence we can't use SvAMAGIC_on()
2068 SvFLAGS(newref) |= SVf_AMAGIC;
2069 SvSTASH_set(newref, MUTABLE_HV(SvREFCNT_inc(SvSTASH(tmpRef))));
2075 if ((cvp[off1=lt_amg] || cvp[off1=ncmp_amg])
2076 && ((cv = cvp[off=neg_amg]) || (cv = cvp[off=subtr_amg]))) {
2077 SV* const nullsv=sv_2mortal(newSViv(0));
2079 SV* const lessp = amagic_call(left,nullsv,
2080 lt_amg,AMGf_noright);
2081 logic = SvTRUE(lessp);
2083 SV* const lessp = amagic_call(left,nullsv,
2084 ncmp_amg,AMGf_noright);
2085 logic = (SvNV(lessp) < 0);
2088 if (off==subtr_amg) {
2099 if ((cv = cvp[off=subtr_amg])) {
2101 left = sv_2mortal(newSViv(0));
2106 case iter_amg: /* XXXX Eventually should do to_gv. */
2107 case ftest_amg: /* XXXX Eventually should do to_gv. */
2110 return NULL; /* Delegate operation to standard mechanisms. */
2118 return left; /* Delegate operation to standard mechanisms. */
2123 if (!cv) goto not_found;
2124 } else if (!(AMGf_noright & flags) && SvAMAGIC(right)
2125 && (stash = SvSTASH(SvRV(right)))
2126 && (mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table))
2127 && (cvp = (AMT_AMAGIC((AMT*)mg->mg_ptr)
2128 ? (amtp = (AMT*)mg->mg_ptr)->table
2130 && (cv = cvp[off=method])) { /* Method for right
2133 } else if (((ocvp && oamtp->fallback > AMGfallNEVER
2134 && (cvp=ocvp) && (lr = -1))
2135 || (cvp && amtp->fallback > AMGfallNEVER && (lr=1)))
2136 && !(flags & AMGf_unary)) {
2137 /* We look for substitution for
2138 * comparison operations and
2140 if (method==concat_amg || method==concat_ass_amg
2141 || method==repeat_amg || method==repeat_ass_amg) {
2142 return NULL; /* Delegate operation to string conversion */
2163 if ((off != -1) && (cv = cvp[off]))
2168 not_found: /* No method found, either report or croak */
2176 return left; /* Delegate operation to standard mechanisms. */
2179 if (ocvp && (cv=ocvp[nomethod_amg])) { /* Call report method */
2180 notfound = 1; lr = -1;
2181 } else if (cvp && (cv=cvp[nomethod_amg])) {
2182 notfound = 1; lr = 1;
2183 } else if ((amtp && amtp->fallback >= AMGfallYES) && !DEBUG_o_TEST) {
2184 /* Skip generating the "no method found" message. */
2188 if (off==-1) off=method;
2189 msg = sv_2mortal(Perl_newSVpvf(aTHX_
2190 "Operation \"%s\": no method found,%sargument %s%s%s%s",
2191 AMG_id2name(method + assignshift),
2192 (flags & AMGf_unary ? " " : "\n\tleft "),
2194 "in overloaded package ":
2195 "has no overloaded magic",
2197 HvNAME_get(SvSTASH(SvRV(left))):
2200 ",\n\tright argument in overloaded package ":
2203 : ",\n\tright argument has no overloaded magic"),
2205 HvNAME_get(SvSTASH(SvRV(right))):
2207 if (amtp && amtp->fallback >= AMGfallYES) {
2208 DEBUG_o( Perl_deb(aTHX_ "%s", SvPVX_const(msg)) );
2210 Perl_croak(aTHX_ "%"SVf, SVfARG(msg));
2214 force_cpy = force_cpy || assign;
2219 DEBUG_o(Perl_deb(aTHX_
2220 "Overloaded operator \"%s\"%s%s%s:\n\tmethod%s found%s in package %s%s\n",
2222 method+assignshift==off? "" :
2224 method+assignshift==off? "" :
2225 AMG_id2name(method+assignshift),
2226 method+assignshift==off? "" : "\")",
2227 flags & AMGf_unary? "" :
2228 lr==1 ? " for right argument": " for left argument",
2229 flags & AMGf_unary? " for argument" : "",
2230 stash ? HvNAME_get(stash) : "null",
2231 fl? ",\n\tassignment variant used": "") );
2234 /* Since we use shallow copy during assignment, we need
2235 * to dublicate the contents, probably calling user-supplied
2236 * version of copy operator
2238 /* We need to copy in following cases:
2239 * a) Assignment form was called.
2240 * assignshift==1, assign==T, method + 1 == off
2241 * b) Increment or decrement, called directly.
2242 * assignshift==0, assign==0, method + 0 == off
2243 * c) Increment or decrement, translated to assignment add/subtr.
2244 * assignshift==0, assign==T,
2246 * d) Increment or decrement, translated to nomethod.
2247 * assignshift==0, assign==0,
2249 * e) Assignment form translated to nomethod.
2250 * assignshift==1, assign==T, method + 1 != off
2253 /* off is method, method+assignshift, or a result of opcode substitution.
2254 * In the latter case assignshift==0, so only notfound case is important.
2256 if (( (method + assignshift == off)
2257 && (assign || (method == inc_amg) || (method == dec_amg)))
2267 const bool oldcatch = CATCH_GET;
2270 Zero(&myop, 1, BINOP);
2271 myop.op_last = (OP *) &myop;
2272 myop.op_next = NULL;
2273 myop.op_flags = OPf_WANT_SCALAR | OPf_STACKED;
2275 PUSHSTACKi(PERLSI_OVERLOAD);
2278 PL_op = (OP *) &myop;
2279 if (PERLDB_SUB && PL_curstash != PL_debstash)
2280 PL_op->op_private |= OPpENTERSUB_DB;
2284 EXTEND(SP, notfound + 5);
2285 PUSHs(lr>0? right: left);
2286 PUSHs(lr>0? left: right);
2287 PUSHs( lr > 0 ? &PL_sv_yes : ( assign ? &PL_sv_undef : &PL_sv_no ));
2289 PUSHs(newSVpvn_flags(AMG_id2name(method + assignshift),
2290 AMG_id2namelen(method + assignshift), SVs_TEMP));
2292 PUSHs(MUTABLE_SV(cv));
2295 if ((PL_op = PL_ppaddr[OP_ENTERSUB](aTHX)))
2303 CATCH_SET(oldcatch);
2310 ans=SvIV(res)<=0; break;
2313 ans=SvIV(res)<0; break;
2316 ans=SvIV(res)>=0; break;
2319 ans=SvIV(res)>0; break;
2322 ans=SvIV(res)==0; break;
2325 ans=SvIV(res)!=0; break;
2328 SvSetSV(left,res); return left;
2330 ans=!SvTRUE(res); break;
2335 } else if (method==copy_amg) {
2337 Perl_croak(aTHX_ "Copy method did not return a reference");
2339 return SvREFCNT_inc(SvRV(res));
2347 =for apidoc is_gv_magical_sv
2349 Returns C<TRUE> if given the name of a magical GV.
2351 Currently only useful internally when determining if a GV should be
2352 created even in rvalue contexts.
2354 C<flags> is not used at present but available for future extension to
2355 allow selecting particular classes of magical variable.
2357 Currently assumes that C<name> is NUL terminated (as well as len being valid).
2358 This assumption is met by all callers within the perl core, which all pass
2359 pointers returned by SvPV.
2365 Perl_is_gv_magical_sv(pTHX_ SV *const name_sv, U32 flags)
2368 const char *const name = SvPV_const(name_sv, len);
2370 PERL_UNUSED_ARG(flags);
2371 PERL_ARGS_ASSERT_IS_GV_MAGICAL_SV;
2374 const char * const name1 = name + 1;
2377 if (len == 3 && name[1] == 'S' && name[2] == 'A')
2381 if (len == 8 && strEQ(name1, "VERLOAD"))
2385 if (len == 3 && name[1] == 'I' && name[2] == 'G')
2388 /* Using ${^...} variables is likely to be sufficiently rare that
2389 it seems sensible to avoid the space hit of also checking the
2391 case '\017': /* ${^OPEN} */
2392 if (strEQ(name1, "PEN"))
2395 case '\024': /* ${^TAINT} */
2396 if (strEQ(name1, "AINT"))
2399 case '\025': /* ${^UNICODE} */
2400 if (strEQ(name1, "NICODE"))
2402 if (strEQ(name1, "TF8LOCALE"))
2405 case '\027': /* ${^WARNING_BITS} */
2406 if (strEQ(name1, "ARNING_BITS"))
2419 const char *end = name + len;
2420 while (--end > name) {
2428 /* Because we're already assuming that name is NUL terminated
2429 below, we can treat an empty name as "\0" */
2455 case '\001': /* $^A */
2456 case '\003': /* $^C */
2457 case '\004': /* $^D */
2458 case '\005': /* $^E */
2459 case '\006': /* $^F */
2460 case '\010': /* $^H */
2461 case '\011': /* $^I, NOT \t in EBCDIC */
2462 case '\014': /* $^L */
2463 case '\016': /* $^N */
2464 case '\017': /* $^O */
2465 case '\020': /* $^P */
2466 case '\023': /* $^S */
2467 case '\024': /* $^T */
2468 case '\026': /* $^V */
2469 case '\027': /* $^W */
2489 Perl_gv_name_set(pTHX_ GV *gv, const char *name, U32 len, U32 flags)
2494 PERL_ARGS_ASSERT_GV_NAME_SET;
2495 PERL_UNUSED_ARG(flags);
2498 Perl_croak(aTHX_ "panic: gv name too long (%"UVuf")", (UV) len);
2500 if (!(flags & GV_ADD) && GvNAME_HEK(gv)) {
2501 unshare_hek(GvNAME_HEK(gv));
2504 PERL_HASH(hash, name, len);
2505 GvNAME_HEK(gv) = share_hek(name, len, hash);
2509 =for apidoc gv_try_downgrade
2511 If the typeglob C<gv> can be expressed more succinctly, by having
2512 something other than a real GV in its place in the stash, replace it
2513 with the optimised form. Basic requirements for this are that C<gv>
2514 is a real typeglob, is sufficiently ordinary, and is only referenced
2515 from its package. This function is meant to be used when a GV has been
2516 looked up in part to see what was there, causing upgrading, but based
2517 on what was found it turns out that the real GV isn't required after all.
2519 If C<gv> is a completely empty typeglob, it is deleted from the stash.
2521 If C<gv> is a typeglob containing only a sufficiently-ordinary constant
2522 sub, the typeglob is replaced with a scalar-reference placeholder that
2523 more compactly represents the same thing.
2529 Perl_gv_try_downgrade(pTHX_ GV *gv)
2535 PERL_ARGS_ASSERT_GV_TRY_DOWNGRADE;
2536 if (!(SvREFCNT(gv) == 1 && SvTYPE(gv) == SVt_PVGV && !SvFAKE(gv) &&
2537 !SvOBJECT(gv) && !SvREADONLY(gv) &&
2538 isGV_with_GP(gv) && GvGP(gv) &&
2539 !GvINTRO(gv) && GvREFCNT(gv) == 1 &&
2540 !GvSV(gv) && !GvAV(gv) && !GvHV(gv) && !GvIOp(gv) && !GvFORM(gv) &&
2541 GvEGVx(gv) == gv && (stash = GvSTASH(gv))))
2543 if (SvMAGICAL(gv)) {
2545 /* only backref magic is allowed */
2546 if (SvGMAGICAL(gv) || SvSMAGICAL(gv))
2548 for (mg = SvMAGIC(gv); mg; mg = mg->mg_moremagic) {
2549 if (mg->mg_type != PERL_MAGIC_backref)
2555 HEK *gvnhek = GvNAME_HEK(gv);
2556 (void)hv_delete(stash, HEK_KEY(gvnhek),
2557 HEK_UTF8(gvnhek) ? -HEK_LEN(gvnhek) : HEK_LEN(gvnhek), G_DISCARD);
2558 } else if (GvMULTI(gv) && cv &&
2559 !SvOBJECT(cv) && !SvMAGICAL(cv) && !SvREADONLY(cv) &&
2560 CvSTASH(cv) == stash && CvGV(cv) == gv &&
2561 CvCONST(cv) && !CvMETHOD(cv) && !CvLVALUE(cv) && !CvUNIQUE(cv) &&
2562 !CvNODEBUG(cv) && !CvCLONE(cv) && !CvCLONED(cv) && !CvANON(cv) &&
2563 (namehek = GvNAME_HEK(gv)) &&
2564 (gvp = hv_fetch(stash, HEK_KEY(namehek),
2565 HEK_LEN(namehek)*(HEK_UTF8(namehek) ? -1 : 1), 0)) &&
2567 SV *value = SvREFCNT_inc(CvXSUBANY(cv).any_ptr);
2571 SvFLAGS(gv) = SVt_IV|SVf_ROK;
2572 SvANY(gv) = (XPVGV*)((char*)&(gv->sv_u.svu_iv) -
2573 STRUCT_OFFSET(XPVIV, xiv_iv));
2574 SvRV_set(gv, value);
2580 * c-indentation-style: bsd
2582 * indent-tabs-mode: t
2585 * ex: set ts=8 sts=4 sw=4 noet: