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 PERL_ARGS_ASSERT_GV_ADD_BY_TYPE;
50 if (!gv || SvTYPE((const SV *)gv) != SVt_PVGV)
51 Perl_croak(aTHX_ "Bad symbol for %s", type == SVt_PVAV ? "array" : type == SVt_PVHV ? "hash" : "scalar");
53 if (type == SVt_PVHV) {
54 where = (SV **)&GvHV(gv);
55 } else if (type == SVt_PVAV) {
56 where = (SV **)&GvAV(gv);
62 *where = newSV_type(type);
67 Perl_gv_IOadd(pTHX_ register GV *gv)
71 if (!gv || SvTYPE((const SV *)gv) != SVt_PVGV) {
74 * if it walks like a dirhandle, then let's assume that
75 * this is a dirhandle.
77 const char * const fh =
78 PL_op->op_type == OP_READDIR ||
79 PL_op->op_type == OP_TELLDIR ||
80 PL_op->op_type == OP_SEEKDIR ||
81 PL_op->op_type == OP_REWINDDIR ||
82 PL_op->op_type == OP_CLOSEDIR ?
83 "dirhandle" : "filehandle";
84 /* diag_listed_as: Bad symbol for filehandle */
85 Perl_croak(aTHX_ "Bad symbol for %s", fh);
95 Perl_gv_fetchfile(pTHX_ const char *name)
97 PERL_ARGS_ASSERT_GV_FETCHFILE;
98 return gv_fetchfile_flags(name, strlen(name), 0);
102 Perl_gv_fetchfile_flags(pTHX_ const char *const name, const STRLEN namelen,
108 const STRLEN tmplen = namelen + 2;
111 PERL_ARGS_ASSERT_GV_FETCHFILE_FLAGS;
112 PERL_UNUSED_ARG(flags);
117 if (tmplen <= sizeof smallbuf)
120 Newx(tmpbuf, tmplen, char);
121 /* This is where the debugger's %{"::_<$filename"} hash is created */
124 memcpy(tmpbuf + 2, name, namelen);
125 gv = *(GV**)hv_fetch(PL_defstash, tmpbuf, tmplen, TRUE);
127 gv_init(gv, PL_defstash, tmpbuf, tmplen, FALSE);
128 #ifdef PERL_DONT_CREATE_GVSV
129 GvSV(gv) = newSVpvn(name, namelen);
131 sv_setpvn(GvSV(gv), name, namelen);
133 if (PERLDB_LINE || PERLDB_SAVESRC)
134 hv_magic(GvHVn(gv_AVadd(gv)), NULL, PERL_MAGIC_dbfile);
136 if (tmpbuf != smallbuf)
142 =for apidoc gv_const_sv
144 If C<gv> is a typeglob whose subroutine entry is a constant sub eligible for
145 inlining, or C<gv> is a placeholder reference that would be promoted to such
146 a typeglob, then returns the value returned by the sub. Otherwise, returns
153 Perl_gv_const_sv(pTHX_ GV *gv)
155 PERL_ARGS_ASSERT_GV_CONST_SV;
157 if (SvTYPE(gv) == SVt_PVGV)
158 return cv_const_sv(GvCVu(gv));
159 return SvROK(gv) ? SvRV(gv) : NULL;
163 Perl_newGP(pTHX_ GV *const gv)
168 const char *const file
169 = (PL_curcop && CopFILE(PL_curcop)) ? CopFILE(PL_curcop) : "";
170 const STRLEN len = strlen(file);
172 SV *const temp_sv = CopFILESV(PL_curcop);
176 PERL_ARGS_ASSERT_NEWGP;
179 file = SvPVX(temp_sv);
180 len = SvCUR(temp_sv);
187 PERL_HASH(hash, file, len);
191 #ifndef PERL_DONT_CREATE_GVSV
192 gp->gp_sv = newSV(0);
195 gp->gp_line = PL_curcop ? CopLINE(PL_curcop) : 0;
196 /* XXX Ideally this cast would be replaced with a change to const char*
198 gp->gp_file_hek = share_hek(file, len, hash);
206 Perl_gv_init(pTHX_ GV *gv, HV *stash, const char *name, STRLEN len, int multi)
209 const U32 old_type = SvTYPE(gv);
210 const bool doproto = old_type > SVt_NULL;
211 char * const proto = (doproto && SvPOK(gv)) ? SvPVX(gv) : NULL;
212 const STRLEN protolen = proto ? SvCUR(gv) : 0;
213 SV *const has_constant = doproto && SvROK(gv) ? SvRV(gv) : NULL;
214 const U32 exported_constant = has_constant ? SvPCS_IMPORTED(gv) : 0;
216 PERL_ARGS_ASSERT_GV_INIT;
217 assert (!(proto && has_constant));
220 /* The constant has to be a simple scalar type. */
221 switch (SvTYPE(has_constant)) {
227 Perl_croak(aTHX_ "Cannot convert a reference to %s to typeglob",
228 sv_reftype(has_constant, 0));
236 if (old_type < SVt_PVGV) {
237 if (old_type >= SVt_PV)
239 sv_upgrade(MUTABLE_SV(gv), SVt_PVGV);
247 Safefree(SvPVX_mutable(gv));
252 GvGP(gv) = Perl_newGP(aTHX_ gv);
255 Perl_sv_add_backref(aTHX_ MUTABLE_SV(stash), MUTABLE_SV(gv));
256 gv_name_set(gv, name, len, GV_ADD);
257 if (multi || doproto) /* doproto means it _was_ mentioned */
259 if (doproto) { /* Replicate part of newSUB here. */
262 /* newCONSTSUB takes ownership of the reference from us. */
263 GvCV(gv) = newCONSTSUB(stash, name, has_constant);
264 /* If this reference was a copy of another, then the subroutine
265 must have been "imported", by a Perl space assignment to a GV
266 from a reference to CV. */
267 if (exported_constant)
268 GvIMPORTED_CV_on(gv);
270 (void) start_subparse(0,0); /* Create empty CV in compcv. */
271 GvCV(gv) = PL_compcv;
275 mro_method_changed_in(GvSTASH(gv)); /* sub Foo::bar($) { (shift) } sub ASDF::baz($); *ASDF::baz = \&Foo::bar */
277 CvFILE_set_from_cop(GvCV(gv), PL_curcop);
278 CvSTASH(GvCV(gv)) = PL_curstash;
280 sv_usepvn_flags(MUTABLE_SV(GvCV(gv)), proto, protolen,
281 SV_HAS_TRAILING_NUL);
287 S_gv_init_sv(pTHX_ GV *gv, const svtype sv_type)
289 PERL_ARGS_ASSERT_GV_INIT_SV;
301 #ifdef PERL_DONT_CREATE_GVSV
309 /* Work round what appears to be a bug in Sun C++ 5.8 2005/10/13
310 If we just cast GvSVn(gv) to void, it ignores evaluating it for
318 =for apidoc gv_fetchmeth
320 Returns the glob with the given C<name> and a defined subroutine or
321 C<NULL>. The glob lives in the given C<stash>, or in the stashes
322 accessible via @ISA and UNIVERSAL::.
324 The argument C<level> should be either 0 or -1. If C<level==0>, as a
325 side-effect creates a glob with the given C<name> in the given C<stash>
326 which in the case of success contains an alias for the subroutine, and sets
327 up caching info for this glob.
329 This function grants C<"SUPER"> token as a postfix of the stash name. The
330 GV returned from C<gv_fetchmeth> may be a method cache entry, which is not
331 visible to Perl code. So when calling C<call_sv>, you should not use
332 the GV directly; instead, you should use the method's CV, which can be
333 obtained from the GV with the C<GvCV> macro.
338 /* NOTE: No support for tied ISA */
341 Perl_gv_fetchmeth(pTHX_ HV *stash, const char *name, STRLEN len, I32 level)
349 GV* candidate = NULL;
354 I32 create = (level >= 0) ? 1 : 0;
359 PERL_ARGS_ASSERT_GV_FETCHMETH;
361 /* UNIVERSAL methods should be callable without a stash */
363 create = 0; /* probably appropriate */
364 if(!(stash = gv_stashpvs("UNIVERSAL", 0)))
370 hvname = HvNAME_get(stash);
372 Perl_croak(aTHX_ "Can't use anonymous symbol table for method lookup");
377 DEBUG_o( Perl_deb(aTHX_ "Looking for method %s in package %s\n",name,hvname) );
379 topgen_cmp = HvMROMETA(stash)->cache_gen + PL_sub_generation;
381 /* check locally for a real method or a cache entry */
382 gvp = (GV**)hv_fetch(stash, name, len, create);
386 if (SvTYPE(topgv) != SVt_PVGV)
387 gv_init(topgv, stash, name, len, TRUE);
388 if ((cand_cv = GvCV(topgv))) {
389 /* If genuine method or valid cache entry, use it */
390 if (!GvCVGEN(topgv) || GvCVGEN(topgv) == topgen_cmp) {
394 /* stale cache entry, junk it and move on */
395 SvREFCNT_dec(cand_cv);
396 GvCV(topgv) = cand_cv = NULL;
400 else if (GvCVGEN(topgv) == topgen_cmp) {
401 /* cache indicates no such method definitively */
406 packlen = HvNAMELEN_get(stash);
407 if (packlen >= 7 && strEQ(hvname + packlen - 7, "::SUPER")) {
410 basestash = gv_stashpvn(hvname, packlen, GV_ADD);
411 linear_av = mro_get_linear_isa(basestash);
414 linear_av = mro_get_linear_isa(stash); /* has ourselves at the top of the list */
417 linear_svp = AvARRAY(linear_av) + 1; /* skip over self */
418 items = AvFILLp(linear_av); /* no +1, to skip over self */
420 linear_sv = *linear_svp++;
422 cstash = gv_stashsv(linear_sv, 0);
425 if (ckWARN(WARN_SYNTAX))
426 Perl_warner(aTHX_ packWARN(WARN_SYNTAX), "Can't locate package %"SVf" for @%s::ISA",
427 SVfARG(linear_sv), hvname);
433 gvp = (GV**)hv_fetch(cstash, name, len, 0);
437 if (SvTYPE(candidate) != SVt_PVGV) gv_init(candidate, cstash, name, len, TRUE);
438 if (SvTYPE(candidate) == SVt_PVGV && (cand_cv = GvCV(candidate)) && !GvCVGEN(candidate)) {
440 * Found real method, cache method in topgv if:
441 * 1. topgv has no synonyms (else inheritance crosses wires)
442 * 2. method isn't a stub (else AUTOLOAD fails spectacularly)
444 if (topgv && (GvREFCNT(topgv) == 1) && (CvROOT(cand_cv) || CvXSUB(cand_cv))) {
445 if ((old_cv = GvCV(topgv))) SvREFCNT_dec(old_cv);
446 SvREFCNT_inc_simple_void_NN(cand_cv);
447 GvCV(topgv) = cand_cv;
448 GvCVGEN(topgv) = topgen_cmp;
454 /* Check UNIVERSAL without caching */
455 if(level == 0 || level == -1) {
456 candidate = gv_fetchmeth(NULL, name, len, 1);
458 cand_cv = GvCV(candidate);
459 if (topgv && (GvREFCNT(topgv) == 1) && (CvROOT(cand_cv) || CvXSUB(cand_cv))) {
460 if ((old_cv = GvCV(topgv))) SvREFCNT_dec(old_cv);
461 SvREFCNT_inc_simple_void_NN(cand_cv);
462 GvCV(topgv) = cand_cv;
463 GvCVGEN(topgv) = topgen_cmp;
469 if (topgv && GvREFCNT(topgv) == 1) {
470 /* cache the fact that the method is not defined */
471 GvCVGEN(topgv) = topgen_cmp;
478 =for apidoc gv_fetchmeth_autoload
480 Same as gv_fetchmeth(), but looks for autoloaded subroutines too.
481 Returns a glob for the subroutine.
483 For an autoloaded subroutine without a GV, will create a GV even
484 if C<level < 0>. For an autoloaded subroutine without a stub, GvCV()
485 of the result may be zero.
491 Perl_gv_fetchmeth_autoload(pTHX_ HV *stash, const char *name, STRLEN len, I32 level)
493 GV *gv = gv_fetchmeth(stash, name, len, level);
495 PERL_ARGS_ASSERT_GV_FETCHMETH_AUTOLOAD;
502 return NULL; /* UNIVERSAL::AUTOLOAD could cause trouble */
503 if (len == S_autolen && memEQ(name, S_autoload, S_autolen))
505 if (!(gv = gv_fetchmeth(stash, S_autoload, S_autolen, FALSE)))
508 if (!(CvROOT(cv) || CvXSUB(cv)))
510 /* Have an autoload */
511 if (level < 0) /* Cannot do without a stub */
512 gv_fetchmeth(stash, name, len, 0);
513 gvp = (GV**)hv_fetch(stash, name, len, (level >= 0));
522 =for apidoc gv_fetchmethod_autoload
524 Returns the glob which contains the subroutine to call to invoke the method
525 on the C<stash>. In fact in the presence of autoloading this may be the
526 glob for "AUTOLOAD". In this case the corresponding variable $AUTOLOAD is
529 The third parameter of C<gv_fetchmethod_autoload> determines whether
530 AUTOLOAD lookup is performed if the given method is not present: non-zero
531 means yes, look for AUTOLOAD; zero means no, don't look for AUTOLOAD.
532 Calling C<gv_fetchmethod> is equivalent to calling C<gv_fetchmethod_autoload>
533 with a non-zero C<autoload> parameter.
535 These functions grant C<"SUPER"> token as a prefix of the method name. Note
536 that if you want to keep the returned glob for a long time, you need to
537 check for it being "AUTOLOAD", since at the later time the call may load a
538 different subroutine due to $AUTOLOAD changing its value. Use the glob
539 created via a side effect to do this.
541 These functions have the same side-effects and as C<gv_fetchmeth> with
542 C<level==0>. C<name> should be writable if contains C<':'> or C<'
543 ''>. The warning against passing the GV returned by C<gv_fetchmeth> to
544 C<call_sv> apply equally to these functions.
550 S_gv_get_super_pkg(pTHX_ const char* name, I32 namelen)
557 PERL_ARGS_ASSERT_GV_GET_SUPER_PKG;
559 stash = gv_stashpvn(name, namelen, 0);
560 if(stash) return stash;
562 /* If we must create it, give it an @ISA array containing
563 the real package this SUPER is for, so that it's tied
564 into the cache invalidation code correctly */
565 stash = gv_stashpvn(name, namelen, GV_ADD);
566 gvp = (GV**)hv_fetchs(stash, "ISA", TRUE);
568 gv_init(gv, stash, "ISA", 3, TRUE);
569 superisa = GvAVn(gv);
571 sv_magic(MUTABLE_SV(superisa), MUTABLE_SV(gv), PERL_MAGIC_isa, NULL, 0);
573 av_push(superisa, newSVpv(CopSTASHPV(PL_curcop), 0));
575 av_push(superisa, newSVhek(CopSTASH(PL_curcop)
576 ? HvNAME_HEK(CopSTASH(PL_curcop)) : NULL));
583 Perl_gv_fetchmethod_autoload(pTHX_ HV *stash, const char *name, I32 autoload)
585 PERL_ARGS_ASSERT_GV_FETCHMETHOD_AUTOLOAD;
587 return gv_fetchmethod_flags(stash, name, autoload ? GV_AUTOLOAD : 0);
590 /* Don't merge this yet, as it's likely to get a len parameter, and possibly
593 Perl_gv_fetchmethod_flags(pTHX_ HV *stash, const char *name, U32 flags)
596 register const char *nend;
597 const char *nsplit = NULL;
600 const char * const origname = name;
601 SV *const error_report = MUTABLE_SV(stash);
602 const U32 autoload = flags & GV_AUTOLOAD;
603 const U32 do_croak = flags & GV_CROAK;
605 PERL_ARGS_ASSERT_GV_FETCHMETHOD_FLAGS;
607 if (SvTYPE(stash) < SVt_PVHV)
610 /* The only way stash can become NULL later on is if nsplit is set,
611 which in turn means that there is no need for a SVt_PVHV case
612 the error reporting code. */
615 for (nend = name; *nend; nend++) {
620 else if (*nend == ':' && *(nend + 1) == ':') {
626 if ((nsplit - origname) == 5 && memEQ(origname, "SUPER", 5)) {
627 /* ->SUPER::method should really be looked up in original stash */
628 SV * const tmpstr = sv_2mortal(Perl_newSVpvf(aTHX_ "%s::SUPER",
629 CopSTASHPV(PL_curcop)));
630 /* __PACKAGE__::SUPER stash should be autovivified */
631 stash = gv_get_super_pkg(SvPVX_const(tmpstr), SvCUR(tmpstr));
632 DEBUG_o( Perl_deb(aTHX_ "Treating %s as %s::%s\n",
633 origname, HvNAME_get(stash), name) );
636 /* don't autovifify if ->NoSuchStash::method */
637 stash = gv_stashpvn(origname, nsplit - origname, 0);
639 /* however, explicit calls to Pkg::SUPER::method may
640 happen, and may require autovivification to work */
641 if (!stash && (nsplit - origname) >= 7 &&
642 strnEQ(nsplit - 7, "::SUPER", 7) &&
643 gv_stashpvn(origname, nsplit - origname - 7, 0))
644 stash = gv_get_super_pkg(origname, nsplit - origname);
649 gv = gv_fetchmeth(stash, name, nend - name, 0);
651 if (strEQ(name,"import") || strEQ(name,"unimport"))
652 gv = MUTABLE_GV(&PL_sv_yes);
654 gv = gv_autoload4(ostash, name, nend - name, TRUE);
655 if (!gv && do_croak) {
656 /* Right now this is exclusively for the benefit of S_method_common
660 "Can't locate object method \"%s\" via package \"%.*s\"",
661 name, (int)HvNAMELEN_get(stash), HvNAME_get(stash));
665 const char *packname;
668 packlen = nsplit - origname;
671 packname = SvPV_const(error_report, packlen);
675 "Can't locate object method \"%s\" via package \"%.*s\""
676 " (perhaps you forgot to load \"%.*s\"?)",
677 name, (int)packlen, packname, (int)packlen, packname);
682 CV* const cv = GvCV(gv);
683 if (!CvROOT(cv) && !CvXSUB(cv)) {
691 if (GvCV(stubgv) != cv) /* orphaned import */
694 autogv = gv_autoload4(GvSTASH(stubgv),
695 GvNAME(stubgv), GvNAMELEN(stubgv), TRUE);
705 Perl_gv_autoload4(pTHX_ HV *stash, const char *name, STRLEN len, I32 method)
713 const char *packname = "";
714 STRLEN packname_len = 0;
716 PERL_ARGS_ASSERT_GV_AUTOLOAD4;
718 if (len == S_autolen && memEQ(name, S_autoload, S_autolen))
721 if (SvTYPE(stash) < SVt_PVHV) {
722 packname = SvPV_const(MUTABLE_SV(stash), packname_len);
726 packname = HvNAME_get(stash);
727 packname_len = HvNAMELEN_get(stash);
730 if (!(gv = gv_fetchmeth(stash, S_autoload, S_autolen, FALSE)))
734 if (!(CvROOT(cv) || CvXSUB(cv)))
738 * Inheriting AUTOLOAD for non-methods works ... for now.
740 if (!method && (GvCVGEN(gv) || GvSTASH(gv) != stash)
741 && ckWARN2(WARN_DEPRECATED, WARN_SYNTAX)
743 Perl_warner(aTHX_ packWARN2(WARN_DEPRECATED, WARN_SYNTAX),
744 "Use of inherited AUTOLOAD for non-method %s::%.*s() is deprecated",
745 packname, (int)len, name);
748 /* rather than lookup/init $AUTOLOAD here
749 * only to have the XSUB do another lookup for $AUTOLOAD
750 * and split that value on the last '::',
751 * pass along the same data via some unused fields in the CV
754 SvPV_set(cv, (char *)name); /* cast to lose constness warning */
760 * Given &FOO::AUTOLOAD, set $FOO::AUTOLOAD to desired function name.
761 * The subroutine's original name may not be "AUTOLOAD", so we don't
762 * use that, but for lack of anything better we will use the sub's
763 * original package to look up $AUTOLOAD.
765 varstash = GvSTASH(CvGV(cv));
766 vargv = *(GV**)hv_fetch(varstash, S_autoload, S_autolen, TRUE);
770 gv_init(vargv, varstash, S_autoload, S_autolen, FALSE);
771 #ifdef PERL_DONT_CREATE_GVSV
772 GvSV(vargv) = newSV(0);
776 varsv = GvSVn(vargv);
777 sv_setpvn(varsv, packname, packname_len);
778 sv_catpvs(varsv, "::");
779 sv_catpvn(varsv, name, len);
784 /* require_tie_mod() internal routine for requiring a module
785 * that implements the logic of automatical ties like %! and %-
787 * The "gv" parameter should be the glob.
788 * "varpv" holds the name of the var, used for error messages.
789 * "namesv" holds the module name. Its refcount will be decremented.
790 * "methpv" holds the method name to test for to check that things
791 * are working reasonably close to as expected.
792 * "flags": if flag & 1 then save the scalar before loading.
793 * For the protection of $! to work (it is set by this routine)
794 * the sv slot must already be magicalized.
797 S_require_tie_mod(pTHX_ GV *gv, const char *varpv, SV* namesv, const char *methpv,const U32 flags)
800 HV* stash = gv_stashsv(namesv, 0);
802 PERL_ARGS_ASSERT_REQUIRE_TIE_MOD;
804 if (!stash || !(gv_fetchmethod(stash, methpv))) {
805 SV *module = newSVsv(namesv);
806 char varname = *varpv; /* varpv might be clobbered by load_module,
807 so save it. For the moment it's always
813 PUSHSTACKi(PERLSI_MAGIC);
814 Perl_load_module(aTHX_ PERL_LOADMOD_NOIMPORT, module, NULL);
818 stash = gv_stashsv(namesv, 0);
820 Perl_croak(aTHX_ "panic: Can't use %%%c because %"SVf" is not available",
821 varname, SVfARG(namesv));
822 else if (!gv_fetchmethod(stash, methpv))
823 Perl_croak(aTHX_ "panic: Can't use %%%c because %"SVf" does not support method %s",
824 varname, SVfARG(namesv), methpv);
826 SvREFCNT_dec(namesv);
831 =for apidoc gv_stashpv
833 Returns a pointer to the stash for a specified package. Uses C<strlen> to
834 determine the length of C<name>, then calls C<gv_stashpvn()>.
840 Perl_gv_stashpv(pTHX_ const char *name, I32 create)
842 PERL_ARGS_ASSERT_GV_STASHPV;
843 return gv_stashpvn(name, strlen(name), create);
847 =for apidoc gv_stashpvn
849 Returns a pointer to the stash for a specified package. The C<namelen>
850 parameter indicates the length of the C<name>, in bytes. C<flags> is passed
851 to C<gv_fetchpvn_flags()>, so if set to C<GV_ADD> then the package will be
852 created if it does not already exist. If the package does not exist and
853 C<flags> is 0 (or any other setting that does not create packages) then NULL
861 Perl_gv_stashpvn(pTHX_ const char *name, U32 namelen, I32 flags)
868 PERL_ARGS_ASSERT_GV_STASHPVN;
870 if (namelen + 2 <= sizeof smallbuf)
873 Newx(tmpbuf, namelen + 2, char);
874 Copy(name,tmpbuf,namelen,char);
875 tmpbuf[namelen++] = ':';
876 tmpbuf[namelen++] = ':';
877 tmpgv = gv_fetchpvn_flags(tmpbuf, namelen, flags, SVt_PVHV);
878 if (tmpbuf != smallbuf)
883 GvHV(tmpgv) = newHV();
885 if (!HvNAME_get(stash))
886 hv_name_set(stash, name, namelen, 0);
891 =for apidoc gv_stashsv
893 Returns a pointer to the stash for a specified package. See C<gv_stashpvn>.
899 Perl_gv_stashsv(pTHX_ SV *sv, I32 flags)
902 const char * const ptr = SvPV_const(sv,len);
904 PERL_ARGS_ASSERT_GV_STASHSV;
906 return gv_stashpvn(ptr, len, flags);
911 Perl_gv_fetchpv(pTHX_ const char *nambeg, I32 add, const svtype sv_type) {
912 PERL_ARGS_ASSERT_GV_FETCHPV;
913 return gv_fetchpvn_flags(nambeg, strlen(nambeg), add, sv_type);
917 Perl_gv_fetchsv(pTHX_ SV *name, I32 flags, const svtype sv_type) {
919 const char * const nambeg = SvPV_const(name, len);
920 PERL_ARGS_ASSERT_GV_FETCHSV;
921 return gv_fetchpvn_flags(nambeg, len, flags | SvUTF8(name), sv_type);
925 Perl_gv_fetchpvn_flags(pTHX_ const char *nambeg, STRLEN full_len, I32 flags,
926 const svtype sv_type)
929 register const char *name = nambeg;
930 register GV *gv = NULL;
933 register const char *name_cursor;
935 const I32 no_init = flags & (GV_NOADD_NOINIT | GV_NOINIT);
936 const I32 no_expand = flags & GV_NOEXPAND;
937 const I32 add = flags & ~GV_NOADD_MASK;
938 const char *const name_end = nambeg + full_len;
939 const char *const name_em1 = name_end - 1;
942 PERL_ARGS_ASSERT_GV_FETCHPVN_FLAGS;
944 if (flags & GV_NOTQUAL) {
945 /* Caller promised that there is no stash, so we can skip the check. */
950 if (full_len > 2 && *name == '*' && isALPHA(name[1])) {
951 /* accidental stringify on a GV? */
955 for (name_cursor = name; name_cursor < name_end; name_cursor++) {
956 if ((*name_cursor == ':' && name_cursor < name_em1
957 && name_cursor[1] == ':')
958 || (*name_cursor == '\'' && name_cursor[1]))
962 if (!stash || !SvREFCNT(stash)) /* symbol table under destruction */
965 len = name_cursor - name;
970 if (len + 2 <= (I32)sizeof (smallbuf))
973 Newx(tmpbuf, len+2, char);
974 Copy(name, tmpbuf, len, char);
977 gvp = (GV**)hv_fetch(stash,tmpbuf,len,add);
978 gv = gvp ? *gvp : NULL;
979 if (gv && gv != (const GV *)&PL_sv_undef) {
980 if (SvTYPE(gv) != SVt_PVGV)
981 gv_init(gv, stash, tmpbuf, len, (add & GV_ADDMULTI));
985 if (tmpbuf != smallbuf)
987 if (!gv || gv == (const GV *)&PL_sv_undef)
990 if (!(stash = GvHV(gv)))
991 stash = GvHV(gv) = newHV();
993 if (!HvNAME_get(stash))
994 hv_name_set(stash, nambeg, name_cursor - nambeg, 0);
997 if (*name_cursor == ':')
1001 if (name == name_end)
1003 ? gv : MUTABLE_GV(*hv_fetchs(PL_defstash, "main::", TRUE));
1006 len = name_cursor - name;
1008 /* No stash in name, so see how we can default */
1012 if (len && isIDFIRST_lazy(name)) {
1013 bool global = FALSE;
1021 if ((name[0] == 'I' && name[1] == 'N' && name[2] == 'C')
1022 || (name[0] == 'E' && name[1] == 'N' && name[2] == 'V')
1023 || (name[0] == 'S' && name[1] == 'I' && name[2] == 'G'))
1027 if (name[0] == 'A' && name[1] == 'R' && name[2] == 'G'
1032 if (name[0] == 'S' && name[1] == 'T' && name[2] == 'D'
1033 && name[3] == 'I' && name[4] == 'N')
1037 if ((name[0] == 'S' && name[1] == 'T' && name[2] == 'D')
1038 &&((name[3] == 'O' && name[4] == 'U' && name[5] == 'T')
1039 ||(name[3] == 'E' && name[4] == 'R' && name[5] == 'R')))
1043 if (name[0] == 'A' && name[1] == 'R' && name[2] == 'G'
1044 && name[3] == 'V' && name[4] == 'O' && name[5] == 'U'
1051 stash = PL_defstash;
1052 else if (IN_PERL_COMPILETIME) {
1053 stash = PL_curstash;
1054 if (add && (PL_hints & HINT_STRICT_VARS) &&
1055 sv_type != SVt_PVCV &&
1056 sv_type != SVt_PVGV &&
1057 sv_type != SVt_PVFM &&
1058 sv_type != SVt_PVIO &&
1059 !(len == 1 && sv_type == SVt_PV &&
1060 (*name == 'a' || *name == 'b')) )
1062 gvp = (GV**)hv_fetch(stash,name,len,0);
1064 *gvp == (const GV *)&PL_sv_undef ||
1065 SvTYPE(*gvp) != SVt_PVGV)
1069 else if ((sv_type == SVt_PV && !GvIMPORTED_SV(*gvp)) ||
1070 (sv_type == SVt_PVAV && !GvIMPORTED_AV(*gvp)) ||
1071 (sv_type == SVt_PVHV && !GvIMPORTED_HV(*gvp)) )
1073 /* diag_listed_as: Variable "%s" is not imported%s */
1074 Perl_warn(aTHX_ "Variable \"%c%s\" is not imported",
1075 sv_type == SVt_PVAV ? '@' :
1076 sv_type == SVt_PVHV ? '%' : '$',
1079 Perl_warn(aTHX_ "\t(Did you mean &%s instead?)\n", name);
1085 stash = CopSTASH(PL_curcop);
1088 stash = PL_defstash;
1091 /* By this point we should have a stash and a name */
1095 SV * const err = Perl_mess(aTHX_
1096 "Global symbol \"%s%s\" requires explicit package name",
1097 (sv_type == SVt_PV ? "$"
1098 : sv_type == SVt_PVAV ? "@"
1099 : sv_type == SVt_PVHV ? "%"
1102 if (USE_UTF8_IN_NAMES)
1105 gv = gv_fetchpvs("<none>::", GV_ADDMULTI, SVt_PVHV);
1107 /* symbol table under destruction */
1116 if (!SvREFCNT(stash)) /* symbol table under destruction */
1119 gvp = (GV**)hv_fetch(stash,name,len,add);
1120 if (!gvp || *gvp == (const GV *)&PL_sv_undef)
1123 if (SvTYPE(gv) == SVt_PVGV) {
1126 gv_init_sv(gv, sv_type);
1127 if (len == 1 && (sv_type == SVt_PVHV || sv_type == SVt_PVGV)) {
1129 require_tie_mod(gv, "!", newSVpvs("Errno"), "TIEHASH", 1);
1130 else if (*name == '-' || *name == '+')
1131 require_tie_mod(gv, name, newSVpvs("Tie::Hash::NamedCapture"), "TIEHASH", 0);
1135 } else if (no_init) {
1137 } else if (no_expand && SvROK(gv)) {
1141 /* Adding a new symbol.
1142 Unless of course there was already something non-GV here, in which case
1143 we want to behave as if there was always a GV here, containing some sort
1145 Otherwise we run the risk of creating things like GvIO, which can cause
1146 subtle bugs. eg the one that tripped up SQL::Translator */
1148 faking_it = SvOK(gv);
1150 if (add & GV_ADDWARN && ckWARN_d(WARN_INTERNAL))
1151 Perl_warner(aTHX_ packWARN(WARN_INTERNAL), "Had to create %s unexpectedly", nambeg);
1152 gv_init(gv, stash, name, len, add & GV_ADDMULTI);
1153 gv_init_sv(gv, faking_it ? SVt_PVCV : sv_type);
1155 if (isALPHA(name[0]) && ! (isLEXWARN_on ? ckWARN(WARN_ONCE)
1156 : (PL_dowarn & G_WARN_ON ) ) )
1159 /* set up magic where warranted */
1164 /* Nothing else to do.
1165 The compiler will probably turn the switch statement into a
1166 branch table. Make sure we avoid even that small overhead for
1167 the common case of lower case variable names. */
1171 const char * const name2 = name + 1;
1174 if (strEQ(name2, "RGV")) {
1175 IoFLAGS(GvIOn(gv)) |= IOf_ARGV|IOf_START;
1177 else if (strEQ(name2, "RGVOUT")) {
1182 if (strnEQ(name2, "XPORT", 5))
1186 if (strEQ(name2, "SA")) {
1187 AV* const av = GvAVn(gv);
1189 sv_magic(MUTABLE_SV(av), MUTABLE_SV(gv), PERL_MAGIC_isa,
1191 /* NOTE: No support for tied ISA */
1192 if ((add & GV_ADDMULTI) && strEQ(nambeg,"AnyDBM_File::ISA")
1193 && AvFILLp(av) == -1)
1195 av_push(av, newSVpvs("NDBM_File"));
1196 gv_stashpvs("NDBM_File", GV_ADD);
1197 av_push(av, newSVpvs("DB_File"));
1198 gv_stashpvs("DB_File", GV_ADD);
1199 av_push(av, newSVpvs("GDBM_File"));
1200 gv_stashpvs("GDBM_File", GV_ADD);
1201 av_push(av, newSVpvs("SDBM_File"));
1202 gv_stashpvs("SDBM_File", GV_ADD);
1203 av_push(av, newSVpvs("ODBM_File"));
1204 gv_stashpvs("ODBM_File", GV_ADD);
1209 if (strEQ(name2, "VERLOAD")) {
1210 HV* const hv = GvHVn(gv);
1212 hv_magic(hv, NULL, PERL_MAGIC_overload);
1216 if (strEQ(name2, "IG")) {
1219 if (!PL_psig_name) {
1220 Newxz(PL_psig_name, 2 * SIG_SIZE, SV*);
1221 Newxz(PL_psig_pend, SIG_SIZE, int);
1222 PL_psig_ptr = PL_psig_name + SIG_SIZE;
1224 /* I think that the only way to get here is to re-use an
1225 embedded perl interpreter, where the previous
1226 use didn't clean up fully because
1227 PL_perl_destruct_level was 0. I'm not sure that we
1228 "support" that, in that I suspect in that scenario
1229 there are sufficient other garbage values left in the
1230 interpreter structure that something else will crash
1231 before we get here. I suspect that this is one of
1232 those "doctor, it hurts when I do this" bugs. */
1233 Zero(PL_psig_name, 2 * SIG_SIZE, SV*);
1234 Zero(PL_psig_pend, SIG_SIZE, int);
1238 hv_magic(hv, NULL, PERL_MAGIC_sig);
1239 for (i = 1; i < SIG_SIZE; i++) {
1240 SV * const * const init = hv_fetch(hv, PL_sig_name[i], strlen(PL_sig_name[i]), 1);
1242 sv_setsv(*init, &PL_sv_undef);
1247 if (strEQ(name2, "ERSION"))
1250 case '\003': /* $^CHILD_ERROR_NATIVE */
1251 if (strEQ(name2, "HILD_ERROR_NATIVE"))
1254 case '\005': /* $^ENCODING */
1255 if (strEQ(name2, "NCODING"))
1258 case '\015': /* $^MATCH */
1259 if (strEQ(name2, "ATCH"))
1261 case '\017': /* $^OPEN */
1262 if (strEQ(name2, "PEN"))
1265 case '\020': /* $^PREMATCH $^POSTMATCH */
1266 if (strEQ(name2, "REMATCH") || strEQ(name2, "OSTMATCH"))
1268 case '\024': /* ${^TAINT} */
1269 if (strEQ(name2, "AINT"))
1272 case '\025': /* ${^UNICODE}, ${^UTF8LOCALE} */
1273 if (strEQ(name2, "NICODE"))
1275 if (strEQ(name2, "TF8LOCALE"))
1277 if (strEQ(name2, "TF8CACHE"))
1280 case '\027': /* $^WARNING_BITS */
1281 if (strEQ(name2, "ARNING_BITS"))
1294 /* Ensures that we have an all-digit variable, ${"1foo"} fails
1296 /* This snippet is taken from is_gv_magical */
1297 const char *end = name + len;
1298 while (--end > name) {
1299 if (!isDIGIT(*end)) return gv;
1306 /* Names of length 1. (Or 0. But name is NUL terminated, so that will
1307 be case '\0' in this switch statement (ie a default case) */
1313 sv_type == SVt_PVAV ||
1314 sv_type == SVt_PVHV ||
1315 sv_type == SVt_PVCV ||
1316 sv_type == SVt_PVFM ||
1319 PL_sawampersand = TRUE;
1323 sv_setpv(GvSVn(gv),PL_chopset);
1327 #ifdef COMPLEX_STATUS
1328 SvUPGRADE(GvSVn(gv), SVt_PVLV);
1334 /* If %! has been used, automatically load Errno.pm. */
1336 sv_magic(GvSVn(gv), MUTABLE_SV(gv), PERL_MAGIC_sv, name, len);
1338 /* magicalization must be done before require_tie_mod is called */
1339 if (sv_type == SVt_PVHV || sv_type == SVt_PVGV)
1340 require_tie_mod(gv, "!", newSVpvs("Errno"), "TIEHASH", 1);
1345 GvMULTI_on(gv); /* no used once warnings here */
1347 AV* const av = GvAVn(gv);
1348 SV* const avc = (*name == '+') ? MUTABLE_SV(av) : NULL;
1350 sv_magic(MUTABLE_SV(av), avc, PERL_MAGIC_regdata, NULL, 0);
1351 sv_magic(GvSVn(gv), MUTABLE_SV(gv), PERL_MAGIC_sv, name, len);
1353 SvREADONLY_on(GvSVn(gv));
1356 if (sv_type == SVt_PVHV || sv_type == SVt_PVGV)
1357 require_tie_mod(gv, name, newSVpvs("Tie::Hash::NamedCapture"), "TIEHASH", 0);
1363 if (sv_type == SVt_PV && ckWARN2_d(WARN_DEPRECATED, WARN_SYNTAX))
1364 Perl_warner(aTHX_ packWARN2(WARN_DEPRECATED, WARN_SYNTAX),
1365 "$%c is no longer supported", *name);
1368 sv_setiv(GvSVn(gv), (IV)(IoFLAGS(GvIOp(PL_defoutgv)) & IOf_FLUSH) != 0);
1371 case '\010': /* $^H */
1373 HV *const hv = GvHVn(gv);
1374 hv_magic(hv, NULL, PERL_MAGIC_hints);
1377 case '\023': /* $^S */
1379 SvREADONLY_on(GvSVn(gv));
1403 case '\001': /* $^A */
1404 case '\003': /* $^C */
1405 case '\004': /* $^D */
1406 case '\005': /* $^E */
1407 case '\006': /* $^F */
1408 case '\011': /* $^I, NOT \t in EBCDIC */
1409 case '\016': /* $^N */
1410 case '\017': /* $^O */
1411 case '\020': /* $^P */
1412 case '\024': /* $^T */
1413 case '\027': /* $^W */
1415 sv_magic(GvSVn(gv), MUTABLE_SV(gv), PERL_MAGIC_sv, name, len);
1418 case '\014': /* $^L */
1419 sv_setpvs(GvSVn(gv),"\f");
1420 PL_formfeed = GvSVn(gv);
1423 sv_setpvs(GvSVn(gv),"\034");
1427 SV * const sv = GvSVn(gv);
1428 if (!sv_derived_from(PL_patchlevel, "version"))
1429 upg_version(PL_patchlevel, TRUE);
1430 GvSV(gv) = vnumify(PL_patchlevel);
1431 SvREADONLY_on(GvSV(gv));
1435 case '\026': /* $^V */
1437 SV * const sv = GvSVn(gv);
1438 GvSV(gv) = new_version(PL_patchlevel);
1439 SvREADONLY_on(GvSV(gv));
1449 Perl_gv_fullname4(pTHX_ SV *sv, const GV *gv, const char *prefix, bool keepmain)
1453 const HV * const hv = GvSTASH(gv);
1455 PERL_ARGS_ASSERT_GV_FULLNAME4;
1461 sv_setpv(sv, prefix ? prefix : "");
1463 name = HvNAME_get(hv);
1465 namelen = HvNAMELEN_get(hv);
1471 if (keepmain || strNE(name, "main")) {
1472 sv_catpvn(sv,name,namelen);
1475 sv_catpvn(sv,GvNAME(gv),GvNAMELEN(gv));
1479 Perl_gv_efullname4(pTHX_ SV *sv, const GV *gv, const char *prefix, bool keepmain)
1481 const GV * const egv = GvEGV(gv);
1483 PERL_ARGS_ASSERT_GV_EFULLNAME4;
1485 gv_fullname4(sv, egv ? egv : gv, prefix, keepmain);
1493 IO * const io = MUTABLE_IO(newSV_type(SVt_PVIO));
1494 /* This used to read SvREFCNT(io) = 1;
1495 It's not clear why the reference count needed an explicit reset. NWC
1497 assert (SvREFCNT(io) == 1);
1499 /* Clear the stashcache because a new IO could overrule a package name */
1500 hv_clear(PL_stashcache);
1501 iogv = gv_fetchpvs("FileHandle::", 0, SVt_PVHV);
1502 /* unless exists($main::{FileHandle}) and defined(%main::FileHandle::) */
1503 if (!(iogv && GvHV(iogv) && HvARRAY(GvHV(iogv))))
1504 iogv = gv_fetchpvs("IO::Handle::", GV_ADD, SVt_PVHV);
1505 SvSTASH_set(io, MUTABLE_HV(SvREFCNT_inc(GvHV(iogv))));
1510 Perl_gv_check(pTHX_ const HV *stash)
1515 PERL_ARGS_ASSERT_GV_CHECK;
1517 if (!HvARRAY(stash))
1519 for (i = 0; i <= (I32) HvMAX(stash); i++) {
1521 for (entry = HvARRAY(stash)[i]; entry; entry = HeNEXT(entry)) {
1524 if (HeKEY(entry)[HeKLEN(entry)-1] == ':' &&
1525 (gv = MUTABLE_GV(HeVAL(entry))) && isGV(gv) && (hv = GvHV(gv)))
1527 if (hv != PL_defstash && hv != stash)
1528 gv_check(hv); /* nested package */
1530 else if (isALPHA(*HeKEY(entry))) {
1532 gv = MUTABLE_GV(HeVAL(entry));
1533 if (SvTYPE(gv) != SVt_PVGV || GvMULTI(gv))
1536 CopLINE_set(PL_curcop, GvLINE(gv));
1538 CopFILE(PL_curcop) = (char *)file; /* set for warning */
1540 CopFILEGV(PL_curcop)
1541 = gv_fetchfile_flags(file, HEK_LEN(GvFILE_HEK(gv)), 0);
1543 Perl_warner(aTHX_ packWARN(WARN_ONCE),
1544 "Name \"%s::%s\" used only once: possible typo",
1545 HvNAME_get(stash), GvNAME(gv));
1552 Perl_newGVgen(pTHX_ const char *pack)
1556 PERL_ARGS_ASSERT_NEWGVGEN;
1558 return gv_fetchpv(Perl_form(aTHX_ "%s::_GEN_%ld", pack, (long)PL_gensym++),
1562 /* hopefully this is only called on local symbol table entries */
1565 Perl_gp_ref(pTHX_ GP *gp)
1573 /* If the GP they asked for a reference to contains
1574 a method cache entry, clear it first, so that we
1575 don't infect them with our cached entry */
1576 SvREFCNT_dec(gp->gp_cv);
1585 Perl_gp_free(pTHX_ GV *gv)
1590 if (!gv || !isGV_with_GP(gv) || !(gp = GvGP(gv)))
1592 if (gp->gp_refcnt == 0) {
1593 if (ckWARN_d(WARN_INTERNAL))
1594 Perl_warner(aTHX_ packWARN(WARN_INTERNAL),
1595 "Attempt to free unreferenced glob pointers"
1596 pTHX__FORMAT pTHX__VALUE);
1599 if (--gp->gp_refcnt > 0) {
1600 if (gp->gp_egv == gv)
1606 if (gp->gp_file_hek)
1607 unshare_hek(gp->gp_file_hek);
1608 SvREFCNT_dec(gp->gp_sv);
1609 SvREFCNT_dec(gp->gp_av);
1610 /* FIXME - another reference loop GV -> symtab -> GV ?
1611 Somehow gp->gp_hv can end up pointing at freed garbage. */
1612 if (gp->gp_hv && SvTYPE(gp->gp_hv) == SVt_PVHV) {
1613 const char *hvname = HvNAME_get(gp->gp_hv);
1614 if (PL_stashcache && hvname)
1615 (void)hv_delete(PL_stashcache, hvname, HvNAMELEN_get(gp->gp_hv),
1617 SvREFCNT_dec(gp->gp_hv);
1619 SvREFCNT_dec(gp->gp_io);
1620 SvREFCNT_dec(gp->gp_cv);
1621 SvREFCNT_dec(gp->gp_form);
1628 Perl_magic_freeovrld(pTHX_ SV *sv, MAGIC *mg)
1630 AMT * const amtp = (AMT*)mg->mg_ptr;
1631 PERL_UNUSED_ARG(sv);
1633 PERL_ARGS_ASSERT_MAGIC_FREEOVRLD;
1635 if (amtp && AMT_AMAGIC(amtp)) {
1637 for (i = 1; i < NofAMmeth; i++) {
1638 CV * const cv = amtp->table[i];
1640 SvREFCNT_dec(MUTABLE_SV(cv));
1641 amtp->table[i] = NULL;
1648 /* Updates and caches the CV's */
1650 * 1 on success and there is some overload
1651 * 0 if there is no overload
1652 * -1 if some error occurred and it couldn't croak
1656 Perl_Gv_AMupdate(pTHX_ HV *stash, bool destructing)
1659 MAGIC* const mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table);
1661 const struct mro_meta* stash_meta = HvMROMETA(stash);
1664 PERL_ARGS_ASSERT_GV_AMUPDATE;
1666 newgen = PL_sub_generation + stash_meta->pkg_gen + stash_meta->cache_gen;
1668 const AMT * const amtp = (AMT*)mg->mg_ptr;
1669 if (amtp->was_ok_am == PL_amagic_generation
1670 && amtp->was_ok_sub == newgen) {
1671 return AMT_OVERLOADED(amtp) ? 1 : 0;
1673 sv_unmagic(MUTABLE_SV(stash), PERL_MAGIC_overload_table);
1676 DEBUG_o( Perl_deb(aTHX_ "Recalcing overload magic in package %s\n",HvNAME_get(stash)) );
1679 amt.was_ok_am = PL_amagic_generation;
1680 amt.was_ok_sub = newgen;
1681 amt.fallback = AMGfallNO;
1685 int filled = 0, have_ovl = 0;
1688 /* Work with "fallback" key, which we assume to be first in PL_AMG_names */
1690 /* Try to find via inheritance. */
1691 GV *gv = gv_fetchmeth(stash, PL_AMG_names[0], 2, -1);
1692 SV * const sv = gv ? GvSV(gv) : NULL;
1696 lim = DESTROY_amg; /* Skip overloading entries. */
1697 #ifdef PERL_DONT_CREATE_GVSV
1699 NOOP; /* Equivalent to !SvTRUE and !SvOK */
1702 else if (SvTRUE(sv))
1703 amt.fallback=AMGfallYES;
1705 amt.fallback=AMGfallNEVER;
1707 for (i = 1; i < lim; i++)
1708 amt.table[i] = NULL;
1709 for (; i < NofAMmeth; i++) {
1710 const char * const cooky = PL_AMG_names[i];
1711 /* Human-readable form, for debugging: */
1712 const char * const cp = (i >= DESTROY_amg ? cooky : AMG_id2name(i));
1713 const STRLEN l = PL_AMG_namelens[i];
1715 DEBUG_o( Perl_deb(aTHX_ "Checking overloading of \"%s\" in package \"%.256s\"\n",
1716 cp, HvNAME_get(stash)) );
1717 /* don't fill the cache while looking up!
1718 Creation of inheritance stubs in intermediate packages may
1719 conflict with the logic of runtime method substitution.
1720 Indeed, for inheritance A -> B -> C, if C overloads "+0",
1721 then we could have created stubs for "(+0" in A and C too.
1722 But if B overloads "bool", we may want to use it for
1723 numifying instead of C's "+0". */
1724 if (i >= DESTROY_amg)
1725 gv = Perl_gv_fetchmeth_autoload(aTHX_ stash, cooky, l, 0);
1726 else /* Autoload taken care of below */
1727 gv = Perl_gv_fetchmeth(aTHX_ stash, cooky, l, -1);
1729 if (gv && (cv = GvCV(gv))) {
1731 if (GvNAMELEN(CvGV(cv)) == 3 && strEQ(GvNAME(CvGV(cv)), "nil")
1732 && strEQ(hvname = HvNAME_get(GvSTASH(CvGV(cv))), "overload")) {
1733 /* This is a hack to support autoloading..., while
1734 knowing *which* methods were declared as overloaded. */
1735 /* GvSV contains the name of the method. */
1737 SV *gvsv = GvSV(gv);
1739 DEBUG_o( Perl_deb(aTHX_ "Resolving method \"%"SVf256\
1740 "\" for overloaded \"%s\" in package \"%.256s\"\n",
1741 (void*)GvSV(gv), cp, hvname) );
1742 if (!gvsv || !SvPOK(gvsv)
1743 || !(ngv = gv_fetchmethod_autoload(stash, SvPVX_const(gvsv),
1746 /* Can be an import stub (created by "can"). */
1751 const char * const name = (gvsv && SvPOK(gvsv)) ? SvPVX_const(gvsv) : "???";
1752 Perl_croak(aTHX_ "%s method \"%.256s\" overloading \"%s\" "\
1753 "in package \"%.256s\"",
1754 (GvCVGEN(gv) ? "Stub found while resolving"
1759 cv = GvCV(gv = ngv);
1761 DEBUG_o( Perl_deb(aTHX_ "Overloading \"%s\" in package \"%.256s\" via \"%.256s::%.256s\"\n",
1762 cp, HvNAME_get(stash), HvNAME_get(GvSTASH(CvGV(cv))),
1763 GvNAME(CvGV(cv))) );
1765 if (i < DESTROY_amg)
1767 } else if (gv) { /* Autoloaded... */
1768 cv = MUTABLE_CV(gv);
1771 amt.table[i]=MUTABLE_CV(SvREFCNT_inc_simple(cv));
1774 AMT_AMAGIC_on(&amt);
1776 AMT_OVERLOADED_on(&amt);
1777 sv_magic(MUTABLE_SV(stash), 0, PERL_MAGIC_overload_table,
1778 (char*)&amt, sizeof(AMT));
1782 /* Here we have no table: */
1784 AMT_AMAGIC_off(&amt);
1785 sv_magic(MUTABLE_SV(stash), 0, PERL_MAGIC_overload_table,
1786 (char*)&amt, sizeof(AMTS));
1792 Perl_gv_handler(pTHX_ HV *stash, I32 id)
1798 struct mro_meta* stash_meta;
1800 if (!stash || !HvNAME_get(stash))
1803 stash_meta = HvMROMETA(stash);
1804 newgen = PL_sub_generation + stash_meta->pkg_gen + stash_meta->cache_gen;
1806 mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table);
1809 /* If we're looking up a destructor to invoke, we must avoid
1810 * that Gv_AMupdate croaks, because we might be dying already */
1811 if (Gv_AMupdate(stash, id == DESTROY_amg) == -1) {
1812 /* and if it didn't found a destructor, we fall back
1813 * to a simpler method that will only look for the
1814 * destructor instead of the whole magic */
1815 if (id == DESTROY_amg) {
1816 GV * const gv = gv_fetchmethod(stash, "DESTROY");
1822 mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table);
1825 amtp = (AMT*)mg->mg_ptr;
1826 if ( amtp->was_ok_am != PL_amagic_generation
1827 || amtp->was_ok_sub != newgen )
1829 if (AMT_AMAGIC(amtp)) {
1830 CV * const ret = amtp->table[id];
1831 if (ret && isGV(ret)) { /* Autoloading stab */
1832 /* Passing it through may have resulted in a warning
1833 "Inherited AUTOLOAD for a non-method deprecated", since
1834 our caller is going through a function call, not a method call.
1835 So return the CV for AUTOLOAD, setting $AUTOLOAD. */
1836 GV * const gv = gv_fetchmethod(stash, PL_AMG_names[id]);
1849 Perl_amagic_call(pTHX_ SV *left, SV *right, int method, int flags)
1854 CV **cvp=NULL, **ocvp=NULL;
1855 AMT *amtp=NULL, *oamtp=NULL;
1856 int off = 0, off1, lr = 0, notfound = 0;
1857 int postpr = 0, force_cpy = 0;
1858 int assign = AMGf_assign & flags;
1859 const int assignshift = assign ? 1 : 0;
1865 PERL_ARGS_ASSERT_AMAGIC_CALL;
1867 if ( PL_curcop->cop_hints & HINT_NO_AMAGIC ) {
1868 SV *lex_mask = Perl_refcounted_he_fetch(aTHX_ PL_curcop->cop_hints_hash,
1869 0, "overloading", 11, 0, 0);
1871 if ( !lex_mask || !SvOK(lex_mask) )
1872 /* overloading lexically disabled */
1874 else if ( lex_mask && SvPOK(lex_mask) ) {
1875 /* we have an entry in the hints hash, check if method has been
1876 * masked by overloading.pm */
1878 const int offset = method / 8;
1879 const int bit = method % 8;
1880 char *pv = SvPV(lex_mask, len);
1882 /* Bit set, so this overloading operator is disabled */
1883 if ( (STRLEN)offset < len && pv[offset] & ( 1 << bit ) )
1888 if (!(AMGf_noleft & flags) && SvAMAGIC(left)
1889 && (stash = SvSTASH(SvRV(left)))
1890 && (mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table))
1891 && (ocvp = cvp = (AMT_AMAGIC((AMT*)mg->mg_ptr)
1892 ? (oamtp = amtp = (AMT*)mg->mg_ptr)->table
1894 && ((cv = cvp[off=method+assignshift])
1895 || (assign && amtp->fallback > AMGfallNEVER && /* fallback to
1901 cv = cvp[off=method])))) {
1902 lr = -1; /* Call method for left argument */
1904 if (cvp && amtp->fallback > AMGfallNEVER && flags & AMGf_unary) {
1907 /* look for substituted methods */
1908 /* In all the covered cases we should be called with assign==0. */
1912 if ((cv = cvp[off=add_ass_amg])
1913 || ((cv = cvp[off = add_amg]) && (force_cpy = 0, postpr = 1))) {
1914 right = &PL_sv_yes; lr = -1; assign = 1;
1919 if ((cv = cvp[off = subtr_ass_amg])
1920 || ((cv = cvp[off = subtr_amg]) && (force_cpy = 0, postpr=1))) {
1921 right = &PL_sv_yes; lr = -1; assign = 1;
1925 (void)((cv = cvp[off=numer_amg]) || (cv = cvp[off=string_amg]));
1928 (void)((cv = cvp[off=string_amg]) || (cv = cvp[off=bool__amg]));
1931 (void)((cv = cvp[off=numer_amg]) || (cv = cvp[off=bool__amg]));
1934 (void)((cv = cvp[off=bool__amg])
1935 || (cv = cvp[off=numer_amg])
1936 || (cv = cvp[off=string_amg]));
1942 * SV* ref causes confusion with the interpreter variable of
1945 SV* const tmpRef=SvRV(left);
1946 if (!SvROK(tmpRef) && SvTYPE(tmpRef) <= SVt_PVMG) {
1948 * Just to be extra cautious. Maybe in some
1949 * additional cases sv_setsv is safe, too.
1951 SV* const newref = newSVsv(tmpRef);
1952 SvOBJECT_on(newref);
1953 /* As a bit of a source compatibility hack, SvAMAGIC() and
1954 friends dereference an RV, to behave the same was as when
1955 overloading was stored on the reference, not the referant.
1956 Hence we can't use SvAMAGIC_on()
1958 SvFLAGS(newref) |= SVf_AMAGIC;
1959 SvSTASH_set(newref, MUTABLE_HV(SvREFCNT_inc(SvSTASH(tmpRef))));
1965 if ((cvp[off1=lt_amg] || cvp[off1=ncmp_amg])
1966 && ((cv = cvp[off=neg_amg]) || (cv = cvp[off=subtr_amg]))) {
1967 SV* const nullsv=sv_2mortal(newSViv(0));
1969 SV* const lessp = amagic_call(left,nullsv,
1970 lt_amg,AMGf_noright);
1971 logic = SvTRUE(lessp);
1973 SV* const lessp = amagic_call(left,nullsv,
1974 ncmp_amg,AMGf_noright);
1975 logic = (SvNV(lessp) < 0);
1978 if (off==subtr_amg) {
1989 if ((cv = cvp[off=subtr_amg])) {
1991 left = sv_2mortal(newSViv(0));
1996 case iter_amg: /* XXXX Eventually should do to_gv. */
1997 case ftest_amg: /* XXXX Eventually should do to_gv. */
1999 return NULL; /* Delegate operation to standard mechanisms. */
2007 return left; /* Delegate operation to standard mechanisms. */
2012 if (!cv) goto not_found;
2013 } else if (!(AMGf_noright & flags) && SvAMAGIC(right)
2014 && (stash = SvSTASH(SvRV(right)))
2015 && (mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table))
2016 && (cvp = (AMT_AMAGIC((AMT*)mg->mg_ptr)
2017 ? (amtp = (AMT*)mg->mg_ptr)->table
2019 && (cv = cvp[off=method])) { /* Method for right
2022 } else if (((ocvp && oamtp->fallback > AMGfallNEVER
2023 && (cvp=ocvp) && (lr = -1))
2024 || (cvp && amtp->fallback > AMGfallNEVER && (lr=1)))
2025 && !(flags & AMGf_unary)) {
2026 /* We look for substitution for
2027 * comparison operations and
2029 if (method==concat_amg || method==concat_ass_amg
2030 || method==repeat_amg || method==repeat_ass_amg) {
2031 return NULL; /* Delegate operation to string conversion */
2041 postpr = 1; off=ncmp_amg; break;
2048 postpr = 1; off=scmp_amg; break;
2050 if (off != -1) cv = cvp[off];
2055 not_found: /* No method found, either report or croak */
2076 return left; /* Delegate operation to standard mechanisms. */
2079 if (ocvp && (cv=ocvp[nomethod_amg])) { /* Call report method */
2080 notfound = 1; lr = -1;
2081 } else if (cvp && (cv=cvp[nomethod_amg])) {
2082 notfound = 1; lr = 1;
2083 } else if ((amtp && amtp->fallback >= AMGfallYES) && !DEBUG_o_TEST) {
2084 /* Skip generating the "no method found" message. */
2088 if (off==-1) off=method;
2089 msg = sv_2mortal(Perl_newSVpvf(aTHX_
2090 "Operation \"%s\": no method found,%sargument %s%s%s%s",
2091 AMG_id2name(method + assignshift),
2092 (flags & AMGf_unary ? " " : "\n\tleft "),
2094 "in overloaded package ":
2095 "has no overloaded magic",
2097 HvNAME_get(SvSTASH(SvRV(left))):
2100 ",\n\tright argument in overloaded package ":
2103 : ",\n\tright argument has no overloaded magic"),
2105 HvNAME_get(SvSTASH(SvRV(right))):
2107 if (amtp && amtp->fallback >= AMGfallYES) {
2108 DEBUG_o( Perl_deb(aTHX_ "%s", SvPVX_const(msg)) );
2110 Perl_croak(aTHX_ "%"SVf, SVfARG(msg));
2114 force_cpy = force_cpy || assign;
2119 DEBUG_o(Perl_deb(aTHX_
2120 "Overloaded operator \"%s\"%s%s%s:\n\tmethod%s found%s in package %s%s\n",
2122 method+assignshift==off? "" :
2124 method+assignshift==off? "" :
2125 AMG_id2name(method+assignshift),
2126 method+assignshift==off? "" : "\")",
2127 flags & AMGf_unary? "" :
2128 lr==1 ? " for right argument": " for left argument",
2129 flags & AMGf_unary? " for argument" : "",
2130 stash ? HvNAME_get(stash) : "null",
2131 fl? ",\n\tassignment variant used": "") );
2134 /* Since we use shallow copy during assignment, we need
2135 * to dublicate the contents, probably calling user-supplied
2136 * version of copy operator
2138 /* We need to copy in following cases:
2139 * a) Assignment form was called.
2140 * assignshift==1, assign==T, method + 1 == off
2141 * b) Increment or decrement, called directly.
2142 * assignshift==0, assign==0, method + 0 == off
2143 * c) Increment or decrement, translated to assignment add/subtr.
2144 * assignshift==0, assign==T,
2146 * d) Increment or decrement, translated to nomethod.
2147 * assignshift==0, assign==0,
2149 * e) Assignment form translated to nomethod.
2150 * assignshift==1, assign==T, method + 1 != off
2153 /* off is method, method+assignshift, or a result of opcode substitution.
2154 * In the latter case assignshift==0, so only notfound case is important.
2156 if (( (method + assignshift == off)
2157 && (assign || (method == inc_amg) || (method == dec_amg)))
2164 const bool oldcatch = CATCH_GET;
2167 Zero(&myop, 1, BINOP);
2168 myop.op_last = (OP *) &myop;
2169 myop.op_next = NULL;
2170 myop.op_flags = OPf_WANT_SCALAR | OPf_STACKED;
2172 PUSHSTACKi(PERLSI_OVERLOAD);
2175 PL_op = (OP *) &myop;
2176 if (PERLDB_SUB && PL_curstash != PL_debstash)
2177 PL_op->op_private |= OPpENTERSUB_DB;
2181 EXTEND(SP, notfound + 5);
2182 PUSHs(lr>0? right: left);
2183 PUSHs(lr>0? left: right);
2184 PUSHs( lr > 0 ? &PL_sv_yes : ( assign ? &PL_sv_undef : &PL_sv_no ));
2186 PUSHs(newSVpvn_flags(AMG_id2name(method + assignshift),
2187 AMG_id2namelen(method + assignshift), SVs_TEMP));
2189 PUSHs(MUTABLE_SV(cv));
2192 if ((PL_op = PL_ppaddr[OP_ENTERSUB](aTHX)))
2200 CATCH_SET(oldcatch);
2207 ans=SvIV(res)<=0; break;
2210 ans=SvIV(res)<0; break;
2213 ans=SvIV(res)>=0; break;
2216 ans=SvIV(res)>0; break;
2219 ans=SvIV(res)==0; break;
2222 ans=SvIV(res)!=0; break;
2225 SvSetSV(left,res); return left;
2227 ans=!SvTRUE(res); break;
2232 } else if (method==copy_amg) {
2234 Perl_croak(aTHX_ "Copy method did not return a reference");
2236 return SvREFCNT_inc(SvRV(res));
2244 =for apidoc is_gv_magical_sv
2246 Returns C<TRUE> if given the name of a magical GV.
2248 Currently only useful internally when determining if a GV should be
2249 created even in rvalue contexts.
2251 C<flags> is not used at present but available for future extension to
2252 allow selecting particular classes of magical variable.
2254 Currently assumes that C<name> is NUL terminated (as well as len being valid).
2255 This assumption is met by all callers within the perl core, which all pass
2256 pointers returned by SvPV.
2262 Perl_is_gv_magical_sv(pTHX_ SV *const name_sv, U32 flags)
2265 const char *const name = SvPV_const(name_sv, len);
2267 PERL_UNUSED_ARG(flags);
2268 PERL_ARGS_ASSERT_IS_GV_MAGICAL_SV;
2271 const char * const name1 = name + 1;
2274 if (len == 3 && name[1] == 'S' && name[2] == 'A')
2278 if (len == 8 && strEQ(name1, "VERLOAD"))
2282 if (len == 3 && name[1] == 'I' && name[2] == 'G')
2285 /* Using ${^...} variables is likely to be sufficiently rare that
2286 it seems sensible to avoid the space hit of also checking the
2288 case '\017': /* ${^OPEN} */
2289 if (strEQ(name1, "PEN"))
2292 case '\024': /* ${^TAINT} */
2293 if (strEQ(name1, "AINT"))
2296 case '\025': /* ${^UNICODE} */
2297 if (strEQ(name1, "NICODE"))
2299 if (strEQ(name1, "TF8LOCALE"))
2302 case '\027': /* ${^WARNING_BITS} */
2303 if (strEQ(name1, "ARNING_BITS"))
2316 const char *end = name + len;
2317 while (--end > name) {
2325 /* Because we're already assuming that name is NUL terminated
2326 below, we can treat an empty name as "\0" */
2352 case '\001': /* $^A */
2353 case '\003': /* $^C */
2354 case '\004': /* $^D */
2355 case '\005': /* $^E */
2356 case '\006': /* $^F */
2357 case '\010': /* $^H */
2358 case '\011': /* $^I, NOT \t in EBCDIC */
2359 case '\014': /* $^L */
2360 case '\016': /* $^N */
2361 case '\017': /* $^O */
2362 case '\020': /* $^P */
2363 case '\023': /* $^S */
2364 case '\024': /* $^T */
2365 case '\026': /* $^V */
2366 case '\027': /* $^W */
2386 Perl_gv_name_set(pTHX_ GV *gv, const char *name, U32 len, U32 flags)
2391 PERL_ARGS_ASSERT_GV_NAME_SET;
2392 PERL_UNUSED_ARG(flags);
2395 Perl_croak(aTHX_ "panic: gv name too long (%"UVuf")", (UV) len);
2397 if (!(flags & GV_ADD) && GvNAME_HEK(gv)) {
2398 unshare_hek(GvNAME_HEK(gv));
2401 PERL_HASH(hash, name, len);
2402 GvNAME_HEK(gv) = share_hek(name, len, hash);
2407 * c-indentation-style: bsd
2409 * indent-tabs-mode: t
2412 * ex: set ts=8 sts=4 sw=4 noet: