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.
42 static const char S_autoload[] = "AUTOLOAD";
43 static const STRLEN S_autolen = sizeof(S_autoload)-1;
46 Perl_gv_add_by_type(pTHX_ GV *gv, svtype type)
53 SvTYPE((const SV *)gv) != SVt_PVGV
54 && SvTYPE((const SV *)gv) != SVt_PVLV
58 if (type == SVt_PVIO) {
60 * if it walks like a dirhandle, then let's assume that
61 * this is a dirhandle.
63 what = OP_IS_DIRHOP(PL_op->op_type) ?
64 "dirhandle" : "filehandle";
65 } else if (type == SVt_PVHV) {
68 what = type == SVt_PVAV ? "array" : "scalar";
70 /* diag_listed_as: Bad symbol for filehandle */
71 Perl_croak(aTHX_ "Bad symbol for %s", what);
74 if (type == SVt_PVHV) {
75 where = (SV **)&GvHV(gv);
76 } else if (type == SVt_PVAV) {
77 where = (SV **)&GvAV(gv);
78 } else if (type == SVt_PVIO) {
79 where = (SV **)&GvIOp(gv);
86 *where = newSV_type(type);
87 if (type == SVt_PVAV && GvNAMELEN(gv) == 3
88 && strnEQ(GvNAME(gv), "ISA", 3))
89 sv_magic(*where, (SV *)gv, PERL_MAGIC_isa, NULL, 0);
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);
134 if ((PERLDB_LINE || PERLDB_SAVESRC) && !GvAV(gv))
135 hv_magic(GvHVn(gv), GvAVn(gv), 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) && SvTYPE(SvRV(gv)) != SVt_PVAV ? SvRV(gv) : NULL;
163 Perl_newGP(pTHX_ GV *const gv)
174 PERL_ARGS_ASSERT_NEWGP;
176 gp->gp_egv = gv; /* allow compiler to reuse gv after this */
177 #ifndef PERL_DONT_CREATE_GVSV
178 gp->gp_sv = newSV(0);
181 /* PL_curcop may be null here. E.g.,
182 INIT { bless {} and exit }
183 frees INIT before looking up DESTROY (and creating *DESTROY)
186 gp->gp_line = CopLINE(PL_curcop); /* 0 otherwise Newxz */
188 if (CopFILE(PL_curcop)) {
189 file = CopFILE(PL_curcop);
193 filegv = CopFILEGV(PL_curcop);
195 file = GvNAME(filegv)+2;
196 len = GvNAMELEN(filegv)-2;
207 PERL_HASH(hash, file, len);
208 gp->gp_file_hek = share_hek(file, len, hash);
214 /* Assign CvGV(cv) = gv, handling weak references.
215 * See also S_anonymise_cv_maybe */
218 Perl_cvgv_set(pTHX_ CV* cv, GV* gv)
220 GV * const oldgv = CvGV(cv);
222 PERL_ARGS_ASSERT_CVGV_SET;
229 SvREFCNT_dec_NN(oldgv);
233 sv_del_backref(MUTABLE_SV(oldgv), MUTABLE_SV(cv));
236 else if ((hek = CvNAME_HEK(cv))) unshare_hek(hek);
238 SvANY(cv)->xcv_gv_u.xcv_gv = gv;
239 assert(!CvCVGV_RC(cv));
244 if (isGV_with_GP(gv) && GvGP(gv) && (GvCV(gv) == cv || GvFORM(gv) == cv))
245 Perl_sv_add_backref(aTHX_ MUTABLE_SV(gv), MUTABLE_SV(cv));
248 SvREFCNT_inc_simple_void_NN(gv);
252 /* Assign CvSTASH(cv) = st, handling weak references. */
255 Perl_cvstash_set(pTHX_ CV *cv, HV *st)
257 HV *oldst = CvSTASH(cv);
258 PERL_ARGS_ASSERT_CVSTASH_SET;
262 sv_del_backref(MUTABLE_SV(oldst), MUTABLE_SV(cv));
263 SvANY(cv)->xcv_stash = st;
265 Perl_sv_add_backref(aTHX_ MUTABLE_SV(st), MUTABLE_SV(cv));
269 =for apidoc gv_init_pvn
271 Converts a scalar into a typeglob. This is an incoercible typeglob;
272 assigning a reference to it will assign to one of its slots, instead of
273 overwriting it as happens with typeglobs created by SvSetSV. Converting
274 any scalar that is SvOK() may produce unpredictable results and is reserved
275 for perl's internal use.
277 C<gv> is the scalar to be converted.
279 C<stash> is the parent stash/package, if any.
281 C<name> and C<len> give the name. The name must be unqualified;
282 that is, it must not include the package name. If C<gv> is a
283 stash element, it is the caller's responsibility to ensure that the name
284 passed to this function matches the name of the element. If it does not
285 match, perl's internal bookkeeping will get out of sync.
287 C<flags> can be set to SVf_UTF8 if C<name> is a UTF8 string, or
288 the return value of SvUTF8(sv). It can also take the
289 GV_ADDMULTI flag, which means to pretend that the GV has been
290 seen before (i.e., suppress "Used once" warnings).
294 The old form of gv_init_pvn(). It does not work with UTF8 strings, as it
295 has no flags parameter. If the C<multi> parameter is set, the
296 GV_ADDMULTI flag will be passed to gv_init_pvn().
298 =for apidoc gv_init_pv
300 Same as gv_init_pvn(), but takes a nul-terminated string for the name
301 instead of separate char * and length parameters.
303 =for apidoc gv_init_sv
305 Same as gv_init_pvn(), but takes an SV * for the name instead of separate
306 char * and length parameters. C<flags> is currently unused.
312 Perl_gv_init_sv(pTHX_ GV *gv, HV *stash, SV* namesv, U32 flags)
316 PERL_ARGS_ASSERT_GV_INIT_SV;
317 namepv = SvPV(namesv, namelen);
320 gv_init_pvn(gv, stash, namepv, namelen, flags);
324 Perl_gv_init_pv(pTHX_ GV *gv, HV *stash, const char *name, U32 flags)
326 PERL_ARGS_ASSERT_GV_INIT_PV;
327 gv_init_pvn(gv, stash, name, strlen(name), flags);
331 Perl_gv_init_pvn(pTHX_ GV *gv, HV *stash, const char *name, STRLEN len, U32 flags)
334 const U32 old_type = SvTYPE(gv);
335 const bool doproto = old_type > SVt_NULL;
336 char * const proto = (doproto && SvPOK(gv))
337 ? ((void)(SvIsCOW(gv) && (sv_force_normal((SV *)gv), 0)), SvPVX(gv))
339 const STRLEN protolen = proto ? SvCUR(gv) : 0;
340 const U32 proto_utf8 = proto ? SvUTF8(gv) : 0;
341 SV *const has_constant = doproto && SvROK(gv) ? SvRV(gv) : NULL;
342 const U32 exported_constant = has_constant ? SvPCS_IMPORTED(gv) : 0;
344 PERL_ARGS_ASSERT_GV_INIT_PVN;
345 assert (!(proto && has_constant));
348 /* The constant has to be a simple scalar type. */
349 switch (SvTYPE(has_constant)) {
354 Perl_croak(aTHX_ "Cannot convert a reference to %s to typeglob",
355 sv_reftype(has_constant, 0));
363 if (old_type < SVt_PVGV) {
364 if (old_type >= SVt_PV)
366 sv_upgrade(MUTABLE_SV(gv), SVt_PVGV);
374 Safefree(SvPVX_mutable(gv));
379 GvGP_set(gv, Perl_newGP(aTHX_ gv));
382 Perl_sv_add_backref(aTHX_ MUTABLE_SV(stash), MUTABLE_SV(gv));
383 gv_name_set(gv, name, len, GV_ADD | ( flags & SVf_UTF8 ? SVf_UTF8 : 0 ));
384 if (flags & GV_ADDMULTI || doproto) /* doproto means it */
385 GvMULTI_on(gv); /* _was_ mentioned */
389 /* newCONSTSUB takes ownership of the reference from us. */
390 cv = newCONSTSUB_flags(stash, name, len, flags, has_constant);
391 /* In case op.c:S_process_special_blocks stole it: */
393 GvCV_set(gv, (CV *)SvREFCNT_inc_simple_NN(cv));
394 assert(GvCV(gv) == cv); /* newCONSTSUB should have set this */
395 /* If this reference was a copy of another, then the subroutine
396 must have been "imported", by a Perl space assignment to a GV
397 from a reference to CV. */
398 if (exported_constant)
399 GvIMPORTED_CV_on(gv);
400 CvSTASH_set(cv, PL_curstash); /* XXX Why is this needed? */
405 sv_usepvn_flags(MUTABLE_SV(cv), proto, protolen,
406 SV_HAS_TRAILING_NUL);
407 if ( proto_utf8 ) SvUTF8_on(MUTABLE_SV(cv));
413 S_gv_init_svtype(pTHX_ GV *gv, const svtype sv_type)
415 PERL_ARGS_ASSERT_GV_INIT_SVTYPE;
427 #ifdef PERL_DONT_CREATE_GVSV
435 /* Work round what appears to be a bug in Sun C++ 5.8 2005/10/13
436 If we just cast GvSVn(gv) to void, it ignores evaluating it for
443 static void core_xsub(pTHX_ CV* cv);
446 S_maybe_add_coresub(pTHX_ HV * const stash, GV *gv,
447 const char * const name, const STRLEN len)
449 const int code = keyword(name, len, 1);
450 static const char file[] = __FILE__;
451 CV *cv, *oldcompcv = NULL;
453 bool ampable = TRUE; /* &{}-able */
454 COP *oldcurcop = NULL;
455 yy_parser *oldparser = NULL;
456 I32 oldsavestack_ix = 0;
461 if (!code) return NULL; /* Not a keyword */
462 switch (code < 0 ? -code : code) {
463 /* no support for \&CORE::infix;
464 no support for funcs that do not parse like funcs */
465 case KEY___DATA__: case KEY___END__: case KEY_and: case KEY_AUTOLOAD:
466 case KEY_BEGIN : case KEY_CHECK : case KEY_cmp: case KEY_CORE :
467 case KEY_default : case KEY_DESTROY:
468 case KEY_do : case KEY_dump : case KEY_else : case KEY_elsif :
469 case KEY_END : case KEY_eq : case KEY_eval :
470 case KEY_for : case KEY_foreach: case KEY_format: case KEY_ge :
471 case KEY_given : case KEY_goto : case KEY_grep :
472 case KEY_gt : case KEY_if: case KEY_INIT: case KEY_last: case KEY_le:
473 case KEY_local: case KEY_lt: case KEY_m : case KEY_map : case KEY_my:
474 case KEY_ne : case KEY_next : case KEY_no: case KEY_or: case KEY_our:
475 case KEY_package: case KEY_print: case KEY_printf:
476 case KEY_q : case KEY_qq : case KEY_qr : case KEY_qw :
477 case KEY_qx : case KEY_redo : case KEY_require: case KEY_return:
478 case KEY_s : case KEY_say : case KEY_sort :
479 case KEY_state: case KEY_sub :
480 case KEY_tr : case KEY_UNITCHECK: case KEY_unless:
481 case KEY_until: case KEY_use : case KEY_when : case KEY_while :
482 case KEY_x : case KEY_xor : case KEY_y :
485 case KEY_chomp: case KEY_chop: case KEY_defined: case KEY_delete:
486 case KEY_each : case KEY_eof : case KEY_exec : case KEY_exists:
492 case KEY_splice: case KEY_split:
495 case KEY_truncate: case KEY_unlink:
502 gv_init(gv, stash, name, len, TRUE);
507 oldcurcop = PL_curcop;
508 oldparser = PL_parser;
509 lex_start(NULL, NULL, 0);
510 oldcompcv = PL_compcv;
511 PL_compcv = NULL; /* Prevent start_subparse from setting
513 oldsavestack_ix = start_subparse(FALSE,0);
517 /* Avoid calling newXS, as it calls us, and things start to
519 cv = MUTABLE_CV(newSV_type(SVt_PVCV));
522 mro_method_changed_in(GvSTASH(gv));
524 CvXSUB(cv) = core_xsub;
526 CvGV_set(cv, gv); /* This stops new ATTRSUB from setting CvFILE
528 (void)gv_fetchfile(file);
529 CvFILE(cv) = (char *)file;
530 /* XXX This is inefficient, as doing things this order causes
531 a prototype check in newATTRSUB. But we have to do
532 it this order as we need an op number before calling
534 (void)core_prototype((SV *)cv, name, code, &opnum);
536 (void)hv_store(stash,name,len,(SV *)gv,0);
542 /* newATTRSUB will free the CV and return NULL if we're still
543 compiling after a syntax error */
544 if ((cv = newATTRSUB_flags(
545 oldsavestack_ix, (OP *)gv,
550 : newSVpvn(name,len),
555 assert(GvCV(gv) == orig_cv);
556 if (opnum != OP_VEC && opnum != OP_SUBSTR && opnum != OP_POS
557 && opnum != OP_UNDEF)
558 CvLVALUE_off(cv); /* Now *that* was a neat trick. */
561 PL_parser = oldparser;
562 PL_curcop = oldcurcop;
563 PL_compcv = oldcompcv;
566 SV *opnumsv = opnum ? newSVuv((UV)opnum) : (SV *)NULL;
568 cv, Perl_ck_entersub_args_core, opnumsv ? opnumsv : (SV *)cv
570 SvREFCNT_dec(opnumsv);
577 =for apidoc gv_fetchmeth
579 Like L</gv_fetchmeth_pvn>, but lacks a flags parameter.
581 =for apidoc gv_fetchmeth_sv
583 Exactly like L</gv_fetchmeth_pvn>, but takes the name string in the form
584 of an SV instead of a string/length pair.
590 Perl_gv_fetchmeth_sv(pTHX_ HV *stash, SV *namesv, I32 level, U32 flags)
594 PERL_ARGS_ASSERT_GV_FETCHMETH_SV;
595 namepv = SvPV(namesv, namelen);
598 return gv_fetchmeth_pvn(stash, namepv, namelen, level, flags);
602 =for apidoc gv_fetchmeth_pv
604 Exactly like L</gv_fetchmeth_pvn>, but takes a nul-terminated string
605 instead of a string/length pair.
611 Perl_gv_fetchmeth_pv(pTHX_ HV *stash, const char *name, I32 level, U32 flags)
613 PERL_ARGS_ASSERT_GV_FETCHMETH_PV;
614 return gv_fetchmeth_pvn(stash, name, strlen(name), level, flags);
618 =for apidoc gv_fetchmeth_pvn
620 Returns the glob with the given C<name> and a defined subroutine or
621 C<NULL>. The glob lives in the given C<stash>, or in the stashes
622 accessible via @ISA and UNIVERSAL::.
624 The argument C<level> should be either 0 or -1. If C<level==0>, as a
625 side-effect creates a glob with the given C<name> in the given C<stash>
626 which in the case of success contains an alias for the subroutine, and sets
627 up caching info for this glob.
629 The only significant values for C<flags> are GV_SUPER and SVf_UTF8.
631 GV_SUPER indicates that we want to look up the method in the superclasses
635 GV returned from C<gv_fetchmeth> may be a method cache entry, which is not
636 visible to Perl code. So when calling C<call_sv>, you should not use
637 the GV directly; instead, you should use the method's CV, which can be
638 obtained from the GV with the C<GvCV> macro.
643 /* NOTE: No support for tied ISA */
646 Perl_gv_fetchmeth_pvn(pTHX_ HV *stash, const char *name, STRLEN len, I32 level, U32 flags)
653 HV* cstash, *cachestash;
654 GV* candidate = NULL;
658 I32 create = (level >= 0) ? 1 : 0;
661 U32 is_utf8 = flags & SVf_UTF8;
663 PERL_ARGS_ASSERT_GV_FETCHMETH_PVN;
665 /* UNIVERSAL methods should be callable without a stash */
667 create = 0; /* probably appropriate */
668 if(!(stash = gv_stashpvs("UNIVERSAL", 0)))
674 hvname = HvNAME_get(stash);
676 Perl_croak(aTHX_ "Can't use anonymous symbol table for method lookup");
681 DEBUG_o( Perl_deb(aTHX_ "Looking for %smethod %s in package %s\n",
682 flags & GV_SUPER ? "SUPER " : "",name,hvname) );
684 topgen_cmp = HvMROMETA(stash)->cache_gen + PL_sub_generation;
686 if (flags & GV_SUPER) {
687 if (!HvAUX(stash)->xhv_mro_meta->super)
688 HvAUX(stash)->xhv_mro_meta->super = newHV();
689 cachestash = HvAUX(stash)->xhv_mro_meta->super;
691 else cachestash = stash;
693 /* check locally for a real method or a cache entry */
694 gvp = (GV**)hv_fetch(cachestash, name, is_utf8 ? -(I32)len : (I32)len,
700 if (SvTYPE(topgv) != SVt_PVGV)
701 gv_init_pvn(topgv, stash, name, len, GV_ADDMULTI|is_utf8);
702 if ((cand_cv = GvCV(topgv))) {
703 /* If genuine method or valid cache entry, use it */
704 if (!GvCVGEN(topgv) || GvCVGEN(topgv) == topgen_cmp) {
708 /* stale cache entry, junk it and move on */
709 SvREFCNT_dec_NN(cand_cv);
710 GvCV_set(topgv, NULL);
715 else if (GvCVGEN(topgv) == topgen_cmp) {
716 /* cache indicates no such method definitively */
719 else if (stash == cachestash
720 && len > 1 /* shortest is uc */ && HvNAMELEN_get(stash) == 4
721 && strnEQ(hvname, "CORE", 4)
722 && S_maybe_add_coresub(aTHX_ NULL,topgv,name,len))
726 linear_av = mro_get_linear_isa(stash); /* has ourselves at the top of the list */
727 linear_svp = AvARRAY(linear_av) + 1; /* skip over self */
728 items = AvFILLp(linear_av); /* no +1, to skip over self */
730 linear_sv = *linear_svp++;
732 cstash = gv_stashsv(linear_sv, 0);
735 Perl_ck_warner(aTHX_ packWARN(WARN_SYNTAX),
736 "Can't locate package %"SVf" for @%"HEKf"::ISA",
738 HEKfARG(HvNAME_HEK(stash)));
744 gvp = (GV**)hv_fetch(cstash, name, is_utf8 ? -(I32)len : (I32)len, 0);
746 if (len > 1 && HvNAMELEN_get(cstash) == 4) {
747 const char *hvname = HvNAME(cstash); assert(hvname);
748 if (strnEQ(hvname, "CORE", 4)
750 S_maybe_add_coresub(aTHX_ cstash,NULL,name,len)
756 else candidate = *gvp;
759 if (SvTYPE(candidate) != SVt_PVGV)
760 gv_init_pvn(candidate, cstash, name, len, GV_ADDMULTI|is_utf8);
761 if (SvTYPE(candidate) == SVt_PVGV && (cand_cv = GvCV(candidate)) && !GvCVGEN(candidate)) {
763 * Found real method, cache method in topgv if:
764 * 1. topgv has no synonyms (else inheritance crosses wires)
765 * 2. method isn't a stub (else AUTOLOAD fails spectacularly)
767 if (topgv && (GvREFCNT(topgv) == 1) && (CvROOT(cand_cv) || CvXSUB(cand_cv))) {
768 CV *old_cv = GvCV(topgv);
769 SvREFCNT_dec(old_cv);
770 SvREFCNT_inc_simple_void_NN(cand_cv);
771 GvCV_set(topgv, cand_cv);
772 GvCVGEN(topgv) = topgen_cmp;
778 /* Check UNIVERSAL without caching */
779 if(level == 0 || level == -1) {
780 candidate = gv_fetchmeth_pvn(NULL, name, len, 1, flags &~GV_SUPER);
782 cand_cv = GvCV(candidate);
783 if (topgv && (GvREFCNT(topgv) == 1) && (CvROOT(cand_cv) || CvXSUB(cand_cv))) {
784 CV *old_cv = GvCV(topgv);
785 SvREFCNT_dec(old_cv);
786 SvREFCNT_inc_simple_void_NN(cand_cv);
787 GvCV_set(topgv, cand_cv);
788 GvCVGEN(topgv) = topgen_cmp;
794 if (topgv && GvREFCNT(topgv) == 1) {
795 /* cache the fact that the method is not defined */
796 GvCVGEN(topgv) = topgen_cmp;
803 =for apidoc gv_fetchmeth_autoload
805 This is the old form of L</gv_fetchmeth_pvn_autoload>, which has no flags
808 =for apidoc gv_fetchmeth_sv_autoload
810 Exactly like L</gv_fetchmeth_pvn_autoload>, but takes the name string in the form
811 of an SV instead of a string/length pair.
817 Perl_gv_fetchmeth_sv_autoload(pTHX_ HV *stash, SV *namesv, I32 level, U32 flags)
821 PERL_ARGS_ASSERT_GV_FETCHMETH_SV_AUTOLOAD;
822 namepv = SvPV(namesv, namelen);
825 return gv_fetchmeth_pvn_autoload(stash, namepv, namelen, level, flags);
829 =for apidoc gv_fetchmeth_pv_autoload
831 Exactly like L</gv_fetchmeth_pvn_autoload>, but takes a nul-terminated string
832 instead of a string/length pair.
838 Perl_gv_fetchmeth_pv_autoload(pTHX_ HV *stash, const char *name, I32 level, U32 flags)
840 PERL_ARGS_ASSERT_GV_FETCHMETH_PV_AUTOLOAD;
841 return gv_fetchmeth_pvn_autoload(stash, name, strlen(name), level, flags);
845 =for apidoc gv_fetchmeth_pvn_autoload
847 Same as gv_fetchmeth_pvn(), but looks for autoloaded subroutines too.
848 Returns a glob for the subroutine.
850 For an autoloaded subroutine without a GV, will create a GV even
851 if C<level < 0>. For an autoloaded subroutine without a stub, GvCV()
852 of the result may be zero.
854 Currently, the only significant value for C<flags> is SVf_UTF8.
860 Perl_gv_fetchmeth_pvn_autoload(pTHX_ HV *stash, const char *name, STRLEN len, I32 level, U32 flags)
862 GV *gv = gv_fetchmeth_pvn(stash, name, len, level, flags);
864 PERL_ARGS_ASSERT_GV_FETCHMETH_PVN_AUTOLOAD;
871 return NULL; /* UNIVERSAL::AUTOLOAD could cause trouble */
872 if (len == S_autolen && memEQ(name, S_autoload, S_autolen))
874 if (!(gv = gv_fetchmeth_pvn(stash, S_autoload, S_autolen, FALSE, flags)))
877 if (!(CvROOT(cv) || CvXSUB(cv)))
879 /* Have an autoload */
880 if (level < 0) /* Cannot do without a stub */
881 gv_fetchmeth_pvn(stash, name, len, 0, flags);
882 gvp = (GV**)hv_fetch(stash, name,
883 (flags & SVf_UTF8) ? -(I32)len : (I32)len, (level >= 0));
892 =for apidoc gv_fetchmethod_autoload
894 Returns the glob which contains the subroutine to call to invoke the method
895 on the C<stash>. In fact in the presence of autoloading this may be the
896 glob for "AUTOLOAD". In this case the corresponding variable $AUTOLOAD is
899 The third parameter of C<gv_fetchmethod_autoload> determines whether
900 AUTOLOAD lookup is performed if the given method is not present: non-zero
901 means yes, look for AUTOLOAD; zero means no, don't look for AUTOLOAD.
902 Calling C<gv_fetchmethod> is equivalent to calling C<gv_fetchmethod_autoload>
903 with a non-zero C<autoload> parameter.
905 These functions grant C<"SUPER"> token
906 as a prefix of the method name. Note
907 that if you want to keep the returned glob for a long time, you need to
908 check for it being "AUTOLOAD", since at the later time the call may load a
909 different subroutine due to $AUTOLOAD changing its value. Use the glob
910 created as a side effect to do this.
912 These functions have the same side-effects as C<gv_fetchmeth> with
913 C<level==0>. The warning against passing the GV returned by
914 C<gv_fetchmeth> to C<call_sv> applies equally to these functions.
920 Perl_gv_fetchmethod_autoload(pTHX_ HV *stash, const char *name, I32 autoload)
922 PERL_ARGS_ASSERT_GV_FETCHMETHOD_AUTOLOAD;
924 return gv_fetchmethod_flags(stash, name, autoload ? GV_AUTOLOAD : 0);
928 Perl_gv_fetchmethod_sv_flags(pTHX_ HV *stash, SV *namesv, U32 flags)
932 PERL_ARGS_ASSERT_GV_FETCHMETHOD_SV_FLAGS;
933 namepv = SvPV(namesv, namelen);
936 return gv_fetchmethod_pvn_flags(stash, namepv, namelen, flags);
940 Perl_gv_fetchmethod_pv_flags(pTHX_ HV *stash, const char *name, U32 flags)
942 PERL_ARGS_ASSERT_GV_FETCHMETHOD_PV_FLAGS;
943 return gv_fetchmethod_pvn_flags(stash, name, strlen(name), flags);
946 /* Don't merge this yet, as it's likely to get a len parameter, and possibly
949 Perl_gv_fetchmethod_pvn_flags(pTHX_ HV *stash, const char *name, const STRLEN len, U32 flags)
953 const char *nsplit = NULL;
956 const char * const origname = name;
957 SV *const error_report = MUTABLE_SV(stash);
958 const U32 autoload = flags & GV_AUTOLOAD;
959 const U32 do_croak = flags & GV_CROAK;
960 const U32 is_utf8 = flags & SVf_UTF8;
962 PERL_ARGS_ASSERT_GV_FETCHMETHOD_PVN_FLAGS;
964 if (SvTYPE(stash) < SVt_PVHV)
967 /* The only way stash can become NULL later on is if nsplit is set,
968 which in turn means that there is no need for a SVt_PVHV case
969 the error reporting code. */
972 for (nend = name; *nend || nend != (origname + len); nend++) {
977 else if (*nend == ':' && *(nend + 1) == ':') {
983 if ((nsplit - origname) == 5 && memEQ(origname, "SUPER", 5)) {
984 /* ->SUPER::method should really be looked up in original stash */
985 stash = CopSTASH(PL_curcop);
987 DEBUG_o( Perl_deb(aTHX_ "Treating %s as %s::%s\n",
988 origname, HvENAME_get(stash), name) );
990 else if ((nsplit - origname) >= 7 &&
991 strnEQ(nsplit - 7, "::SUPER", 7)) {
992 /* don't autovifify if ->NoSuchStash::SUPER::method */
993 stash = gv_stashpvn(origname, nsplit - origname - 7, is_utf8);
994 if (stash) flags |= GV_SUPER;
997 /* don't autovifify if ->NoSuchStash::method */
998 stash = gv_stashpvn(origname, nsplit - origname, is_utf8);
1003 gv = gv_fetchmeth_pvn(stash, name, nend - name, 0, flags);
1005 if (strEQ(name,"import") || strEQ(name,"unimport"))
1006 gv = MUTABLE_GV(&PL_sv_yes);
1008 gv = gv_autoload_pvn(
1009 ostash, name, nend - name, GV_AUTOLOAD_ISMETHOD|flags
1011 if (!gv && do_croak) {
1012 /* Right now this is exclusively for the benefit of S_method_common
1015 /* If we can't find an IO::File method, it might be a call on
1016 * a filehandle. If IO:File has not been loaded, try to
1017 * require it first instead of croaking */
1018 const char *stash_name = HvNAME_get(stash);
1019 if (stash_name && memEQs(stash_name, HvNAMELEN_get(stash), "IO::File")
1020 && !Perl_hv_common(aTHX_ GvHVn(PL_incgv), NULL,
1021 STR_WITH_LEN("IO/File.pm"), 0,
1022 HV_FETCH_ISEXISTS, NULL, 0)
1024 require_pv("IO/File.pm");
1025 gv = gv_fetchmeth_pvn(stash, name, nend - name, 0, flags);
1030 "Can't locate object method \"%"UTF8f
1031 "\" via package \"%"HEKf"\"",
1032 UTF8fARG(is_utf8, nend - name, name),
1033 HEKfARG(HvNAME_HEK(stash)));
1039 packnamesv = newSVpvn_flags(origname, nsplit - origname,
1040 SVs_TEMP | is_utf8);
1042 packnamesv = error_report;
1046 "Can't locate object method \"%"UTF8f
1047 "\" via package \"%"SVf"\""
1048 " (perhaps you forgot to load \"%"SVf"\"?)",
1049 UTF8fARG(is_utf8, nend - name, name),
1050 SVfARG(packnamesv), SVfARG(packnamesv));
1054 else if (autoload) {
1055 CV* const cv = GvCV(gv);
1056 if (!CvROOT(cv) && !CvXSUB(cv)) {
1060 if (CvANON(cv) || !CvGV(cv))
1064 if (GvCV(stubgv) != cv) /* orphaned import */
1067 autogv = gv_autoload_pvn(GvSTASH(stubgv),
1068 GvNAME(stubgv), GvNAMELEN(stubgv),
1069 GV_AUTOLOAD_ISMETHOD
1070 | (GvNAMEUTF8(stubgv) ? SVf_UTF8 : 0));
1080 Perl_gv_autoload_sv(pTHX_ HV *stash, SV* namesv, U32 flags)
1084 PERL_ARGS_ASSERT_GV_AUTOLOAD_SV;
1085 namepv = SvPV(namesv, namelen);
1088 return gv_autoload_pvn(stash, namepv, namelen, flags);
1092 Perl_gv_autoload_pv(pTHX_ HV *stash, const char *namepv, U32 flags)
1094 PERL_ARGS_ASSERT_GV_AUTOLOAD_PV;
1095 return gv_autoload_pvn(stash, namepv, strlen(namepv), flags);
1099 Perl_gv_autoload_pvn(pTHX_ HV *stash, const char *name, STRLEN len, U32 flags)
1107 SV *packname = NULL;
1108 U32 is_utf8 = flags & SVf_UTF8 ? SVf_UTF8 : 0;
1110 PERL_ARGS_ASSERT_GV_AUTOLOAD_PVN;
1112 if (len == S_autolen && memEQ(name, S_autoload, S_autolen))
1115 if (SvTYPE(stash) < SVt_PVHV) {
1116 STRLEN packname_len = 0;
1117 const char * const packname_ptr = SvPV_const(MUTABLE_SV(stash), packname_len);
1118 packname = newSVpvn_flags(packname_ptr, packname_len,
1119 SVs_TEMP | SvUTF8(stash));
1123 packname = sv_2mortal(newSVhek(HvNAME_HEK(stash)));
1124 if (flags & GV_SUPER) sv_catpvs(packname, "::SUPER");
1126 if (!(gv = gv_fetchmeth_pvn(stash, S_autoload, S_autolen, FALSE, is_utf8)))
1130 if (!(CvROOT(cv) || CvXSUB(cv)))
1134 * Inheriting AUTOLOAD for non-methods works ... for now.
1137 !(flags & GV_AUTOLOAD_ISMETHOD)
1138 && (GvCVGEN(gv) || GvSTASH(gv) != stash)
1140 Perl_ck_warner_d(aTHX_ packWARN(WARN_DEPRECATED),
1141 "Use of inherited AUTOLOAD for non-method %"SVf
1142 "::%"UTF8f"() is deprecated",
1144 UTF8fARG(is_utf8, len, name));
1147 /* Instead of forcing the XSUB do another lookup for $AUTOLOAD
1148 * and split that value on the last '::', pass along the same data
1149 * via the SvPVX field in the CV, and the stash in CvSTASH.
1151 * Due to an unfortunate accident of history, the SvPVX field
1152 * serves two purposes. It is also used for the subroutine's pro-
1153 * type. Since SvPVX has been documented as returning the sub name
1154 * for a long time, but not as returning the prototype, we have
1155 * to preserve the SvPVX AUTOLOAD behaviour and put the prototype
1158 * We put the prototype in the same allocated buffer, but after
1159 * the sub name. The SvPOK flag indicates the presence of a proto-
1160 * type. The CvAUTOLOAD flag indicates the presence of a sub name.
1161 * If both flags are on, then SvLEN is used to indicate the end of
1162 * the prototype (artificially lower than what is actually allo-
1163 * cated), at the risk of having to reallocate a few bytes unneces-
1164 * sarily--but that should happen very rarely, if ever.
1166 * We use SvUTF8 for both prototypes and sub names, so if one is
1167 * UTF8, the other must be upgraded.
1169 CvSTASH_set(cv, stash);
1170 if (SvPOK(cv)) { /* Ouch! */
1171 SV * const tmpsv = newSVpvn_flags(name, len, is_utf8);
1173 const char *proto = CvPROTO(cv);
1176 sv_utf8_upgrade_flags_grow(tmpsv, 0, CvPROTOLEN(cv) + 2);
1177 ulen = SvCUR(tmpsv);
1178 SvCUR(tmpsv)++; /* include null in string */
1180 tmpsv, proto, CvPROTOLEN(cv), SV_CATBYTES*!SvUTF8(cv)
1182 SvTEMP_on(tmpsv); /* Allow theft */
1183 sv_setsv_nomg((SV *)cv, tmpsv);
1185 SvREFCNT_dec_NN(tmpsv);
1186 SvLEN(cv) = SvCUR(cv) + 1;
1190 sv_setpvn((SV *)cv, name, len);
1194 else SvUTF8_off(cv);
1200 * Given &FOO::AUTOLOAD, set $FOO::AUTOLOAD to desired function name.
1201 * The subroutine's original name may not be "AUTOLOAD", so we don't
1202 * use that, but for lack of anything better we will use the sub's
1203 * original package to look up $AUTOLOAD.
1205 varstash = GvSTASH(CvGV(cv));
1206 vargv = *(GV**)hv_fetch(varstash, S_autoload, S_autolen, TRUE);
1210 gv_init_pvn(vargv, varstash, S_autoload, S_autolen, 0);
1211 #ifdef PERL_DONT_CREATE_GVSV
1212 GvSV(vargv) = newSV(0);
1216 varsv = GvSVn(vargv);
1217 SvTAINTED_off(varsv); /* previous $AUTOLOAD taint is obsolete */
1218 /* XXX: this process is not careful to avoid extra magic gets and sets; tied $AUTOLOAD will get noise */
1219 sv_setsv(varsv, packname);
1220 sv_catpvs(varsv, "::");
1221 /* Ensure SvSETMAGIC() is called if necessary. In particular, to clear
1222 tainting if $FOO::AUTOLOAD was previously tainted, but is not now. */
1225 SV_SMAGIC|(is_utf8 ? SV_CATUTF8 : SV_CATBYTES)
1233 /* require_tie_mod() internal routine for requiring a module
1234 * that implements the logic of automatic ties like %! and %-
1236 * The "gv" parameter should be the glob.
1237 * "varpv" holds the name of the var, used for error messages.
1238 * "namesv" holds the module name. Its refcount will be decremented.
1239 * "methpv" holds the method name to test for to check that things
1240 * are working reasonably close to as expected.
1241 * "flags": if flag & 1 then save the scalar before loading.
1242 * For the protection of $! to work (it is set by this routine)
1243 * the sv slot must already be magicalized.
1246 S_require_tie_mod(pTHX_ GV *gv, const char *varpv, SV* namesv, const char *methpv,const U32 flags)
1249 HV* stash = gv_stashsv(namesv, 0);
1251 PERL_ARGS_ASSERT_REQUIRE_TIE_MOD;
1253 if (!stash || !(gv_fetchmethod_autoload(stash, methpv, FALSE))) {
1254 SV *module = newSVsv(namesv);
1255 char varname = *varpv; /* varpv might be clobbered by load_module,
1256 so save it. For the moment it's always
1258 const char type = varname == '[' ? '$' : '%';
1264 PUSHSTACKi(PERLSI_MAGIC);
1265 Perl_load_module(aTHX_ PERL_LOADMOD_NOIMPORT, module, NULL);
1267 stash = gv_stashsv(namesv, 0);
1269 Perl_croak(aTHX_ "panic: Can't use %c%c because %"SVf" is not available",
1270 type, varname, SVfARG(namesv));
1271 else if (!gv_fetchmethod(stash, methpv))
1272 Perl_croak(aTHX_ "panic: Can't use %c%c because %"SVf" does not support method %s",
1273 type, varname, SVfARG(namesv), methpv);
1276 else SvREFCNT_dec_NN(namesv);
1281 =for apidoc gv_stashpv
1283 Returns a pointer to the stash for a specified package. Uses C<strlen> to
1284 determine the length of C<name>, then calls C<gv_stashpvn()>.
1290 Perl_gv_stashpv(pTHX_ const char *name, I32 create)
1292 PERL_ARGS_ASSERT_GV_STASHPV;
1293 return gv_stashpvn(name, strlen(name), create);
1297 =for apidoc gv_stashpvn
1299 Returns a pointer to the stash for a specified package. The C<namelen>
1300 parameter indicates the length of the C<name>, in bytes. C<flags> is passed
1301 to C<gv_fetchpvn_flags()>, so if set to C<GV_ADD> then the package will be
1302 created if it does not already exist. If the package does not exist and
1303 C<flags> is 0 (or any other setting that does not create packages) then NULL
1306 Flags may be one of:
1315 The most important of which are probably GV_ADD and SVf_UTF8.
1321 Perl_gv_stashpvn(pTHX_ const char *name, U32 namelen, I32 flags)
1327 U32 tmplen = namelen + 2;
1329 PERL_ARGS_ASSERT_GV_STASHPVN;
1331 if (tmplen <= sizeof smallbuf)
1334 Newx(tmpbuf, tmplen, char);
1335 Copy(name, tmpbuf, namelen, char);
1336 tmpbuf[namelen] = ':';
1337 tmpbuf[namelen+1] = ':';
1338 tmpgv = gv_fetchpvn_flags(tmpbuf, tmplen, flags, SVt_PVHV);
1339 if (tmpbuf != smallbuf)
1343 stash = GvHV(tmpgv);
1344 if (!(flags & ~GV_NOADD_MASK) && !stash) return NULL;
1346 if (!HvNAME_get(stash)) {
1347 hv_name_set(stash, name, namelen, flags & SVf_UTF8 ? SVf_UTF8 : 0 );
1349 /* FIXME: This is a repeat of logic in gv_fetchpvn_flags */
1350 /* If the containing stash has multiple effective
1351 names, see that this one gets them, too. */
1352 if (HvAUX(GvSTASH(tmpgv))->xhv_name_count)
1353 mro_package_moved(stash, NULL, tmpgv, 1);
1359 =for apidoc gv_stashsv
1361 Returns a pointer to the stash for a specified package. See C<gv_stashpvn>.
1367 Perl_gv_stashsv(pTHX_ SV *sv, I32 flags)
1370 const char * const ptr = SvPV_const(sv,len);
1372 PERL_ARGS_ASSERT_GV_STASHSV;
1374 return gv_stashpvn(ptr, len, flags | SvUTF8(sv));
1379 Perl_gv_fetchpv(pTHX_ const char *nambeg, I32 add, const svtype sv_type) {
1380 PERL_ARGS_ASSERT_GV_FETCHPV;
1381 return gv_fetchpvn_flags(nambeg, strlen(nambeg), add, sv_type);
1385 Perl_gv_fetchsv(pTHX_ SV *name, I32 flags, const svtype sv_type) {
1387 const char * const nambeg =
1388 SvPV_flags_const(name, len, flags & GV_NO_SVGMAGIC ? 0 : SV_GMAGIC);
1389 PERL_ARGS_ASSERT_GV_FETCHSV;
1390 return gv_fetchpvn_flags(nambeg, len, flags | SvUTF8(name), sv_type);
1393 PERL_STATIC_INLINE void
1394 S_gv_magicalize_isa(pTHX_ GV *gv)
1398 PERL_ARGS_ASSERT_GV_MAGICALIZE_ISA;
1402 sv_magic(MUTABLE_SV(av), MUTABLE_SV(gv), PERL_MAGIC_isa,
1406 /* This function grabs name and tries to split a stash and glob
1407 * from its contents. TODO better description, comments
1409 * If the function returns TRUE and 'name == name_end', then
1410 * 'gv' can be directly returned to the caller of gv_fetchpvn_flags
1412 PERL_STATIC_INLINE bool
1413 S_parse_gv_stash_name(pTHX_ HV **stash, GV **gv, const char **name,
1414 STRLEN *len, const char *nambeg, STRLEN full_len,
1415 const U32 is_utf8, const I32 add)
1417 const char *name_cursor;
1418 const char *const name_end = nambeg + full_len;
1419 const char *const name_em1 = name_end - 1;
1421 PERL_ARGS_ASSERT_PARSE_GV_STASH_NAME;
1423 if (full_len > 2 && **name == '*' && isIDFIRST_lazy_if(*name + 1, is_utf8)) {
1424 /* accidental stringify on a GV? */
1428 for (name_cursor = *name; name_cursor < name_end; name_cursor++) {
1429 if (name_cursor < name_em1 &&
1430 ((*name_cursor == ':' && name_cursor[1] == ':')
1431 || *name_cursor == '\''))
1434 *stash = PL_defstash;
1435 if (!*stash || !SvREFCNT(*stash)) /* symbol table under destruction */
1438 *len = name_cursor - *name;
1439 if (name_cursor > nambeg) { /* Skip for initial :: or ' */
1442 if (*name_cursor == ':') {
1448 Newx(tmpbuf, *len+2, char);
1449 Copy(*name, tmpbuf, *len, char);
1450 tmpbuf[(*len)++] = ':';
1451 tmpbuf[(*len)++] = ':';
1454 gvp = (GV**)hv_fetch(*stash, key, is_utf8 ? -(*len) : *len, add);
1455 *gv = gvp ? *gvp : NULL;
1456 if (*gv && *gv != (const GV *)&PL_sv_undef) {
1457 if (SvTYPE(*gv) != SVt_PVGV)
1458 gv_init_pvn(*gv, *stash, key, *len, (add & GV_ADDMULTI)|is_utf8);
1464 if (!*gv || *gv == (const GV *)&PL_sv_undef)
1467 if (!(*stash = GvHV(*gv))) {
1468 *stash = GvHV(*gv) = newHV();
1469 if (!HvNAME_get(*stash)) {
1470 if (GvSTASH(*gv) == PL_defstash && *len == 6
1471 && strnEQ(*name, "CORE", 4))
1472 hv_name_set(*stash, "CORE", 4, 0);
1475 *stash, nambeg, name_cursor-nambeg, is_utf8
1477 /* If the containing stash has multiple effective
1478 names, see that this one gets them, too. */
1479 if (HvAUX(GvSTASH(*gv))->xhv_name_count)
1480 mro_package_moved(*stash, NULL, *gv, 1);
1483 else if (!HvNAME_get(*stash))
1484 hv_name_set(*stash, nambeg, name_cursor - nambeg, is_utf8);
1487 if (*name_cursor == ':')
1489 *name = name_cursor+1;
1490 if (*name == name_end) {
1492 *gv = MUTABLE_GV(*hv_fetchs(PL_defstash, "main::", TRUE));
1497 *len = name_cursor - *name;
1501 /* Checks if an unqualified name is in the main stash */
1502 PERL_STATIC_INLINE bool
1503 S_gv_is_in_main(pTHX_ const char *name, STRLEN len, const U32 is_utf8)
1505 PERL_ARGS_ASSERT_GV_IS_IN_MAIN;
1507 /* If it's an alphanumeric variable */
1508 if ( len && isIDFIRST_lazy_if(name, is_utf8) ) {
1509 /* Some "normal" variables are always in main::,
1510 * like INC or STDOUT.
1518 if ((name[0] == 'I' && name[1] == 'N' && name[2] == 'C')
1519 || (name[0] == 'E' && name[1] == 'N' && name[2] == 'V')
1520 || (name[0] == 'S' && name[1] == 'I' && name[2] == 'G'))
1524 if (name[0] == 'A' && name[1] == 'R' && name[2] == 'G'
1529 if (name[0] == 'S' && name[1] == 'T' && name[2] == 'D'
1530 && name[3] == 'I' && name[4] == 'N')
1534 if ((name[0] == 'S' && name[1] == 'T' && name[2] == 'D')
1535 &&((name[3] == 'O' && name[4] == 'U' && name[5] == 'T')
1536 ||(name[3] == 'E' && name[4] == 'R' && name[5] == 'R')))
1540 if (name[0] == 'A' && name[1] == 'R' && name[2] == 'G'
1541 && name[3] == 'V' && name[4] == 'O' && name[5] == 'U'
1547 /* *{""}, or a special variable like $@ */
1555 /* This function is called if parse_gv_stash_name() failed to
1556 * find a stash, or if GV_NOTQUAL or an empty name was passed
1557 * to gv_fetchpvn_flags.
1559 * It returns FALSE if the default stash can't be found nor created,
1560 * which might happen during global destruction.
1562 PERL_STATIC_INLINE bool
1563 S_find_default_stash(pTHX_ HV **stash, const char *name, STRLEN len,
1564 const U32 is_utf8, const I32 add,
1565 const svtype sv_type)
1567 PERL_ARGS_ASSERT_FIND_DEFAULT_STASH;
1569 /* No stash in name, so see how we can default */
1571 if ( gv_is_in_main(name, len, is_utf8) ) {
1572 *stash = PL_defstash;
1575 if (IN_PERL_COMPILETIME) {
1576 *stash = PL_curstash;
1577 if (add && (PL_hints & HINT_STRICT_VARS) &&
1578 sv_type != SVt_PVCV &&
1579 sv_type != SVt_PVGV &&
1580 sv_type != SVt_PVFM &&
1581 sv_type != SVt_PVIO &&
1582 !(len == 1 && sv_type == SVt_PV &&
1583 (*name == 'a' || *name == 'b')) )
1585 GV**gvp = (GV**)hv_fetch(*stash,name,is_utf8 ? -len : len,0);
1586 if (!gvp || *gvp == (const GV *)&PL_sv_undef ||
1587 SvTYPE(*gvp) != SVt_PVGV)
1591 else if ((sv_type == SVt_PV && !GvIMPORTED_SV(*gvp)) ||
1592 (sv_type == SVt_PVAV && !GvIMPORTED_AV(*gvp)) ||
1593 (sv_type == SVt_PVHV && !GvIMPORTED_HV(*gvp)) )
1595 /* diag_listed_as: Variable "%s" is not imported%s */
1597 aTHX_ packWARN(WARN_MISC),
1598 "Variable \"%c%"UTF8f"\" is not imported",
1599 sv_type == SVt_PVAV ? '@' :
1600 sv_type == SVt_PVHV ? '%' : '$',
1601 UTF8fARG(is_utf8, len, name));
1604 aTHX_ packWARN(WARN_MISC),
1605 "\t(Did you mean &%"UTF8f" instead?)\n",
1606 UTF8fARG(is_utf8, len, name)
1613 /* Use the current op's stash */
1614 *stash = CopSTASH(PL_curcop);
1619 if (add && !PL_in_clean_all) {
1620 SV * const err = Perl_mess(aTHX_
1621 "Global symbol \"%s%"UTF8f
1622 "\" requires explicit package name",
1623 (sv_type == SVt_PV ? "$"
1624 : sv_type == SVt_PVAV ? "@"
1625 : sv_type == SVt_PVHV ? "%"
1626 : ""), UTF8fARG(is_utf8, len, name));
1631 /* To maintain the output of errors after the strict exception
1632 * above, and to keep compat with older releases, rather than
1633 * placing the variables in the pad, we place
1634 * them in the <none>:: stash.
1636 gv = gv_fetchpvs("<none>::", GV_ADDMULTI, SVt_PVHV);
1638 /* symbol table under destruction */
1647 if (!SvREFCNT(*stash)) /* symbol table under destruction */
1653 /* gv_magicalize() is called by gv_fetchpvn_flags when creating
1655 * Note that it does not insert the GV into the stash prior to
1656 * magicalization, which some variables require need in order
1657 * to work (like $[, %+, %-, %!), so callers must take care of
1660 * The return value has a specific meaning for gv_fetchpvn_flags:
1661 * If it returns true, and the gv is empty, it indicates that its
1662 * refcount should be decreased.
1664 PERL_STATIC_INLINE bool
1665 S_gv_magicalize(pTHX_ GV *gv, HV *stash, const char *name, STRLEN len,
1666 bool addmg, const svtype sv_type)
1670 PERL_ARGS_ASSERT_GV_MAGICALIZE;
1672 if (stash != PL_defstash) { /* not the main stash */
1673 /* We only have to check for three names here: EXPORT, ISA
1674 and VERSION. All the others apply only to the main stash or to
1675 CORE (which is checked right after this). */
1677 const char * const name2 = name + 1;
1680 if (strnEQ(name2, "XPORT", 5))
1684 if (strEQ(name2, "SA"))
1685 gv_magicalize_isa(gv);
1688 if (strEQ(name2, "ERSION"))
1697 if (len > 1 /* shortest is uc */ && HvNAMELEN_get(stash) == 4) {
1698 /* Avoid null warning: */
1699 const char * const stashname = HvNAME(stash); assert(stashname);
1700 if (strnEQ(stashname, "CORE", 4))
1701 S_maybe_add_coresub(aTHX_ 0, gv, name, len);
1708 /* Nothing else to do.
1709 The compiler will probably turn the switch statement into a
1710 branch table. Make sure we avoid even that small overhead for
1711 the common case of lower case variable names. (On EBCDIC
1712 platforms, we can't just do:
1713 if (NATIVE_TO_ASCII(*name) > NATIVE_TO_ASCII('V') ) {
1714 because cases like '\027' in the switch statement below are
1715 C1 (non-ASCII) controls on those platforms, so the remapping
1716 would make them larger than 'V')
1721 const char * const name2 = name + 1;
1724 if (strEQ(name2, "RGV")) {
1725 IoFLAGS(GvIOn(gv)) |= IOf_ARGV|IOf_START;
1727 else if (strEQ(name2, "RGVOUT")) {
1732 if (strnEQ(name2, "XPORT", 5))
1736 if (strEQ(name2, "SA")) {
1737 gv_magicalize_isa(gv);
1741 if (strEQ(name2, "IG")) {
1744 if (!PL_psig_name) {
1745 Newxz(PL_psig_name, 2 * SIG_SIZE, SV*);
1746 Newxz(PL_psig_pend, SIG_SIZE, int);
1747 PL_psig_ptr = PL_psig_name + SIG_SIZE;
1749 /* I think that the only way to get here is to re-use an
1750 embedded perl interpreter, where the previous
1751 use didn't clean up fully because
1752 PL_perl_destruct_level was 0. I'm not sure that we
1753 "support" that, in that I suspect in that scenario
1754 there are sufficient other garbage values left in the
1755 interpreter structure that something else will crash
1756 before we get here. I suspect that this is one of
1757 those "doctor, it hurts when I do this" bugs. */
1758 Zero(PL_psig_name, 2 * SIG_SIZE, SV*);
1759 Zero(PL_psig_pend, SIG_SIZE, int);
1763 hv_magic(hv, NULL, PERL_MAGIC_sig);
1764 for (i = 1; i < SIG_SIZE; i++) {
1765 SV * const * const init = hv_fetch(hv, PL_sig_name[i], strlen(PL_sig_name[i]), 1);
1767 sv_setsv(*init, &PL_sv_undef);
1772 if (strEQ(name2, "ERSION"))
1775 case '\003': /* $^CHILD_ERROR_NATIVE */
1776 if (strEQ(name2, "HILD_ERROR_NATIVE"))
1779 case '\005': /* $^ENCODING */
1780 if (strEQ(name2, "NCODING"))
1783 case '\007': /* $^GLOBAL_PHASE */
1784 if (strEQ(name2, "LOBAL_PHASE"))
1787 case '\014': /* $^LAST_FH */
1788 if (strEQ(name2, "AST_FH"))
1791 case '\015': /* $^MATCH */
1792 if (strEQ(name2, "ATCH")) {
1793 paren = RX_BUFF_IDX_CARET_FULLMATCH;
1797 case '\017': /* $^OPEN */
1798 if (strEQ(name2, "PEN"))
1801 case '\020': /* $^PREMATCH $^POSTMATCH */
1802 if (strEQ(name2, "REMATCH")) {
1803 paren = RX_BUFF_IDX_CARET_PREMATCH;
1806 if (strEQ(name2, "OSTMATCH")) {
1807 paren = RX_BUFF_IDX_CARET_POSTMATCH;
1811 case '\024': /* ${^TAINT} */
1812 if (strEQ(name2, "AINT"))
1815 case '\025': /* ${^UNICODE}, ${^UTF8LOCALE} */
1816 if (strEQ(name2, "NICODE"))
1818 if (strEQ(name2, "TF8LOCALE"))
1820 if (strEQ(name2, "TF8CACHE"))
1823 case '\027': /* $^WARNING_BITS */
1824 if (strEQ(name2, "ARNING_BITS"))
1837 /* Ensures that we have an all-digit variable, ${"1foo"} fails
1839 /* This snippet is taken from is_gv_magical */
1840 const char *end = name + len;
1841 while (--end > name) {
1845 paren = strtoul(name, NULL, 10);
1851 /* Names of length 1. (Or 0. But name is NUL terminated, so that will
1852 be case '\0' in this switch statement (ie a default case) */
1855 paren = RX_BUFF_IDX_FULLMATCH;
1858 paren = RX_BUFF_IDX_PREMATCH;
1861 paren = RX_BUFF_IDX_POSTMATCH;
1863 #ifdef PERL_SAWAMPERSAND
1865 sv_type == SVt_PVAV ||
1866 sv_type == SVt_PVHV ||
1867 sv_type == SVt_PVCV ||
1868 sv_type == SVt_PVFM ||
1870 )) { PL_sawampersand |=
1874 ? SAWAMPERSAND_MIDDLE
1875 : SAWAMPERSAND_RIGHT;
1888 paren = *name - '0';
1891 /* Flag the capture variables with a NULL mg_ptr
1892 Use mg_len for the array index to lookup. */
1893 sv_magic(GvSVn(gv), MUTABLE_SV(gv), PERL_MAGIC_sv, NULL, paren);
1897 sv_setpv(GvSVn(gv),PL_chopset);
1901 #ifdef COMPLEX_STATUS
1902 SvUPGRADE(GvSVn(gv), SVt_PVLV);
1908 /* If %! has been used, automatically load Errno.pm. */
1910 sv_magic(GvSVn(gv), MUTABLE_SV(gv), PERL_MAGIC_sv, name, len);
1912 /* magicalization must be done before require_tie_mod is called */
1913 if (sv_type == SVt_PVHV || sv_type == SVt_PVGV)
1915 require_tie_mod(gv, "!", newSVpvs("Errno"), "TIEHASH", 1);
1922 GvMULTI_on(gv); /* no used once warnings here */
1924 AV* const av = GvAVn(gv);
1925 SV* const avc = (*name == '+') ? MUTABLE_SV(av) : NULL;
1927 sv_magic(MUTABLE_SV(av), avc, PERL_MAGIC_regdata, NULL, 0);
1928 sv_magic(GvSVn(gv), MUTABLE_SV(gv), PERL_MAGIC_sv, name, len);
1930 SvREADONLY_on(GvSVn(gv));
1933 if (sv_type == SVt_PVHV || sv_type == SVt_PVGV)
1935 require_tie_mod(gv, name, newSVpvs("Tie::Hash::NamedCapture"), "TIEHASH", 0);
1943 if (sv_type == SVt_PV)
1944 /* diag_listed_as: $* is no longer supported */
1945 Perl_ck_warner_d(aTHX_ packWARN2(WARN_DEPRECATED, WARN_SYNTAX),
1946 "$%c is no longer supported", *name);
1948 case '\010': /* $^H */
1950 HV *const hv = GvHVn(gv);
1951 hv_magic(hv, NULL, PERL_MAGIC_hints);
1955 if ((sv_type == SVt_PV || sv_type == SVt_PVGV)
1956 && FEATURE_ARYBASE_IS_ENABLED) {
1957 require_tie_mod(gv,name,newSVpvs("arybase"),"FETCH",0);
1960 else goto magicalize;
1962 case '\023': /* $^S */
1964 SvREADONLY_on(GvSVn(gv));
1980 case '\001': /* $^A */
1981 case '\003': /* $^C */
1982 case '\004': /* $^D */
1983 case '\005': /* $^E */
1984 case '\006': /* $^F */
1985 case '\011': /* $^I, NOT \t in EBCDIC */
1986 case '\016': /* $^N */
1987 case '\017': /* $^O */
1988 case '\020': /* $^P */
1989 case '\024': /* $^T */
1990 case '\027': /* $^W */
1992 sv_magic(GvSVn(gv), MUTABLE_SV(gv), PERL_MAGIC_sv, name, len);
1995 case '\014': /* $^L */
1996 sv_setpvs(GvSVn(gv),"\f");
1999 sv_setpvs(GvSVn(gv),"\034");
2003 SV * const sv = GvSV(gv);
2004 if (!sv_derived_from(PL_patchlevel, "version"))
2005 upg_version(PL_patchlevel, TRUE);
2006 GvSV(gv) = vnumify(PL_patchlevel);
2007 SvREADONLY_on(GvSV(gv));
2011 case '\026': /* $^V */
2013 SV * const sv = GvSV(gv);
2014 GvSV(gv) = new_version(PL_patchlevel);
2015 SvREADONLY_on(GvSV(gv));
2025 /* This function is called when the stash already holds the GV of the magic
2026 * variable we're looking for, but we need to check that it has the correct
2027 * kind of magic. For example, if someone first uses $! and then %!, the
2028 * latter would end up here, and we add the Errno tie to the HASH slot of
2031 PERL_STATIC_INLINE void
2032 S_maybe_multimagic_gv(pTHX_ GV *gv, const char *name, const svtype sv_type)
2034 PERL_ARGS_ASSERT_MAYBE_MULTIMAGIC_GV;
2036 if (sv_type == SVt_PVHV || sv_type == SVt_PVGV) {
2038 require_tie_mod(gv, "!", newSVpvs("Errno"), "TIEHASH", 1);
2039 else if (*name == '-' || *name == '+')
2040 require_tie_mod(gv, name, newSVpvs("Tie::Hash::NamedCapture"), "TIEHASH", 0);
2041 } else if (sv_type == SVt_PV) {
2042 if (*name == '*' || *name == '#') {
2043 /* diag_listed_as: $* is no longer supported */
2044 Perl_ck_warner_d(aTHX_ packWARN2(WARN_DEPRECATED,
2046 "$%c is no longer supported", *name);
2049 if (sv_type==SVt_PV || sv_type==SVt_PVGV) {
2052 require_tie_mod(gv,name,newSVpvs("arybase"),"FETCH",0);
2054 #ifdef PERL_SAWAMPERSAND
2056 PL_sawampersand |= SAWAMPERSAND_LEFT;
2060 PL_sawampersand |= SAWAMPERSAND_MIDDLE;
2064 PL_sawampersand |= SAWAMPERSAND_RIGHT;
2073 Perl_gv_fetchpvn_flags(pTHX_ const char *nambeg, STRLEN full_len, I32 flags,
2074 const svtype sv_type)
2077 const char *name = nambeg;
2082 const I32 no_init = flags & (GV_NOADD_NOINIT | GV_NOINIT);
2083 const I32 no_expand = flags & GV_NOEXPAND;
2084 const I32 add = flags & ~GV_NOADD_MASK;
2085 const U32 is_utf8 = flags & SVf_UTF8;
2086 bool addmg = cBOOL(flags & GV_ADDMG);
2087 const char *const name_end = nambeg + full_len;
2090 PERL_ARGS_ASSERT_GV_FETCHPVN_FLAGS;
2092 /* If we have GV_NOTQUAL, the caller promised that
2093 * there is no stash, so we can skip the check.
2094 * Similarly if full_len is 0, since then we're
2095 * dealing with something like *{""} or ""->foo()
2097 if ((flags & GV_NOTQUAL) || !full_len) {
2100 else if (parse_gv_stash_name(&stash, &gv, &name, &len, nambeg, full_len, is_utf8, add)) {
2101 if (name == name_end) return gv;
2107 if (!stash && !find_default_stash(&stash, name, len, is_utf8, add, sv_type)) {
2111 /* By this point we should have a stash and a name */
2112 gvp = (GV**)hv_fetch(stash,name,is_utf8 ? -len : len,add);
2113 if (!gvp || *gvp == (const GV *)&PL_sv_undef) {
2114 if (addmg) gv = (GV *)newSV(0);
2117 else gv = *gvp, addmg = 0;
2118 /* From this point on, addmg means gv has not been inserted in the
2121 if (SvTYPE(gv) == SVt_PVGV) {
2122 /* The GV already exists, so return it, but check if we need to do
2123 * anything else with it before that.
2126 /* This is the heuristic that handles if a variable triggers the
2127 * 'used only once' warning. If there's already a GV in the stash
2128 * with this name, then we assume that the variable has been used
2129 * before and turn its MULTI flag on.
2130 * It's a heuristic because it can easily be "tricked", like with
2131 * BEGIN { $a = 1; $::{foo} = *a }; () = $foo
2132 * not warning about $main::foo being used just once
2135 gv_init_svtype(gv, sv_type);
2136 /* You reach this path once the typeglob has already been created,
2137 either by the same or a different sigil. If this path didn't
2138 exist, then (say) referencing $! first, and %! second would
2139 mean that %! was not handled correctly. */
2140 if (len == 1 && stash == PL_defstash) {
2141 maybe_multimagic_gv(gv, name, sv_type);
2143 else if (len == 3 && sv_type == SVt_PVAV
2144 && strnEQ(name, "ISA", 3)
2145 && (!GvAV(gv) || !SvSMAGICAL(GvAV(gv))))
2146 gv_magicalize_isa(gv);
2149 } else if (no_init) {
2153 /* If GV_NOEXPAND is true and what we got off the stash is a ref,
2154 * don't expand it to a glob. This is an optimization so that things
2155 * copying constants over, like Exporter, don't have to be rewritten
2156 * to take into account that you can store more than just globs in
2159 else if (no_expand && SvROK(gv)) {
2164 /* Adding a new symbol.
2165 Unless of course there was already something non-GV here, in which case
2166 we want to behave as if there was always a GV here, containing some sort
2168 Otherwise we run the risk of creating things like GvIO, which can cause
2169 subtle bugs. eg the one that tripped up SQL::Translator */
2171 faking_it = SvOK(gv);
2173 if (add & GV_ADDWARN)
2174 Perl_ck_warner_d(aTHX_ packWARN(WARN_INTERNAL),
2175 "Had to create %"UTF8f" unexpectedly",
2176 UTF8fARG(is_utf8, name_end-nambeg, nambeg));
2177 gv_init_pvn(gv, stash, name, len, (add & GV_ADDMULTI)|is_utf8);
2179 if ( isIDFIRST_lazy_if(name, is_utf8) && !ckWARN(WARN_ONCE) )
2182 /* First, store the gv in the symtab if we're adding magic,
2183 * but only for non-empty GVs
2185 #define GvEMPTY(gv) !(GvAV(gv) || GvHV(gv) || GvIO(gv) \
2186 || GvCV(gv) || (GvSV(gv) && SvOK(GvSV(gv))))
2188 if ( addmg && !GvEMPTY(gv) ) {
2189 (void)hv_store(stash,name,len,(SV *)gv,0);
2192 /* set up magic where warranted */
2193 if ( gv_magicalize(gv, stash, name, len, addmg, sv_type) ) {
2196 if ( GvSV(gv) && SvMAGICAL(GvSV(gv)) ) {
2197 /* The GV was and still is "empty", except that now
2198 * it has the magic flags turned on, so we want it
2199 * stored in the symtab.
2201 (void)hv_store(stash,name,len,(SV *)gv,0);
2204 /* Most likely the temporary GV created above */
2205 SvREFCNT_dec_NN(gv);
2211 if (gv) gv_init_svtype(gv, faking_it ? SVt_PVCV : sv_type);
2216 Perl_gv_fullname4(pTHX_ SV *sv, const GV *gv, const char *prefix, bool keepmain)
2219 const HV * const hv = GvSTASH(gv);
2221 PERL_ARGS_ASSERT_GV_FULLNAME4;
2223 sv_setpv(sv, prefix ? prefix : "");
2225 if (hv && (name = HvNAME(hv))) {
2226 const STRLEN len = HvNAMELEN(hv);
2227 if (keepmain || strnNE(name, "main", len)) {
2228 sv_catpvn_flags(sv,name,len,HvNAMEUTF8(hv)?SV_CATUTF8:SV_CATBYTES);
2232 else sv_catpvs(sv,"__ANON__::");
2233 sv_catsv(sv,sv_2mortal(newSVhek(GvNAME_HEK(gv))));
2237 Perl_gv_efullname4(pTHX_ SV *sv, const GV *gv, const char *prefix, bool keepmain)
2239 const GV * const egv = GvEGVx(gv);
2241 PERL_ARGS_ASSERT_GV_EFULLNAME4;
2243 gv_fullname4(sv, egv ? egv : gv, prefix, keepmain);
2247 Perl_gv_check(pTHX_ HV *stash)
2252 PERL_ARGS_ASSERT_GV_CHECK;
2254 if (!HvARRAY(stash))
2256 for (i = 0; i <= (I32) HvMAX(stash); i++) {
2258 /* SvIsCOW is unused on HVs, so we can use it to mark stashes we
2259 are currently searching through recursively. */
2261 for (entry = HvARRAY(stash)[i]; entry; entry = HeNEXT(entry)) {
2264 if (HeKEY(entry)[HeKLEN(entry)-1] == ':' &&
2265 (gv = MUTABLE_GV(HeVAL(entry))) && isGV(gv) && (hv = GvHV(gv)))
2267 if (hv != PL_defstash && hv != stash && !SvIsCOW(hv))
2268 gv_check(hv); /* nested package */
2270 else if ( *HeKEY(entry) != '_'
2271 && isIDFIRST_lazy_if(HeKEY(entry), HeUTF8(entry)) ) {
2273 gv = MUTABLE_GV(HeVAL(entry));
2274 if (SvTYPE(gv) != SVt_PVGV || GvMULTI(gv))
2277 CopLINE_set(PL_curcop, GvLINE(gv));
2279 CopFILE(PL_curcop) = (char *)file; /* set for warning */
2281 CopFILEGV(PL_curcop)
2282 = gv_fetchfile_flags(file, HEK_LEN(GvFILE_HEK(gv)), 0);
2284 Perl_warner(aTHX_ packWARN(WARN_ONCE),
2285 "Name \"%"HEKf"::%"HEKf
2286 "\" used only once: possible typo",
2287 HEKfARG(HvNAME_HEK(stash)),
2288 HEKfARG(GvNAME_HEK(gv)));
2296 Perl_newGVgen_flags(pTHX_ const char *pack, U32 flags)
2299 PERL_ARGS_ASSERT_NEWGVGEN_FLAGS;
2300 assert(!(flags & ~SVf_UTF8));
2302 return gv_fetchpv(Perl_form(aTHX_ "%"UTF8f"::_GEN_%ld",
2303 UTF8fARG(flags, strlen(pack), pack),
2308 /* hopefully this is only called on local symbol table entries */
2311 Perl_gp_ref(pTHX_ GP *gp)
2319 /* If the GP they asked for a reference to contains
2320 a method cache entry, clear it first, so that we
2321 don't infect them with our cached entry */
2322 SvREFCNT_dec_NN(gp->gp_cv);
2331 Perl_gp_free(pTHX_ GV *gv)
2337 if (!gv || !isGV_with_GP(gv) || !(gp = GvGP(gv)))
2339 if (gp->gp_refcnt == 0) {
2340 Perl_ck_warner_d(aTHX_ packWARN(WARN_INTERNAL),
2341 "Attempt to free unreferenced glob pointers"
2342 pTHX__FORMAT pTHX__VALUE);
2345 if (--gp->gp_refcnt > 0) {
2346 if (gp->gp_egv == gv)
2353 /* Copy and null out all the glob slots, so destructors do not see
2355 HEK * const file_hek = gp->gp_file_hek;
2356 SV * const sv = gp->gp_sv;
2357 AV * const av = gp->gp_av;
2358 HV * const hv = gp->gp_hv;
2359 IO * const io = gp->gp_io;
2360 CV * const cv = gp->gp_cv;
2361 CV * const form = gp->gp_form;
2363 gp->gp_file_hek = NULL;
2372 unshare_hek(file_hek);
2376 /* FIXME - another reference loop GV -> symtab -> GV ?
2377 Somehow gp->gp_hv can end up pointing at freed garbage. */
2378 if (hv && SvTYPE(hv) == SVt_PVHV) {
2379 const HEK *hvname_hek = HvNAME_HEK(hv);
2380 DEBUG_o(Perl_deb(aTHX_ "gp_free clearing PL_stashcache for '%"HEKf"'\n", hvname_hek));
2381 if (PL_stashcache && hvname_hek)
2382 (void)hv_deletehek(PL_stashcache, hvname_hek, G_DISCARD);
2389 if (!gp->gp_file_hek
2395 && !gp->gp_form) break;
2397 if (--attempts == 0) {
2399 "panic: gp_free failed to free glob pointer - "
2400 "something is repeatedly re-creating entries"
2410 Perl_magic_freeovrld(pTHX_ SV *sv, MAGIC *mg)
2412 AMT * const amtp = (AMT*)mg->mg_ptr;
2413 PERL_UNUSED_ARG(sv);
2415 PERL_ARGS_ASSERT_MAGIC_FREEOVRLD;
2417 if (amtp && AMT_AMAGIC(amtp)) {
2419 for (i = 1; i < NofAMmeth; i++) {
2420 CV * const cv = amtp->table[i];
2422 SvREFCNT_dec_NN(MUTABLE_SV(cv));
2423 amtp->table[i] = NULL;
2430 /* Updates and caches the CV's */
2432 * 1 on success and there is some overload
2433 * 0 if there is no overload
2434 * -1 if some error occurred and it couldn't croak
2438 Perl_Gv_AMupdate(pTHX_ HV *stash, bool destructing)
2441 MAGIC* const mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table);
2443 const struct mro_meta* stash_meta = HvMROMETA(stash);
2446 PERL_ARGS_ASSERT_GV_AMUPDATE;
2448 newgen = PL_sub_generation + stash_meta->pkg_gen + stash_meta->cache_gen;
2450 const AMT * const amtp = (AMT*)mg->mg_ptr;
2451 if (amtp->was_ok_sub == newgen) {
2452 return AMT_AMAGIC(amtp) ? 1 : 0;
2454 sv_unmagic(MUTABLE_SV(stash), PERL_MAGIC_overload_table);
2457 DEBUG_o( Perl_deb(aTHX_ "Recalcing overload magic in package %s\n",HvNAME_get(stash)) );
2460 amt.was_ok_sub = newgen;
2461 amt.fallback = AMGfallNO;
2468 /* Work with "fallback" key, which we assume to be first in PL_AMG_names */
2470 /* Try to find via inheritance. */
2471 GV *gv = gv_fetchmeth_pvn(stash, PL_AMG_names[0], 2, -1, 0);
2472 SV * const sv = gv ? GvSV(gv) : NULL;
2477 if (!gv_fetchmeth_pvn(stash, "((", 2, -1, 0))
2480 #ifdef PERL_DONT_CREATE_GVSV
2482 NOOP; /* Equivalent to !SvTRUE and !SvOK */
2485 else if (SvTRUE(sv))
2486 /* don't need to set overloading here because fallback => 1
2487 * is the default setting for classes without overloading */
2488 amt.fallback=AMGfallYES;
2489 else if (SvOK(sv)) {
2490 amt.fallback=AMGfallNEVER;
2497 for (i = 1; i < NofAMmeth; i++) {
2498 const char * const cooky = PL_AMG_names[i];
2499 /* Human-readable form, for debugging: */
2500 const char * const cp = AMG_id2name(i);
2501 const STRLEN l = PL_AMG_namelens[i];
2503 DEBUG_o( Perl_deb(aTHX_ "Checking overloading of \"%s\" in package \"%.256s\"\n",
2504 cp, HvNAME_get(stash)) );
2505 /* don't fill the cache while looking up!
2506 Creation of inheritance stubs in intermediate packages may
2507 conflict with the logic of runtime method substitution.
2508 Indeed, for inheritance A -> B -> C, if C overloads "+0",
2509 then we could have created stubs for "(+0" in A and C too.
2510 But if B overloads "bool", we may want to use it for
2511 numifying instead of C's "+0". */
2512 gv = Perl_gv_fetchmeth_pvn(aTHX_ stash, cooky, l, -1, 0);
2514 if (gv && (cv = GvCV(gv))) {
2515 if(GvNAMELEN(CvGV(cv)) == 3 && strEQ(GvNAME(CvGV(cv)), "nil")){
2516 const char * const hvname = HvNAME_get(GvSTASH(CvGV(cv)));
2517 if (hvname && HEK_LEN(HvNAME_HEK(GvSTASH(CvGV(cv)))) == 8
2518 && strEQ(hvname, "overload")) {
2519 /* This is a hack to support autoloading..., while
2520 knowing *which* methods were declared as overloaded. */
2521 /* GvSV contains the name of the method. */
2523 SV *gvsv = GvSV(gv);
2525 DEBUG_o( Perl_deb(aTHX_ "Resolving method \"%"SVf256\
2526 "\" for overloaded \"%s\" in package \"%.256s\"\n",
2527 (void*)GvSV(gv), cp, HvNAME(stash)) );
2528 if (!gvsv || !SvPOK(gvsv)
2529 || !(ngv = gv_fetchmethod_sv_flags(stash, gvsv, 0)))
2531 /* Can be an import stub (created by "can"). */
2536 const SV * const name = (gvsv && SvPOK(gvsv))
2538 : newSVpvs_flags("???", SVs_TEMP);
2539 /* diag_listed_as: Can't resolve method "%s" overloading "%s" in package "%s" */
2540 Perl_croak(aTHX_ "%s method \"%"SVf256
2541 "\" overloading \"%s\" "\
2542 "in package \"%"HEKf256"\"",
2543 (GvCVGEN(gv) ? "Stub found while resolving"
2551 cv = GvCV(gv = ngv);
2554 DEBUG_o( Perl_deb(aTHX_ "Overloading \"%s\" in package \"%.256s\" via \"%.256s::%.256s\"\n",
2555 cp, HvNAME_get(stash), HvNAME_get(GvSTASH(CvGV(cv))),
2556 GvNAME(CvGV(cv))) );
2558 } else if (gv) { /* Autoloaded... */
2559 cv = MUTABLE_CV(gv);
2562 amt.table[i]=MUTABLE_CV(SvREFCNT_inc_simple(cv));
2565 AMT_AMAGIC_on(&amt);
2566 sv_magic(MUTABLE_SV(stash), 0, PERL_MAGIC_overload_table,
2567 (char*)&amt, sizeof(AMT));
2571 /* Here we have no table: */
2573 AMT_AMAGIC_off(&amt);
2574 sv_magic(MUTABLE_SV(stash), 0, PERL_MAGIC_overload_table,
2575 (char*)&amt, sizeof(AMTS));
2581 Perl_gv_handler(pTHX_ HV *stash, I32 id)
2587 struct mro_meta* stash_meta;
2589 if (!stash || !HvNAME_get(stash))
2592 stash_meta = HvMROMETA(stash);
2593 newgen = PL_sub_generation + stash_meta->pkg_gen + stash_meta->cache_gen;
2595 mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table);
2598 if (Gv_AMupdate(stash, 0) == -1)
2600 mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table);
2603 amtp = (AMT*)mg->mg_ptr;
2604 if ( amtp->was_ok_sub != newgen )
2606 if (AMT_AMAGIC(amtp)) {
2607 CV * const ret = amtp->table[id];
2608 if (ret && isGV(ret)) { /* Autoloading stab */
2609 /* Passing it through may have resulted in a warning
2610 "Inherited AUTOLOAD for a non-method deprecated", since
2611 our caller is going through a function call, not a method call.
2612 So return the CV for AUTOLOAD, setting $AUTOLOAD. */
2613 GV * const gv = gv_fetchmethod(stash, PL_AMG_names[id]);
2625 /* Implement tryAMAGICun_MG macro.
2626 Do get magic, then see if the stack arg is overloaded and if so call it.
2628 AMGf_set return the arg using SETs rather than assigning to
2630 AMGf_numeric apply sv_2num to the stack arg.
2634 Perl_try_amagic_un(pTHX_ int method, int flags) {
2638 SV* const arg = TOPs;
2642 if (SvAMAGIC(arg) && (tmpsv = amagic_call(arg, &PL_sv_undef, method,
2643 AMGf_noright | AMGf_unary))) {
2644 if (flags & AMGf_set) {
2649 if (SvPADMY(TARG)) {
2650 sv_setsv(TARG, tmpsv);
2660 if ((flags & AMGf_numeric) && SvROK(arg))
2666 /* Implement tryAMAGICbin_MG macro.
2667 Do get magic, then see if the two stack args are overloaded and if so
2670 AMGf_set return the arg using SETs rather than assigning to
2672 AMGf_assign op may be called as mutator (eg +=)
2673 AMGf_numeric apply sv_2num to the stack arg.
2677 Perl_try_amagic_bin(pTHX_ int method, int flags) {
2680 SV* const left = TOPm1s;
2681 SV* const right = TOPs;
2687 if (SvAMAGIC(left) || SvAMAGIC(right)) {
2688 SV * const tmpsv = amagic_call(left, right, method,
2689 ((flags & AMGf_assign) && opASSIGN ? AMGf_assign: 0));
2691 if (flags & AMGf_set) {
2698 if (opASSIGN || SvPADMY(TARG)) {
2699 sv_setsv(TARG, tmpsv);
2709 if(left==right && SvGMAGICAL(left)) {
2710 SV * const left = sv_newmortal();
2712 /* Print the uninitialized warning now, so it includes the vari-
2715 if (ckWARN(WARN_UNINITIALIZED)) report_uninit(right);
2716 sv_setsv_flags(left, &PL_sv_no, 0);
2718 else sv_setsv_flags(left, right, 0);
2721 if (flags & AMGf_numeric) {
2723 *(sp-1) = sv_2num(TOPm1s);
2725 *sp = sv_2num(right);
2731 Perl_amagic_deref_call(pTHX_ SV *ref, int method) {
2734 PERL_ARGS_ASSERT_AMAGIC_DEREF_CALL;
2736 while (SvAMAGIC(ref) &&
2737 (tmpsv = amagic_call(ref, &PL_sv_undef, method,
2738 AMGf_noright | AMGf_unary))) {
2740 Perl_croak(aTHX_ "Overloaded dereference did not return a reference");
2741 if (tmpsv == ref || SvRV(tmpsv) == SvRV(ref)) {
2742 /* Bail out if it returns us the same reference. */
2747 return tmpsv ? tmpsv : ref;
2751 Perl_amagic_is_enabled(pTHX_ int method)
2753 SV *lex_mask = cop_hints_fetch_pvs(PL_curcop, "overloading", 0);
2755 assert(PL_curcop->cop_hints & HINT_NO_AMAGIC);
2757 if ( !lex_mask || !SvOK(lex_mask) )
2758 /* overloading lexically disabled */
2760 else if ( lex_mask && SvPOK(lex_mask) ) {
2761 /* we have an entry in the hints hash, check if method has been
2762 * masked by overloading.pm */
2764 const int offset = method / 8;
2765 const int bit = method % 8;
2766 char *pv = SvPV(lex_mask, len);
2768 /* Bit set, so this overloading operator is disabled */
2769 if ( (STRLEN)offset < len && pv[offset] & ( 1 << bit ) )
2776 Perl_amagic_call(pTHX_ SV *left, SV *right, int method, int flags)
2781 CV **cvp=NULL, **ocvp=NULL;
2782 AMT *amtp=NULL, *oamtp=NULL;
2783 int off = 0, off1, lr = 0, notfound = 0;
2784 int postpr = 0, force_cpy = 0;
2785 int assign = AMGf_assign & flags;
2786 const int assignshift = assign ? 1 : 0;
2787 int use_default_op = 0;
2788 int force_scalar = 0;
2794 PERL_ARGS_ASSERT_AMAGIC_CALL;
2796 if ( PL_curcop->cop_hints & HINT_NO_AMAGIC ) {
2797 if (!amagic_is_enabled(method)) return NULL;
2800 if (!(AMGf_noleft & flags) && SvAMAGIC(left)
2801 && (stash = SvSTASH(SvRV(left))) && Gv_AMG(stash)
2802 && (mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table))
2803 && (ocvp = cvp = (AMT_AMAGIC((AMT*)mg->mg_ptr)
2804 ? (oamtp = amtp = (AMT*)mg->mg_ptr)->table
2806 && ((cv = cvp[off=method+assignshift])
2807 || (assign && amtp->fallback > AMGfallNEVER && /* fallback to
2813 cv = cvp[off=method])))) {
2814 lr = -1; /* Call method for left argument */
2816 if (cvp && amtp->fallback > AMGfallNEVER && flags & AMGf_unary) {
2819 /* look for substituted methods */
2820 /* In all the covered cases we should be called with assign==0. */
2824 if ((cv = cvp[off=add_ass_amg])
2825 || ((cv = cvp[off = add_amg]) && (force_cpy = 0, postpr = 1))) {
2826 right = &PL_sv_yes; lr = -1; assign = 1;
2831 if ((cv = cvp[off = subtr_ass_amg])
2832 || ((cv = cvp[off = subtr_amg]) && (force_cpy = 0, postpr=1))) {
2833 right = &PL_sv_yes; lr = -1; assign = 1;
2837 (void)((cv = cvp[off=numer_amg]) || (cv = cvp[off=string_amg]));
2840 (void)((cv = cvp[off=string_amg]) || (cv = cvp[off=bool__amg]));
2843 (void)((cv = cvp[off=numer_amg]) || (cv = cvp[off=bool__amg]));
2846 (void)((cv = cvp[off=bool__amg])
2847 || (cv = cvp[off=numer_amg])
2848 || (cv = cvp[off=string_amg]));
2855 * SV* ref causes confusion with the interpreter variable of
2858 SV* const tmpRef=SvRV(left);
2859 if (!SvROK(tmpRef) && SvTYPE(tmpRef) <= SVt_PVMG) {
2861 * Just to be extra cautious. Maybe in some
2862 * additional cases sv_setsv is safe, too.
2864 SV* const newref = newSVsv(tmpRef);
2865 SvOBJECT_on(newref);
2866 /* No need to do SvAMAGIC_on here, as SvAMAGIC macros
2867 delegate to the stash. */
2868 SvSTASH_set(newref, MUTABLE_HV(SvREFCNT_inc(SvSTASH(tmpRef))));
2874 if ((cvp[off1=lt_amg] || cvp[off1=ncmp_amg])
2875 && ((cv = cvp[off=neg_amg]) || (cv = cvp[off=subtr_amg]))) {
2876 SV* const nullsv=sv_2mortal(newSViv(0));
2878 SV* const lessp = amagic_call(left,nullsv,
2879 lt_amg,AMGf_noright);
2880 logic = SvTRUE(lessp);
2882 SV* const lessp = amagic_call(left,nullsv,
2883 ncmp_amg,AMGf_noright);
2884 logic = (SvNV(lessp) < 0);
2887 if (off==subtr_amg) {
2898 if ((cv = cvp[off=subtr_amg])) {
2900 left = sv_2mortal(newSViv(0));
2905 case iter_amg: /* XXXX Eventually should do to_gv. */
2906 case ftest_amg: /* XXXX Eventually should do to_gv. */
2909 return NULL; /* Delegate operation to standard mechanisms. */
2917 return left; /* Delegate operation to standard mechanisms. */
2922 if (!cv) goto not_found;
2923 } else if (!(AMGf_noright & flags) && SvAMAGIC(right)
2924 && (stash = SvSTASH(SvRV(right))) && Gv_AMG(stash)
2925 && (mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table))
2926 && (cvp = (AMT_AMAGIC((AMT*)mg->mg_ptr)
2927 ? (amtp = (AMT*)mg->mg_ptr)->table
2929 && (cv = cvp[off=method])) { /* Method for right
2932 } else if (((cvp && amtp->fallback > AMGfallNEVER)
2933 || (ocvp && oamtp->fallback > AMGfallNEVER))
2934 && !(flags & AMGf_unary)) {
2935 /* We look for substitution for
2936 * comparison operations and
2938 if (method==concat_amg || method==concat_ass_amg
2939 || method==repeat_amg || method==repeat_ass_amg) {
2940 return NULL; /* Delegate operation to string conversion */
2962 if (ocvp && (oamtp->fallback > AMGfallNEVER)) {
2966 if (!cv && (cvp && amtp->fallback > AMGfallNEVER)) {
2976 not_found: /* No method found, either report or croak */
2984 return left; /* Delegate operation to standard mechanisms. */
2987 if (ocvp && (cv=ocvp[nomethod_amg])) { /* Call report method */
2988 notfound = 1; lr = -1;
2989 } else if (cvp && (cv=cvp[nomethod_amg])) {
2990 notfound = 1; lr = 1;
2991 } else if ((use_default_op =
2992 (!ocvp || oamtp->fallback >= AMGfallYES)
2993 && (!cvp || amtp->fallback >= AMGfallYES))
2995 /* Skip generating the "no method found" message. */
2999 if (off==-1) off=method;
3000 msg = sv_2mortal(Perl_newSVpvf(aTHX_
3001 "Operation \"%s\": no method found,%sargument %s%"SVf"%s%"SVf,
3002 AMG_id2name(method + assignshift),
3003 (flags & AMGf_unary ? " " : "\n\tleft "),
3005 "in overloaded package ":
3006 "has no overloaded magic",
3008 SVfARG(sv_2mortal(newSVhek(HvNAME_HEK(SvSTASH(SvRV(left)))))):
3011 ",\n\tright argument in overloaded package ":
3014 : ",\n\tright argument has no overloaded magic"),
3016 SVfARG(sv_2mortal(newSVhek(HvNAME_HEK(SvSTASH(SvRV(right)))))):
3017 SVfARG(&PL_sv_no)));
3018 if (use_default_op) {
3019 DEBUG_o( Perl_deb(aTHX_ "%"SVf, SVfARG(msg)) );
3021 Perl_croak(aTHX_ "%"SVf, SVfARG(msg));
3025 force_cpy = force_cpy || assign;
3030 /* in these cases, we're calling '+' or '-' as a fallback for a ++ or --
3031 * operation. we need this to return a value, so that it can be assigned
3032 * later on, in the postpr block (case inc_amg/dec_amg), even if the
3033 * increment or decrement was itself called in void context */
3039 if (off == subtr_amg)
3042 /* in these cases, we're calling an assignment variant of an operator
3043 * (+= rather than +, for instance). regardless of whether it's a
3044 * fallback or not, it always has to return a value, which will be
3045 * assigned to the proper variable later */
3062 /* the copy constructor always needs to return a value */
3066 /* because of the way these are implemented (they don't perform the
3067 * dereferencing themselves, they return a reference that perl then
3068 * dereferences later), they always have to be in scalar context */
3076 /* these don't have an op of their own; they're triggered by their parent
3077 * op, so the context there isn't meaningful ('$a and foo()' in void
3078 * context still needs to pass scalar context on to $a's bool overload) */
3088 DEBUG_o(Perl_deb(aTHX_
3089 "Overloaded operator \"%s\"%s%s%s:\n\tmethod%s found%s in package %"SVf"%s\n",
3091 method+assignshift==off? "" :
3093 method+assignshift==off? "" :
3094 AMG_id2name(method+assignshift),
3095 method+assignshift==off? "" : "\")",
3096 flags & AMGf_unary? "" :
3097 lr==1 ? " for right argument": " for left argument",
3098 flags & AMGf_unary? " for argument" : "",
3099 stash ? SVfARG(sv_2mortal(newSVhek(HvNAME_HEK(stash)))) : SVfARG(newSVpvs_flags("null", SVs_TEMP)),
3100 fl? ",\n\tassignment variant used": "") );
3103 /* Since we use shallow copy during assignment, we need
3104 * to dublicate the contents, probably calling user-supplied
3105 * version of copy operator
3107 /* We need to copy in following cases:
3108 * a) Assignment form was called.
3109 * assignshift==1, assign==T, method + 1 == off
3110 * b) Increment or decrement, called directly.
3111 * assignshift==0, assign==0, method + 0 == off
3112 * c) Increment or decrement, translated to assignment add/subtr.
3113 * assignshift==0, assign==T,
3115 * d) Increment or decrement, translated to nomethod.
3116 * assignshift==0, assign==0,
3118 * e) Assignment form translated to nomethod.
3119 * assignshift==1, assign==T, method + 1 != off
3122 /* off is method, method+assignshift, or a result of opcode substitution.
3123 * In the latter case assignshift==0, so only notfound case is important.
3125 if ( (lr == -1) && ( ( (method + assignshift == off)
3126 && (assign || (method == inc_amg) || (method == dec_amg)))
3129 /* newSVsv does not behave as advertised, so we copy missing
3130 * information by hand */
3131 SV *tmpRef = SvRV(left);
3133 if (SvREFCNT(tmpRef) > 1 && (rv_copy = AMG_CALLunary(left,copy_amg))) {
3134 SvRV_set(left, rv_copy);
3136 SvREFCNT_dec_NN(tmpRef);
3144 const bool oldcatch = CATCH_GET;
3146 int gimme = force_scalar ? G_SCALAR : GIMME_V;
3149 Zero(&myop, 1, BINOP);
3150 myop.op_last = (OP *) &myop;
3151 myop.op_next = NULL;
3152 myop.op_flags = OPf_STACKED;
3156 myop.op_flags |= OPf_WANT_VOID;
3159 if (flags & AMGf_want_list) {
3160 myop.op_flags |= OPf_WANT_LIST;
3165 myop.op_flags |= OPf_WANT_SCALAR;
3169 PUSHSTACKi(PERLSI_OVERLOAD);
3172 PL_op = (OP *) &myop;
3173 if (PERLDB_SUB && PL_curstash != PL_debstash)
3174 PL_op->op_private |= OPpENTERSUB_DB;
3176 Perl_pp_pushmark(aTHX);
3178 EXTEND(SP, notfound + 5);
3179 PUSHs(lr>0? right: left);
3180 PUSHs(lr>0? left: right);
3181 PUSHs( lr > 0 ? &PL_sv_yes : ( assign ? &PL_sv_undef : &PL_sv_no ));
3183 PUSHs(newSVpvn_flags(AMG_id2name(method + assignshift),
3184 AMG_id2namelen(method + assignshift), SVs_TEMP));
3186 PUSHs(MUTABLE_SV(cv));
3190 if ((PL_op = PL_ppaddr[OP_ENTERSUB](aTHX)))
3194 nret = SP - (PL_stack_base + oldmark);
3198 /* returning NULL has another meaning, and we check the context
3199 * at the call site too, so this can be differentiated from the
3202 SP = PL_stack_base + oldmark;
3205 if (flags & AMGf_want_list) {
3206 res = sv_2mortal((SV *)newAV());
3207 av_extend((AV *)res, nret);
3209 av_store((AV *)res, nret, POPs);
3221 CATCH_SET(oldcatch);
3228 ans=SvIV(res)<=0; break;
3231 ans=SvIV(res)<0; break;
3234 ans=SvIV(res)>=0; break;
3237 ans=SvIV(res)>0; break;
3240 ans=SvIV(res)==0; break;
3243 ans=SvIV(res)!=0; break;
3246 SvSetSV(left,res); return left;
3248 ans=!SvTRUE(res); break;
3253 } else if (method==copy_amg) {
3255 Perl_croak(aTHX_ "Copy method did not return a reference");
3257 return SvREFCNT_inc(SvRV(res));
3265 Perl_gv_name_set(pTHX_ GV *gv, const char *name, U32 len, U32 flags)
3270 PERL_ARGS_ASSERT_GV_NAME_SET;
3273 Perl_croak(aTHX_ "panic: gv name too long (%"UVuf")", (UV) len);
3275 if (!(flags & GV_ADD) && GvNAME_HEK(gv)) {
3276 unshare_hek(GvNAME_HEK(gv));
3279 PERL_HASH(hash, name, len);
3280 GvNAME_HEK(gv) = share_hek(name, (flags & SVf_UTF8 ? -(I32)len : (I32)len), hash);
3284 =for apidoc gv_try_downgrade
3286 If the typeglob C<gv> can be expressed more succinctly, by having
3287 something other than a real GV in its place in the stash, replace it
3288 with the optimised form. Basic requirements for this are that C<gv>
3289 is a real typeglob, is sufficiently ordinary, and is only referenced
3290 from its package. This function is meant to be used when a GV has been
3291 looked up in part to see what was there, causing upgrading, but based
3292 on what was found it turns out that the real GV isn't required after all.
3294 If C<gv> is a completely empty typeglob, it is deleted from the stash.
3296 If C<gv> is a typeglob containing only a sufficiently-ordinary constant
3297 sub, the typeglob is replaced with a scalar-reference placeholder that
3298 more compactly represents the same thing.
3304 Perl_gv_try_downgrade(pTHX_ GV *gv)
3310 PERL_ARGS_ASSERT_GV_TRY_DOWNGRADE;
3312 /* XXX Why and where does this leave dangling pointers during global
3314 if (PL_phase == PERL_PHASE_DESTRUCT) return;
3316 if (!(SvREFCNT(gv) == 1 && SvTYPE(gv) == SVt_PVGV && !SvFAKE(gv) &&
3317 !SvOBJECT(gv) && !SvREADONLY(gv) &&
3318 isGV_with_GP(gv) && GvGP(gv) &&
3319 !GvINTRO(gv) && GvREFCNT(gv) == 1 &&
3320 !GvSV(gv) && !GvAV(gv) && !GvHV(gv) && !GvIOp(gv) && !GvFORM(gv) &&
3321 GvEGVx(gv) == gv && (stash = GvSTASH(gv))))
3323 if (gv == PL_statgv || gv == PL_last_in_gv || gv == PL_stderrgv)
3325 if (SvMAGICAL(gv)) {
3327 /* only backref magic is allowed */
3328 if (SvGMAGICAL(gv) || SvSMAGICAL(gv))
3330 for (mg = SvMAGIC(gv); mg; mg = mg->mg_moremagic) {
3331 if (mg->mg_type != PERL_MAGIC_backref)
3337 HEK *gvnhek = GvNAME_HEK(gv);
3338 (void)hv_deletehek(stash, gvnhek, G_DISCARD);
3339 } else if (GvMULTI(gv) && cv &&
3340 !SvOBJECT(cv) && !SvMAGICAL(cv) && !SvREADONLY(cv) &&
3341 CvSTASH(cv) == stash && CvGV(cv) == gv &&
3342 CvCONST(cv) && !CvMETHOD(cv) && !CvLVALUE(cv) && !CvUNIQUE(cv) &&
3343 !CvNODEBUG(cv) && !CvCLONE(cv) && !CvCLONED(cv) && !CvANON(cv) &&
3344 (namehek = GvNAME_HEK(gv)) &&
3345 (gvp = hv_fetch(stash, HEK_KEY(namehek),
3346 HEK_LEN(namehek)*(HEK_UTF8(namehek) ? -1 : 1), 0)) &&
3348 SV *value = SvREFCNT_inc(CvXSUBANY(cv).any_ptr);
3349 const bool imported = !!GvIMPORTED_CV(gv);
3353 SvFLAGS(gv) = SVt_IV|SVf_ROK|SVprv_PCS_IMPORTED * imported;
3354 SvANY(gv) = (XPVGV*)((char*)&(gv->sv_u.svu_iv) -
3355 STRUCT_OFFSET(XPVIV, xiv_iv));
3356 SvRV_set(gv, value);
3363 core_xsub(pTHX_ CV* cv)
3366 "&CORE::%s cannot be called directly", GvNAME(CvGV(cv))
3372 * c-indentation-style: bsd
3374 * indent-tabs-mode: nil
3377 * ex: set ts=8 sts=4 sw=4 et: