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);
85 *where = newSV_type(type);
86 if (type == SVt_PVAV && GvNAMELEN(gv) == 3
87 && strnEQ(GvNAME(gv), "ISA", 3))
88 sv_magic(*where, (SV *)gv, PERL_MAGIC_isa, NULL, 0);
93 Perl_gv_fetchfile(pTHX_ const char *name)
95 PERL_ARGS_ASSERT_GV_FETCHFILE;
96 return gv_fetchfile_flags(name, strlen(name), 0);
100 Perl_gv_fetchfile_flags(pTHX_ const char *const name, const STRLEN namelen,
106 const STRLEN tmplen = namelen + 2;
109 PERL_ARGS_ASSERT_GV_FETCHFILE_FLAGS;
110 PERL_UNUSED_ARG(flags);
115 if (tmplen <= sizeof smallbuf)
118 Newx(tmpbuf, tmplen, char);
119 /* This is where the debugger's %{"::_<$filename"} hash is created */
122 memcpy(tmpbuf + 2, name, namelen);
123 gv = *(GV**)hv_fetch(PL_defstash, tmpbuf, tmplen, TRUE);
125 gv_init(gv, PL_defstash, tmpbuf, tmplen, FALSE);
126 #ifdef PERL_DONT_CREATE_GVSV
127 GvSV(gv) = newSVpvn(name, namelen);
129 sv_setpvn(GvSV(gv), name, namelen);
132 if ((PERLDB_LINE || PERLDB_SAVESRC) && !GvAV(gv))
133 hv_magic(GvHVn(gv_AVadd(gv)), NULL, PERL_MAGIC_dbfile);
134 if (tmpbuf != smallbuf)
140 =for apidoc gv_const_sv
142 If C<gv> is a typeglob whose subroutine entry is a constant sub eligible for
143 inlining, or C<gv> is a placeholder reference that would be promoted to such
144 a typeglob, then returns the value returned by the sub. Otherwise, returns
151 Perl_gv_const_sv(pTHX_ GV *gv)
153 PERL_ARGS_ASSERT_GV_CONST_SV;
155 if (SvTYPE(gv) == SVt_PVGV)
156 return cv_const_sv(GvCVu(gv));
157 return SvROK(gv) ? SvRV(gv) : NULL;
161 Perl_newGP(pTHX_ GV *const gv)
166 const char *const file
167 = (PL_curcop && CopFILE(PL_curcop)) ? CopFILE(PL_curcop) : "";
168 const STRLEN len = strlen(file);
170 SV *const temp_sv = CopFILESV(PL_curcop);
174 PERL_ARGS_ASSERT_NEWGP;
177 file = SvPVX(temp_sv);
178 len = SvCUR(temp_sv);
185 PERL_HASH(hash, file, len);
189 #ifndef PERL_DONT_CREATE_GVSV
190 gp->gp_sv = newSV(0);
193 gp->gp_line = PL_curcop ? CopLINE(PL_curcop) : 0;
194 /* XXX Ideally this cast would be replaced with a change to const char*
196 gp->gp_file_hek = share_hek(file, len, hash);
203 /* Assign CvGV(cv) = gv, handling weak references.
204 * See also S_anonymise_cv_maybe */
207 Perl_cvgv_set(pTHX_ CV* cv, GV* gv)
209 GV * const oldgv = CvGV(cv);
211 PERL_ARGS_ASSERT_CVGV_SET;
222 sv_del_backref(MUTABLE_SV(oldgv), MUTABLE_SV(cv));
225 else if ((hek = CvNAME_HEK(cv))) unshare_hek(hek);
227 SvANY(cv)->xcv_gv_u.xcv_gv = gv;
228 assert(!CvCVGV_RC(cv));
233 if (isGV_with_GP(gv) && GvGP(gv) && (GvCV(gv) == cv || GvFORM(gv) == cv))
234 Perl_sv_add_backref(aTHX_ MUTABLE_SV(gv), MUTABLE_SV(cv));
237 SvREFCNT_inc_simple_void_NN(gv);
241 /* Assign CvSTASH(cv) = st, handling weak references. */
244 Perl_cvstash_set(pTHX_ CV *cv, HV *st)
246 HV *oldst = CvSTASH(cv);
247 PERL_ARGS_ASSERT_CVSTASH_SET;
251 sv_del_backref(MUTABLE_SV(oldst), MUTABLE_SV(cv));
252 SvANY(cv)->xcv_stash = st;
254 Perl_sv_add_backref(aTHX_ MUTABLE_SV(st), MUTABLE_SV(cv));
258 =for apidoc gv_init_pvn
260 Converts a scalar into a typeglob. This is an incoercible typeglob;
261 assigning a reference to it will assign to one of its slots, instead of
262 overwriting it as happens with typeglobs created by SvSetSV. Converting
263 any scalar that is SvOK() may produce unpredictable results and is reserved
264 for perl's internal use.
266 C<gv> is the scalar to be converted.
268 C<stash> is the parent stash/package, if any.
270 C<name> and C<len> give the name. The name must be unqualified;
271 that is, it must not include the package name. If C<gv> is a
272 stash element, it is the caller's responsibility to ensure that the name
273 passed to this function matches the name of the element. If it does not
274 match, perl's internal bookkeeping will get out of sync.
276 C<flags> can be set to SVf_UTF8 if C<name> is a UTF8 string, or
277 the return value of SvUTF8(sv). It can also take the
278 GV_ADDMULTI flag, which means to pretend that the GV has been
279 seen before (i.e., suppress "Used once" warnings).
283 The old form of gv_init_pvn(). It does not work with UTF8 strings, as it
284 has no flags parameter. If the C<multi> parameter is set, the
285 GV_ADDMULTI flag will be passed to gv_init_pvn().
287 =for apidoc gv_init_pv
289 Same as gv_init_pvn(), but takes a nul-terminated string for the name
290 instead of separate char * and length parameters.
292 =for apidoc gv_init_sv
294 Same as gv_init_pvn(), but takes an SV * for the name instead of separate
295 char * and length parameters. C<flags> is currently unused.
301 Perl_gv_init_sv(pTHX_ GV *gv, HV *stash, SV* namesv, U32 flags)
305 PERL_ARGS_ASSERT_GV_INIT_SV;
306 namepv = SvPV(namesv, namelen);
309 gv_init_pvn(gv, stash, namepv, namelen, flags);
313 Perl_gv_init_pv(pTHX_ GV *gv, HV *stash, const char *name, U32 flags)
315 PERL_ARGS_ASSERT_GV_INIT_PV;
316 gv_init_pvn(gv, stash, name, strlen(name), flags);
320 Perl_gv_init_pvn(pTHX_ GV *gv, HV *stash, const char *name, STRLEN len, U32 flags)
323 const U32 old_type = SvTYPE(gv);
324 const bool doproto = old_type > SVt_NULL;
325 char * const proto = (doproto && SvPOK(gv))
326 ? ((void)(SvIsCOW(gv) && (sv_force_normal((SV *)gv), 0)), SvPVX(gv))
328 const STRLEN protolen = proto ? SvCUR(gv) : 0;
329 const U32 proto_utf8 = proto ? SvUTF8(gv) : 0;
330 SV *const has_constant = doproto && SvROK(gv) ? SvRV(gv) : NULL;
331 const U32 exported_constant = has_constant ? SvPCS_IMPORTED(gv) : 0;
333 PERL_ARGS_ASSERT_GV_INIT_PVN;
334 assert (!(proto && has_constant));
337 /* The constant has to be a simple scalar type. */
338 switch (SvTYPE(has_constant)) {
344 Perl_croak(aTHX_ "Cannot convert a reference to %s to typeglob",
345 sv_reftype(has_constant, 0));
353 if (old_type < SVt_PVGV) {
354 if (old_type >= SVt_PV)
356 sv_upgrade(MUTABLE_SV(gv), SVt_PVGV);
364 Safefree(SvPVX_mutable(gv));
369 GvGP_set(gv, Perl_newGP(aTHX_ gv));
372 Perl_sv_add_backref(aTHX_ MUTABLE_SV(stash), MUTABLE_SV(gv));
373 gv_name_set(gv, name, len, GV_ADD | ( flags & SVf_UTF8 ? SVf_UTF8 : 0 ));
374 if (flags & GV_ADDMULTI || doproto) /* doproto means it */
375 GvMULTI_on(gv); /* _was_ mentioned */
379 /* newCONSTSUB takes ownership of the reference from us. */
380 cv = newCONSTSUB_flags(stash, name, len, flags, has_constant);
381 /* In case op.c:S_process_special_blocks stole it: */
383 GvCV_set(gv, (CV *)SvREFCNT_inc_simple_NN(cv));
384 assert(GvCV(gv) == cv); /* newCONSTSUB should have set this */
385 /* If this reference was a copy of another, then the subroutine
386 must have been "imported", by a Perl space assignment to a GV
387 from a reference to CV. */
388 if (exported_constant)
389 GvIMPORTED_CV_on(gv);
390 CvSTASH_set(cv, PL_curstash); /* XXX Why is this needed? */
395 sv_usepvn_flags(MUTABLE_SV(cv), proto, protolen,
396 SV_HAS_TRAILING_NUL);
397 if ( proto_utf8 ) SvUTF8_on(MUTABLE_SV(cv));
403 S_gv_init_svtype(pTHX_ GV *gv, const svtype sv_type)
405 PERL_ARGS_ASSERT_GV_INIT_SVTYPE;
417 #ifdef PERL_DONT_CREATE_GVSV
425 /* Work round what appears to be a bug in Sun C++ 5.8 2005/10/13
426 If we just cast GvSVn(gv) to void, it ignores evaluating it for
433 static void core_xsub(pTHX_ CV* cv);
436 S_maybe_add_coresub(pTHX_ HV * const stash, GV *gv,
437 const char * const name, const STRLEN len)
439 const int code = keyword(name, len, 1);
440 static const char file[] = __FILE__;
441 CV *cv, *oldcompcv = NULL;
444 bool ampable = TRUE; /* &{}-able */
445 COP *oldcurcop = NULL;
446 yy_parser *oldparser = NULL;
447 I32 oldsavestack_ix = 0;
452 if (!code) return NULL; /* Not a keyword */
453 switch (code < 0 ? -code : code) {
454 /* no support for \&CORE::infix;
455 no support for funcs that do not parse like funcs */
456 case KEY___DATA__: case KEY___END__: case KEY_and: case KEY_AUTOLOAD:
457 case KEY_BEGIN : case KEY_CHECK : case KEY_cmp: case KEY_CORE :
458 case KEY_default : case KEY_DESTROY:
459 case KEY_do : case KEY_dump : case KEY_else : case KEY_elsif :
460 case KEY_END : case KEY_eq : case KEY_eval :
461 case KEY_for : case KEY_foreach: case KEY_format: case KEY_ge :
462 case KEY_given : case KEY_goto : case KEY_grep :
463 case KEY_gt : case KEY_if: case KEY_INIT: case KEY_last: case KEY_le:
464 case KEY_local: case KEY_lt: case KEY_m : case KEY_map : case KEY_my:
465 case KEY_ne : case KEY_next : case KEY_no: case KEY_or: case KEY_our:
466 case KEY_package: case KEY_print: case KEY_printf:
467 case KEY_q : case KEY_qq : case KEY_qr : case KEY_qw :
468 case KEY_qx : case KEY_redo : case KEY_require: case KEY_return:
469 case KEY_s : case KEY_say : case KEY_sort :
470 case KEY_state: case KEY_sub :
471 case KEY_tr : case KEY_UNITCHECK: case KEY_unless:
472 case KEY_until: case KEY_use : case KEY_when : case KEY_while :
473 case KEY_x : case KEY_xor : case KEY_y :
476 case KEY_chomp: case KEY_chop: case KEY_defined: case KEY_delete:
477 case KEY_each : case KEY_eof : case KEY_exec : case KEY_exists:
483 case KEY_splice: case KEY_split:
486 case KEY_truncate: case KEY_unlink:
493 gv_init(gv, stash, name, len, TRUE);
498 oldcurcop = PL_curcop;
499 oldparser = PL_parser;
500 lex_start(NULL, NULL, 0);
501 oldcompcv = PL_compcv;
502 PL_compcv = NULL; /* Prevent start_subparse from setting
504 oldsavestack_ix = start_subparse(FALSE,0);
508 /* Avoid calling newXS, as it calls us, and things start to
510 cv = MUTABLE_CV(newSV_type(SVt_PVCV));
513 mro_method_changed_in(GvSTASH(gv));
515 CvXSUB(cv) = core_xsub;
517 CvGV_set(cv, gv); /* This stops new ATTRSUB from setting CvFILE
519 (void)gv_fetchfile(file);
520 CvFILE(cv) = (char *)file;
521 /* XXX This is inefficient, as doing things this order causes
522 a prototype check in newATTRSUB. But we have to do
523 it this order as we need an op number before calling
525 (void)core_prototype((SV *)cv, name, code, &opnum);
527 (void)hv_store(stash,name,len,(SV *)gv,0);
531 oldsavestack_ix, (OP *)gv,
536 : newSVpvn(name,len),
541 assert(GvCV(gv) == cv);
542 if (opnum != OP_VEC && opnum != OP_SUBSTR && opnum != OP_POS
543 && opnum != OP_UNDEF)
544 CvLVALUE_off(cv); /* Now *that* was a neat trick. */
546 PL_parser = oldparser;
547 PL_curcop = oldcurcop;
548 PL_compcv = oldcompcv;
550 opnumsv = opnum ? newSVuv((UV)opnum) : (SV *)NULL;
552 cv, Perl_ck_entersub_args_core, opnumsv ? opnumsv : (SV *)cv
554 SvREFCNT_dec(opnumsv);
559 =for apidoc gv_fetchmeth
561 Like L</gv_fetchmeth_pvn>, but lacks a flags parameter.
563 =for apidoc gv_fetchmeth_sv
565 Exactly like L</gv_fetchmeth_pvn>, but takes the name string in the form
566 of an SV instead of a string/length pair.
572 Perl_gv_fetchmeth_sv(pTHX_ HV *stash, SV *namesv, I32 level, U32 flags)
576 PERL_ARGS_ASSERT_GV_FETCHMETH_SV;
577 namepv = SvPV(namesv, namelen);
580 return gv_fetchmeth_pvn(stash, namepv, namelen, level, flags);
584 =for apidoc gv_fetchmeth_pv
586 Exactly like L</gv_fetchmeth_pvn>, but takes a nul-terminated string
587 instead of a string/length pair.
593 Perl_gv_fetchmeth_pv(pTHX_ HV *stash, const char *name, I32 level, U32 flags)
595 PERL_ARGS_ASSERT_GV_FETCHMETH_PV;
596 return gv_fetchmeth_pvn(stash, name, strlen(name), level, flags);
600 =for apidoc gv_fetchmeth_pvn
602 Returns the glob with the given C<name> and a defined subroutine or
603 C<NULL>. The glob lives in the given C<stash>, or in the stashes
604 accessible via @ISA and UNIVERSAL::.
606 The argument C<level> should be either 0 or -1. If C<level==0>, as a
607 side-effect creates a glob with the given C<name> in the given C<stash>
608 which in the case of success contains an alias for the subroutine, and sets
609 up caching info for this glob.
611 Currently, the only significant value for C<flags> is SVf_UTF8.
613 This function grants C<"SUPER"> token as a postfix of the stash name. The
614 GV returned from C<gv_fetchmeth> may be a method cache entry, which is not
615 visible to Perl code. So when calling C<call_sv>, you should not use
616 the GV directly; instead, you should use the method's CV, which can be
617 obtained from the GV with the C<GvCV> macro.
622 /* NOTE: No support for tied ISA */
625 Perl_gv_fetchmeth_pvn(pTHX_ HV *stash, const char *name, STRLEN len, I32 level, U32 flags)
633 GV* candidate = NULL;
637 I32 create = (level >= 0) ? 1 : 0;
641 U32 is_utf8 = flags & SVf_UTF8;
643 PERL_ARGS_ASSERT_GV_FETCHMETH_PVN;
645 /* UNIVERSAL methods should be callable without a stash */
647 create = 0; /* probably appropriate */
648 if(!(stash = gv_stashpvs("UNIVERSAL", 0)))
654 hvname = HvNAME_get(stash);
656 Perl_croak(aTHX_ "Can't use anonymous symbol table for method lookup");
661 DEBUG_o( Perl_deb(aTHX_ "Looking for method %s in package %s\n",name,hvname) );
663 topgen_cmp = HvMROMETA(stash)->cache_gen + PL_sub_generation;
665 /* check locally for a real method or a cache entry */
666 gvp = (GV**)hv_fetch(stash, name, is_utf8 ? -(I32)len : (I32)len, create);
671 if (SvTYPE(topgv) != SVt_PVGV)
672 gv_init_pvn(topgv, stash, name, len, GV_ADDMULTI|is_utf8);
673 if ((cand_cv = GvCV(topgv))) {
674 /* If genuine method or valid cache entry, use it */
675 if (!GvCVGEN(topgv) || GvCVGEN(topgv) == topgen_cmp) {
679 /* stale cache entry, junk it and move on */
680 SvREFCNT_dec(cand_cv);
681 GvCV_set(topgv, NULL);
686 else if (GvCVGEN(topgv) == topgen_cmp) {
687 /* cache indicates no such method definitively */
690 else if (len > 1 /* shortest is uc */ && HvNAMELEN_get(stash) == 4
691 && strnEQ(hvname, "CORE", 4)
692 && S_maybe_add_coresub(aTHX_ NULL,topgv,name,len))
696 packlen = HvNAMELEN_get(stash);
697 if ((packlen >= 7 && strEQ(hvname + packlen - 7, "::SUPER"))
698 || (packlen == 5 && strEQ(hvname, "SUPER"))) {
700 basestash = packlen == 5
702 : gv_stashpvn(hvname, packlen - 7,
703 GV_ADD | (HvNAMEUTF8(stash) ? SVf_UTF8 : 0));
704 linear_av = mro_get_linear_isa(basestash);
707 linear_av = mro_get_linear_isa(stash); /* has ourselves at the top of the list */
710 linear_svp = AvARRAY(linear_av) + 1; /* skip over self */
711 items = AvFILLp(linear_av); /* no +1, to skip over self */
713 linear_sv = *linear_svp++;
715 cstash = gv_stashsv(linear_sv, 0);
718 Perl_ck_warner(aTHX_ packWARN(WARN_SYNTAX),
719 "Can't locate package %"SVf" for @%"HEKf"::ISA",
721 HEKfARG(HvNAME_HEK(stash)));
727 gvp = (GV**)hv_fetch(cstash, name, is_utf8 ? -(I32)len : (I32)len, 0);
729 if (len > 1 && HvNAMELEN_get(cstash) == 4) {
730 const char *hvname = HvNAME(cstash); assert(hvname);
731 if (strnEQ(hvname, "CORE", 4)
733 S_maybe_add_coresub(aTHX_ cstash,NULL,name,len)
739 else candidate = *gvp;
742 if (SvTYPE(candidate) != SVt_PVGV)
743 gv_init_pvn(candidate, cstash, name, len, GV_ADDMULTI|is_utf8);
744 if (SvTYPE(candidate) == SVt_PVGV && (cand_cv = GvCV(candidate)) && !GvCVGEN(candidate)) {
746 * Found real method, cache method in topgv if:
747 * 1. topgv has no synonyms (else inheritance crosses wires)
748 * 2. method isn't a stub (else AUTOLOAD fails spectacularly)
750 if (topgv && (GvREFCNT(topgv) == 1) && (CvROOT(cand_cv) || CvXSUB(cand_cv))) {
751 CV *old_cv = GvCV(topgv);
752 SvREFCNT_dec(old_cv);
753 SvREFCNT_inc_simple_void_NN(cand_cv);
754 GvCV_set(topgv, cand_cv);
755 GvCVGEN(topgv) = topgen_cmp;
761 /* Check UNIVERSAL without caching */
762 if(level == 0 || level == -1) {
763 candidate = gv_fetchmeth_pvn(NULL, name, len, 1, flags);
765 cand_cv = GvCV(candidate);
766 if (topgv && (GvREFCNT(topgv) == 1) && (CvROOT(cand_cv) || CvXSUB(cand_cv))) {
767 CV *old_cv = GvCV(topgv);
768 SvREFCNT_dec(old_cv);
769 SvREFCNT_inc_simple_void_NN(cand_cv);
770 GvCV_set(topgv, cand_cv);
771 GvCVGEN(topgv) = topgen_cmp;
777 if (topgv && GvREFCNT(topgv) == 1) {
778 /* cache the fact that the method is not defined */
779 GvCVGEN(topgv) = topgen_cmp;
786 =for apidoc gv_fetchmeth_autoload
788 This is the old form of L</gv_fetchmeth_pvn_autoload>, which has no flags
791 =for apidoc gv_fetchmeth_sv_autoload
793 Exactly like L</gv_fetchmeth_pvn_autoload>, but takes the name string in the form
794 of an SV instead of a string/length pair.
800 Perl_gv_fetchmeth_sv_autoload(pTHX_ HV *stash, SV *namesv, I32 level, U32 flags)
804 PERL_ARGS_ASSERT_GV_FETCHMETH_SV_AUTOLOAD;
805 namepv = SvPV(namesv, namelen);
808 return gv_fetchmeth_pvn_autoload(stash, namepv, namelen, level, flags);
812 =for apidoc gv_fetchmeth_pv_autoload
814 Exactly like L</gv_fetchmeth_pvn_autoload>, but takes a nul-terminated string
815 instead of a string/length pair.
821 Perl_gv_fetchmeth_pv_autoload(pTHX_ HV *stash, const char *name, I32 level, U32 flags)
823 PERL_ARGS_ASSERT_GV_FETCHMETH_PV_AUTOLOAD;
824 return gv_fetchmeth_pvn_autoload(stash, name, strlen(name), level, flags);
828 =for apidoc gv_fetchmeth_pvn_autoload
830 Same as gv_fetchmeth_pvn(), but looks for autoloaded subroutines too.
831 Returns a glob for the subroutine.
833 For an autoloaded subroutine without a GV, will create a GV even
834 if C<level < 0>. For an autoloaded subroutine without a stub, GvCV()
835 of the result may be zero.
837 Currently, the only significant value for C<flags> is SVf_UTF8.
843 Perl_gv_fetchmeth_pvn_autoload(pTHX_ HV *stash, const char *name, STRLEN len, I32 level, U32 flags)
845 GV *gv = gv_fetchmeth_pvn(stash, name, len, level, flags);
847 PERL_ARGS_ASSERT_GV_FETCHMETH_PVN_AUTOLOAD;
854 return NULL; /* UNIVERSAL::AUTOLOAD could cause trouble */
855 if (len == S_autolen && memEQ(name, S_autoload, S_autolen))
857 if (!(gv = gv_fetchmeth_pvn(stash, S_autoload, S_autolen, FALSE, flags)))
860 if (!(CvROOT(cv) || CvXSUB(cv)))
862 /* Have an autoload */
863 if (level < 0) /* Cannot do without a stub */
864 gv_fetchmeth_pvn(stash, name, len, 0, flags);
865 gvp = (GV**)hv_fetch(stash, name,
866 (flags & SVf_UTF8) ? -(I32)len : (I32)len, (level >= 0));
875 =for apidoc gv_fetchmethod_autoload
877 Returns the glob which contains the subroutine to call to invoke the method
878 on the C<stash>. In fact in the presence of autoloading this may be the
879 glob for "AUTOLOAD". In this case the corresponding variable $AUTOLOAD is
882 The third parameter of C<gv_fetchmethod_autoload> determines whether
883 AUTOLOAD lookup is performed if the given method is not present: non-zero
884 means yes, look for AUTOLOAD; zero means no, don't look for AUTOLOAD.
885 Calling C<gv_fetchmethod> is equivalent to calling C<gv_fetchmethod_autoload>
886 with a non-zero C<autoload> parameter.
888 These functions grant C<"SUPER"> token as a prefix of the method name. Note
889 that if you want to keep the returned glob for a long time, you need to
890 check for it being "AUTOLOAD", since at the later time the call may load a
891 different subroutine due to $AUTOLOAD changing its value. Use the glob
892 created via a side effect to do this.
894 These functions have the same side-effects and as C<gv_fetchmeth> with
895 C<level==0>. C<name> should be writable if contains C<':'> or C<'
896 ''>. The warning against passing the GV returned by C<gv_fetchmeth> to
897 C<call_sv> apply equally to these functions.
903 S_gv_get_super_pkg(pTHX_ const char* name, I32 namelen, U32 flags)
910 PERL_ARGS_ASSERT_GV_GET_SUPER_PKG;
912 stash = gv_stashpvn(name, namelen, flags);
913 if(stash) return stash;
915 /* If we must create it, give it an @ISA array containing
916 the real package this SUPER is for, so that it's tied
917 into the cache invalidation code correctly */
918 stash = gv_stashpvn(name, namelen, GV_ADD | flags);
919 gvp = (GV**)hv_fetchs(stash, "ISA", TRUE);
921 gv_init(gv, stash, "ISA", 3, TRUE);
922 superisa = GvAVn(gv);
924 sv_magic(MUTABLE_SV(superisa), MUTABLE_SV(gv), PERL_MAGIC_isa, NULL, 0);
925 av_push(superisa, newSVhek(CopSTASH(PL_curcop)
926 ? HvENAME_HEK(CopSTASH(PL_curcop)) : NULL));
932 Perl_gv_fetchmethod_autoload(pTHX_ HV *stash, const char *name, I32 autoload)
934 PERL_ARGS_ASSERT_GV_FETCHMETHOD_AUTOLOAD;
936 return gv_fetchmethod_flags(stash, name, autoload ? GV_AUTOLOAD : 0);
940 Perl_gv_fetchmethod_sv_flags(pTHX_ HV *stash, SV *namesv, U32 flags)
944 PERL_ARGS_ASSERT_GV_FETCHMETHOD_SV_FLAGS;
945 namepv = SvPV(namesv, namelen);
948 return gv_fetchmethod_pvn_flags(stash, namepv, namelen, flags);
952 Perl_gv_fetchmethod_pv_flags(pTHX_ HV *stash, const char *name, U32 flags)
954 PERL_ARGS_ASSERT_GV_FETCHMETHOD_PV_FLAGS;
955 return gv_fetchmethod_pvn_flags(stash, name, strlen(name), flags);
958 /* Don't merge this yet, as it's likely to get a len parameter, and possibly
961 Perl_gv_fetchmethod_pvn_flags(pTHX_ HV *stash, const char *name, const STRLEN len, U32 flags)
965 const char *nsplit = NULL;
968 const char * const origname = name;
969 SV *const error_report = MUTABLE_SV(stash);
970 const U32 autoload = flags & GV_AUTOLOAD;
971 const U32 do_croak = flags & GV_CROAK;
972 const U32 is_utf8 = flags & SVf_UTF8;
974 PERL_ARGS_ASSERT_GV_FETCHMETHOD_PVN_FLAGS;
976 if (SvTYPE(stash) < SVt_PVHV)
979 /* The only way stash can become NULL later on is if nsplit is set,
980 which in turn means that there is no need for a SVt_PVHV case
981 the error reporting code. */
984 for (nend = name; *nend || nend != (origname + len); nend++) {
989 else if (*nend == ':' && *(nend + 1) == ':') {
995 if ((nsplit - origname) == 5 && memEQ(origname, "SUPER", 5)) {
996 /* ->SUPER::method should really be looked up in original stash */
997 SV * const tmpstr = sv_2mortal(Perl_newSVpvf(aTHX_
999 HEKfARG(HvENAME_HEK((HV*)CopSTASH(PL_curcop)))
1001 /* __PACKAGE__::SUPER stash should be autovivified */
1002 stash = gv_get_super_pkg(SvPVX_const(tmpstr), SvCUR(tmpstr), SvUTF8(tmpstr));
1003 DEBUG_o( Perl_deb(aTHX_ "Treating %s as %s::%s\n",
1004 origname, HvENAME_get(stash), name) );
1007 /* don't autovifify if ->NoSuchStash::method */
1008 stash = gv_stashpvn(origname, nsplit - origname, is_utf8);
1010 /* however, explicit calls to Pkg::SUPER::method may
1011 happen, and may require autovivification to work */
1012 if (!stash && (nsplit - origname) >= 7 &&
1013 strnEQ(nsplit - 7, "::SUPER", 7) &&
1014 gv_stashpvn(origname, nsplit - origname - 7, is_utf8))
1015 stash = gv_get_super_pkg(origname, nsplit - origname, flags);
1020 gv = gv_fetchmeth_pvn(stash, name, nend - name, 0, flags);
1022 if (strEQ(name,"import") || strEQ(name,"unimport"))
1023 gv = MUTABLE_GV(&PL_sv_yes);
1025 gv = gv_autoload_pvn(
1026 ostash, name, nend - name, GV_AUTOLOAD_ISMETHOD|flags
1028 if (!gv && do_croak) {
1029 /* Right now this is exclusively for the benefit of S_method_common
1032 /* If we can't find an IO::File method, it might be a call on
1033 * a filehandle. If IO:File has not been loaded, try to
1034 * require it first instead of croaking */
1035 const char *stash_name = HvNAME_get(stash);
1036 if (stash_name && memEQs(stash_name, HvNAMELEN_get(stash), "IO::File")
1037 && !Perl_hv_common(aTHX_ GvHVn(PL_incgv), NULL,
1038 STR_WITH_LEN("IO/File.pm"), 0,
1039 HV_FETCH_ISEXISTS, NULL, 0)
1041 require_pv("IO/File.pm");
1042 gv = gv_fetchmeth_pvn(stash, name, nend - name, 0, flags);
1047 "Can't locate object method \"%"SVf
1048 "\" via package \"%"HEKf"\"",
1049 SVfARG(newSVpvn_flags(name, nend - name,
1050 SVs_TEMP | is_utf8)),
1051 HEKfARG(HvNAME_HEK(stash)));
1057 packnamesv = newSVpvn_flags(origname, nsplit - origname,
1058 SVs_TEMP | is_utf8);
1060 packnamesv = sv_2mortal(newSVsv(error_report));
1064 "Can't locate object method \"%"SVf"\" via package \"%"SVf"\""
1065 " (perhaps you forgot to load \"%"SVf"\"?)",
1066 SVfARG(newSVpvn_flags(name, nend - name,
1067 SVs_TEMP | is_utf8)),
1068 SVfARG(packnamesv), SVfARG(packnamesv));
1072 else if (autoload) {
1073 CV* const cv = GvCV(gv);
1074 if (!CvROOT(cv) && !CvXSUB(cv)) {
1082 if (GvCV(stubgv) != cv) /* orphaned import */
1085 autogv = gv_autoload_pvn(GvSTASH(stubgv),
1086 GvNAME(stubgv), GvNAMELEN(stubgv),
1087 GV_AUTOLOAD_ISMETHOD
1088 | (GvNAMEUTF8(stubgv) ? SVf_UTF8 : 0));
1098 Perl_gv_autoload_sv(pTHX_ HV *stash, SV* namesv, U32 flags)
1102 PERL_ARGS_ASSERT_GV_AUTOLOAD_SV;
1103 namepv = SvPV(namesv, namelen);
1106 return gv_autoload_pvn(stash, namepv, namelen, flags);
1110 Perl_gv_autoload_pv(pTHX_ HV *stash, const char *namepv, U32 flags)
1112 PERL_ARGS_ASSERT_GV_AUTOLOAD_PV;
1113 return gv_autoload_pvn(stash, namepv, strlen(namepv), flags);
1117 Perl_gv_autoload_pvn(pTHX_ HV *stash, const char *name, STRLEN len, U32 flags)
1125 SV *packname = NULL;
1126 U32 is_utf8 = flags & SVf_UTF8 ? SVf_UTF8 : 0;
1128 PERL_ARGS_ASSERT_GV_AUTOLOAD_PVN;
1130 if (len == S_autolen && memEQ(name, S_autoload, S_autolen))
1133 if (SvTYPE(stash) < SVt_PVHV) {
1134 STRLEN packname_len = 0;
1135 const char * const packname_ptr = SvPV_const(MUTABLE_SV(stash), packname_len);
1136 packname = newSVpvn_flags(packname_ptr, packname_len,
1137 SVs_TEMP | SvUTF8(stash));
1141 packname = sv_2mortal(newSVhek(HvNAME_HEK(stash)));
1143 if (!(gv = gv_fetchmeth_pvn(stash, S_autoload, S_autolen, FALSE, is_utf8)))
1147 if (!(CvROOT(cv) || CvXSUB(cv)))
1151 * Inheriting AUTOLOAD for non-methods works ... for now.
1154 !(flags & GV_AUTOLOAD_ISMETHOD)
1155 && (GvCVGEN(gv) || GvSTASH(gv) != stash)
1157 Perl_ck_warner_d(aTHX_ packWARN(WARN_DEPRECATED),
1158 "Use of inherited AUTOLOAD for non-method %"SVf"::%"SVf"() is deprecated",
1160 SVfARG(newSVpvn_flags(name, len, SVs_TEMP | is_utf8)));
1163 /* Instead of forcing the XSUB do another lookup for $AUTOLOAD
1164 * and split that value on the last '::', pass along the same data
1165 * via the SvPVX field in the CV, and the stash in CvSTASH.
1167 * Due to an unfortunate accident of history, the SvPVX field
1168 * serves two purposes. It is also used for the subroutine's pro-
1169 * type. Since SvPVX has been documented as returning the sub name
1170 * for a long time, but not as returning the prototype, we have
1171 * to preserve the SvPVX AUTOLOAD behaviour and put the prototype
1174 * We put the prototype in the same allocated buffer, but after
1175 * the sub name. The SvPOK flag indicates the presence of a proto-
1176 * type. The CvAUTOLOAD flag indicates the presence of a sub name.
1177 * If both flags are on, then SvLEN is used to indicate the end of
1178 * the prototype (artificially lower than what is actually allo-
1179 * cated), at the risk of having to reallocate a few bytes unneces-
1180 * sarily--but that should happen very rarely, if ever.
1182 * We use SvUTF8 for both prototypes and sub names, so if one is
1183 * UTF8, the other must be upgraded.
1185 CvSTASH_set(cv, stash);
1186 if (SvPOK(cv)) { /* Ouch! */
1187 SV *tmpsv = newSVpvn_flags(name, len, is_utf8);
1189 const char *proto = CvPROTO(cv);
1192 sv_utf8_upgrade_flags_grow(tmpsv, 0, CvPROTOLEN(cv) + 2);
1193 ulen = SvCUR(tmpsv);
1194 SvCUR(tmpsv)++; /* include null in string */
1196 tmpsv, proto, CvPROTOLEN(cv), SV_CATBYTES*!SvUTF8(cv)
1198 SvTEMP_on(tmpsv); /* Allow theft */
1199 sv_setsv_nomg((SV *)cv, tmpsv);
1201 SvREFCNT_dec(tmpsv);
1202 SvLEN(cv) = SvCUR(cv) + 1;
1206 sv_setpvn((SV *)cv, name, len);
1210 else SvUTF8_off(cv);
1216 * Given &FOO::AUTOLOAD, set $FOO::AUTOLOAD to desired function name.
1217 * The subroutine's original name may not be "AUTOLOAD", so we don't
1218 * use that, but for lack of anything better we will use the sub's
1219 * original package to look up $AUTOLOAD.
1221 varstash = GvSTASH(CvGV(cv));
1222 vargv = *(GV**)hv_fetch(varstash, S_autoload, S_autolen, TRUE);
1226 gv_init_pvn(vargv, varstash, S_autoload, S_autolen, 0);
1227 #ifdef PERL_DONT_CREATE_GVSV
1228 GvSV(vargv) = newSV(0);
1232 varsv = GvSVn(vargv);
1233 SvTAINTED_off(varsv); /* previous $AUTOLOAD taint is obsolete */
1234 /* XXX: this process is not careful to avoid extra magic gets and sets; tied $AUTOLOAD will get noise */
1235 sv_setsv(varsv, packname);
1236 sv_catpvs(varsv, "::");
1237 /* Ensure SvSETMAGIC() is called if necessary. In particular, to clear
1238 tainting if $FOO::AUTOLOAD was previously tainted, but is not now. */
1241 SV_SMAGIC|(is_utf8 ? SV_CATUTF8 : SV_CATBYTES)
1249 /* require_tie_mod() internal routine for requiring a module
1250 * that implements the logic of automatic ties like %! and %-
1252 * The "gv" parameter should be the glob.
1253 * "varpv" holds the name of the var, used for error messages.
1254 * "namesv" holds the module name. Its refcount will be decremented.
1255 * "methpv" holds the method name to test for to check that things
1256 * are working reasonably close to as expected.
1257 * "flags": if flag & 1 then save the scalar before loading.
1258 * For the protection of $! to work (it is set by this routine)
1259 * the sv slot must already be magicalized.
1262 S_require_tie_mod(pTHX_ GV *gv, const char *varpv, SV* namesv, const char *methpv,const U32 flags)
1265 HV* stash = gv_stashsv(namesv, 0);
1267 PERL_ARGS_ASSERT_REQUIRE_TIE_MOD;
1269 if (!stash || !(gv_fetchmethod_autoload(stash, methpv, FALSE))) {
1270 SV *module = newSVsv(namesv);
1271 char varname = *varpv; /* varpv might be clobbered by load_module,
1272 so save it. For the moment it's always
1274 const char type = varname == '[' ? '$' : '%';
1279 PUSHSTACKi(PERLSI_MAGIC);
1280 Perl_load_module(aTHX_ PERL_LOADMOD_NOIMPORT, module, NULL);
1284 stash = gv_stashsv(namesv, 0);
1286 Perl_croak(aTHX_ "panic: Can't use %c%c because %"SVf" is not available",
1287 type, varname, SVfARG(namesv));
1288 else if (!gv_fetchmethod(stash, methpv))
1289 Perl_croak(aTHX_ "panic: Can't use %c%c because %"SVf" does not support method %s",
1290 type, varname, SVfARG(namesv), methpv);
1292 SvREFCNT_dec(namesv);
1297 =for apidoc gv_stashpv
1299 Returns a pointer to the stash for a specified package. Uses C<strlen> to
1300 determine the length of C<name>, then calls C<gv_stashpvn()>.
1306 Perl_gv_stashpv(pTHX_ const char *name, I32 create)
1308 PERL_ARGS_ASSERT_GV_STASHPV;
1309 return gv_stashpvn(name, strlen(name), create);
1313 =for apidoc gv_stashpvn
1315 Returns a pointer to the stash for a specified package. The C<namelen>
1316 parameter indicates the length of the C<name>, in bytes. C<flags> is passed
1317 to C<gv_fetchpvn_flags()>, so if set to C<GV_ADD> then the package will be
1318 created if it does not already exist. If the package does not exist and
1319 C<flags> is 0 (or any other setting that does not create packages) then NULL
1322 Flags may be one of:
1331 The most important of which are probably GV_ADD and SVf_UTF8.
1337 Perl_gv_stashpvn(pTHX_ const char *name, U32 namelen, I32 flags)
1343 U32 tmplen = namelen + 2;
1345 PERL_ARGS_ASSERT_GV_STASHPVN;
1347 if (tmplen <= sizeof smallbuf)
1350 Newx(tmpbuf, tmplen, char);
1351 Copy(name, tmpbuf, namelen, char);
1352 tmpbuf[namelen] = ':';
1353 tmpbuf[namelen+1] = ':';
1354 tmpgv = gv_fetchpvn_flags(tmpbuf, tmplen, flags, SVt_PVHV);
1355 if (tmpbuf != smallbuf)
1359 stash = GvHV(tmpgv);
1360 if (!(flags & ~GV_NOADD_MASK) && !stash) return NULL;
1362 if (!HvNAME_get(stash)) {
1363 hv_name_set(stash, name, namelen, flags & SVf_UTF8 ? SVf_UTF8 : 0 );
1365 /* FIXME: This is a repeat of logic in gv_fetchpvn_flags */
1366 /* If the containing stash has multiple effective
1367 names, see that this one gets them, too. */
1368 if (HvAUX(GvSTASH(tmpgv))->xhv_name_count)
1369 mro_package_moved(stash, NULL, tmpgv, 1);
1375 =for apidoc gv_stashsv
1377 Returns a pointer to the stash for a specified package. See C<gv_stashpvn>.
1383 Perl_gv_stashsv(pTHX_ SV *sv, I32 flags)
1386 const char * const ptr = SvPV_const(sv,len);
1388 PERL_ARGS_ASSERT_GV_STASHSV;
1390 return gv_stashpvn(ptr, len, flags | SvUTF8(sv));
1395 Perl_gv_fetchpv(pTHX_ const char *nambeg, I32 add, const svtype sv_type) {
1396 PERL_ARGS_ASSERT_GV_FETCHPV;
1397 return gv_fetchpvn_flags(nambeg, strlen(nambeg), add, sv_type);
1401 Perl_gv_fetchsv(pTHX_ SV *name, I32 flags, const svtype sv_type) {
1403 const char * const nambeg =
1404 SvPV_flags_const(name, len, flags & GV_NO_SVGMAGIC ? 0 : SV_GMAGIC);
1405 PERL_ARGS_ASSERT_GV_FETCHSV;
1406 return gv_fetchpvn_flags(nambeg, len, flags | SvUTF8(name), sv_type);
1410 S_gv_magicalize_isa(pTHX_ GV *gv)
1414 PERL_ARGS_ASSERT_GV_MAGICALIZE_ISA;
1418 sv_magic(MUTABLE_SV(av), MUTABLE_SV(gv), PERL_MAGIC_isa,
1423 Perl_gv_fetchpvn_flags(pTHX_ const char *nambeg, STRLEN full_len, I32 flags,
1424 const svtype sv_type)
1427 const char *name = nambeg;
1431 const char *name_cursor;
1433 const I32 no_init = flags & (GV_NOADD_NOINIT | GV_NOINIT);
1434 const I32 no_expand = flags & GV_NOEXPAND;
1435 const I32 add = flags & ~GV_NOADD_MASK;
1436 const U32 is_utf8 = flags & SVf_UTF8;
1437 bool addmg = !!(flags & GV_ADDMG);
1438 const char *const name_end = nambeg + full_len;
1439 const char *const name_em1 = name_end - 1;
1442 PERL_ARGS_ASSERT_GV_FETCHPVN_FLAGS;
1444 if (flags & GV_NOTQUAL) {
1445 /* Caller promised that there is no stash, so we can skip the check. */
1450 if (full_len > 2 && *name == '*' && isIDFIRST_lazy_if(name + 1, is_utf8)) {
1451 /* accidental stringify on a GV? */
1455 for (name_cursor = name; name_cursor < name_end; name_cursor++) {
1456 if (name_cursor < name_em1 &&
1457 ((*name_cursor == ':'
1458 && name_cursor[1] == ':')
1459 || *name_cursor == '\''))
1462 stash = PL_defstash;
1463 if (!stash || !SvREFCNT(stash)) /* symbol table under destruction */
1466 len = name_cursor - name;
1467 if (name_cursor > nambeg) { /* Skip for initial :: or ' */
1469 if (*name_cursor == ':') {
1474 Newx(tmpbuf, len+2, char);
1475 Copy(name, tmpbuf, len, char);
1476 tmpbuf[len++] = ':';
1477 tmpbuf[len++] = ':';
1480 gvp = (GV**)hv_fetch(stash, key, is_utf8 ? -len : len, add);
1481 gv = gvp ? *gvp : NULL;
1482 if (gv && gv != (const GV *)&PL_sv_undef) {
1483 if (SvTYPE(gv) != SVt_PVGV)
1484 gv_init_pvn(gv, stash, key, len, (add & GV_ADDMULTI)|is_utf8);
1490 if (!gv || gv == (const GV *)&PL_sv_undef)
1493 if (!(stash = GvHV(gv)))
1495 stash = GvHV(gv) = newHV();
1496 if (!HvNAME_get(stash)) {
1497 if (GvSTASH(gv) == PL_defstash && len == 6
1498 && strnEQ(name, "CORE", 4))
1499 hv_name_set(stash, "CORE", 4, 0);
1502 stash, nambeg, name_cursor-nambeg, is_utf8
1504 /* If the containing stash has multiple effective
1505 names, see that this one gets them, too. */
1506 if (HvAUX(GvSTASH(gv))->xhv_name_count)
1507 mro_package_moved(stash, NULL, gv, 1);
1510 else if (!HvNAME_get(stash))
1511 hv_name_set(stash, nambeg, name_cursor - nambeg, is_utf8);
1514 if (*name_cursor == ':')
1516 name = name_cursor+1;
1517 if (name == name_end)
1519 ? gv : MUTABLE_GV(*hv_fetchs(PL_defstash, "main::", TRUE));
1522 len = name_cursor - name;
1524 /* No stash in name, so see how we can default */
1528 if (len && isIDFIRST_lazy(name)) {
1529 bool global = FALSE;
1537 if ((name[0] == 'I' && name[1] == 'N' && name[2] == 'C')
1538 || (name[0] == 'E' && name[1] == 'N' && name[2] == 'V')
1539 || (name[0] == 'S' && name[1] == 'I' && name[2] == 'G'))
1543 if (name[0] == 'A' && name[1] == 'R' && name[2] == 'G'
1548 if (name[0] == 'S' && name[1] == 'T' && name[2] == 'D'
1549 && name[3] == 'I' && name[4] == 'N')
1553 if ((name[0] == 'S' && name[1] == 'T' && name[2] == 'D')
1554 &&((name[3] == 'O' && name[4] == 'U' && name[5] == 'T')
1555 ||(name[3] == 'E' && name[4] == 'R' && name[5] == 'R')))
1559 if (name[0] == 'A' && name[1] == 'R' && name[2] == 'G'
1560 && name[3] == 'V' && name[4] == 'O' && name[5] == 'U'
1567 stash = PL_defstash;
1568 else if (IN_PERL_COMPILETIME) {
1569 stash = PL_curstash;
1570 if (add && (PL_hints & HINT_STRICT_VARS) &&
1571 sv_type != SVt_PVCV &&
1572 sv_type != SVt_PVGV &&
1573 sv_type != SVt_PVFM &&
1574 sv_type != SVt_PVIO &&
1575 !(len == 1 && sv_type == SVt_PV &&
1576 (*name == 'a' || *name == 'b')) )
1578 gvp = (GV**)hv_fetch(stash,name,is_utf8 ? -len : len,0);
1580 *gvp == (const GV *)&PL_sv_undef ||
1581 SvTYPE(*gvp) != SVt_PVGV)
1585 else if ((sv_type == SVt_PV && !GvIMPORTED_SV(*gvp)) ||
1586 (sv_type == SVt_PVAV && !GvIMPORTED_AV(*gvp)) ||
1587 (sv_type == SVt_PVHV && !GvIMPORTED_HV(*gvp)) )
1589 SV* namesv = newSVpvn_flags(name, len, SVs_TEMP | is_utf8);
1590 /* diag_listed_as: Variable "%s" is not imported%s */
1592 aTHX_ packWARN(WARN_MISC),
1593 "Variable \"%c%"SVf"\" is not imported",
1594 sv_type == SVt_PVAV ? '@' :
1595 sv_type == SVt_PVHV ? '%' : '$',
1599 aTHX_ packWARN(WARN_MISC),
1600 "\t(Did you mean &%"SVf" instead?)\n", SVfARG(namesv)
1607 stash = CopSTASH(PL_curcop);
1610 stash = PL_defstash;
1613 /* By this point we should have a stash and a name */
1617 SV * const err = Perl_mess(aTHX_
1618 "Global symbol \"%s%"SVf"\" requires explicit package name",
1619 (sv_type == SVt_PV ? "$"
1620 : sv_type == SVt_PVAV ? "@"
1621 : sv_type == SVt_PVHV ? "%"
1622 : ""), SVfARG(newSVpvn_flags(name, len, SVs_TEMP | is_utf8)));
1624 if (USE_UTF8_IN_NAMES)
1627 gv = gv_fetchpvs("<none>::", GV_ADDMULTI, SVt_PVHV);
1629 /* symbol table under destruction */
1638 if (!SvREFCNT(stash)) /* symbol table under destruction */
1641 gvp = (GV**)hv_fetch(stash,name,is_utf8 ? -len : len,add);
1642 if (!gvp || *gvp == (const GV *)&PL_sv_undef) {
1643 if (addmg) gv = (GV *)newSV(0);
1646 else gv = *gvp, addmg = 0;
1647 /* From this point on, addmg means gv has not been inserted in the
1650 if (SvTYPE(gv) == SVt_PVGV) {
1653 gv_init_svtype(gv, sv_type);
1654 if (len == 1 && stash == PL_defstash) {
1655 if (sv_type == SVt_PVHV || sv_type == SVt_PVGV) {
1657 require_tie_mod(gv, "!", newSVpvs("Errno"), "TIEHASH", 1);
1658 else if (*name == '-' || *name == '+')
1659 require_tie_mod(gv, name, newSVpvs("Tie::Hash::NamedCapture"), "TIEHASH", 0);
1661 if (sv_type==SVt_PV || sv_type==SVt_PVGV) {
1664 require_tie_mod(gv,name,newSVpvs("arybase"),"FETCH",0);
1667 PL_sawampersand |= SAWAMPERSAND_LEFT;
1671 PL_sawampersand |= SAWAMPERSAND_MIDDLE;
1675 PL_sawampersand |= SAWAMPERSAND_RIGHT;
1681 else if (len == 3 && sv_type == SVt_PVAV
1682 && strnEQ(name, "ISA", 3)
1683 && (!GvAV(gv) || !SvSMAGICAL(GvAV(gv))))
1684 gv_magicalize_isa(gv);
1687 } else if (no_init) {
1690 } else if (no_expand && SvROK(gv)) {
1695 /* Adding a new symbol.
1696 Unless of course there was already something non-GV here, in which case
1697 we want to behave as if there was always a GV here, containing some sort
1699 Otherwise we run the risk of creating things like GvIO, which can cause
1700 subtle bugs. eg the one that tripped up SQL::Translator */
1702 faking_it = SvOK(gv);
1704 if (add & GV_ADDWARN)
1705 Perl_ck_warner_d(aTHX_ packWARN(WARN_INTERNAL), "Had to create %"SVf" unexpectedly",
1706 SVfARG(newSVpvn_flags(nambeg, name_end-nambeg, SVs_TEMP | is_utf8 )));
1707 gv_init_pvn(gv, stash, name, len, (add & GV_ADDMULTI)|is_utf8);
1709 if ( isIDFIRST_lazy_if(name, is_utf8)
1710 && ! (isLEXWARN_on ? ckWARN(WARN_ONCE) : (PL_dowarn & G_WARN_ON ) ) )
1713 /* set up magic where warranted */
1714 if (stash != PL_defstash) { /* not the main stash */
1715 /* We only have to check for three names here: EXPORT, ISA
1716 and VERSION. All the others apply only to the main stash or to
1717 CORE (which is checked right after this). */
1719 const char * const name2 = name + 1;
1722 if (strnEQ(name2, "XPORT", 5))
1726 if (strEQ(name2, "SA"))
1727 gv_magicalize_isa(gv);
1730 if (strEQ(name2, "ERSION"))
1736 goto add_magical_gv;
1739 if (len > 1 /* shortest is uc */ && HvNAMELEN_get(stash) == 4) {
1740 /* Avoid null warning: */
1741 const char * const stashname = HvNAME(stash); assert(stashname);
1742 if (strnEQ(stashname, "CORE", 4))
1743 S_maybe_add_coresub(aTHX_ 0, gv, name, len);
1750 /* Nothing else to do.
1751 The compiler will probably turn the switch statement into a
1752 branch table. Make sure we avoid even that small overhead for
1753 the common case of lower case variable names. */
1757 const char * const name2 = name + 1;
1760 if (strEQ(name2, "RGV")) {
1761 IoFLAGS(GvIOn(gv)) |= IOf_ARGV|IOf_START;
1763 else if (strEQ(name2, "RGVOUT")) {
1768 if (strnEQ(name2, "XPORT", 5))
1772 if (strEQ(name2, "SA")) {
1773 gv_magicalize_isa(gv);
1777 if (strEQ(name2, "IG")) {
1780 if (!PL_psig_name) {
1781 Newxz(PL_psig_name, 2 * SIG_SIZE, SV*);
1782 Newxz(PL_psig_pend, SIG_SIZE, int);
1783 PL_psig_ptr = PL_psig_name + SIG_SIZE;
1785 /* I think that the only way to get here is to re-use an
1786 embedded perl interpreter, where the previous
1787 use didn't clean up fully because
1788 PL_perl_destruct_level was 0. I'm not sure that we
1789 "support" that, in that I suspect in that scenario
1790 there are sufficient other garbage values left in the
1791 interpreter structure that something else will crash
1792 before we get here. I suspect that this is one of
1793 those "doctor, it hurts when I do this" bugs. */
1794 Zero(PL_psig_name, 2 * SIG_SIZE, SV*);
1795 Zero(PL_psig_pend, SIG_SIZE, int);
1799 hv_magic(hv, NULL, PERL_MAGIC_sig);
1800 for (i = 1; i < SIG_SIZE; i++) {
1801 SV * const * const init = hv_fetch(hv, PL_sig_name[i], strlen(PL_sig_name[i]), 1);
1803 sv_setsv(*init, &PL_sv_undef);
1808 if (strEQ(name2, "ERSION"))
1811 case '\003': /* $^CHILD_ERROR_NATIVE */
1812 if (strEQ(name2, "HILD_ERROR_NATIVE"))
1815 case '\005': /* $^ENCODING */
1816 if (strEQ(name2, "NCODING"))
1819 case '\007': /* $^GLOBAL_PHASE */
1820 if (strEQ(name2, "LOBAL_PHASE"))
1823 case '\015': /* $^MATCH */
1824 if (strEQ(name2, "ATCH"))
1826 case '\017': /* $^OPEN */
1827 if (strEQ(name2, "PEN"))
1830 case '\020': /* $^PREMATCH $^POSTMATCH */
1831 if (strEQ(name2, "REMATCH") || strEQ(name2, "OSTMATCH"))
1834 case '\024': /* ${^TAINT} */
1835 if (strEQ(name2, "AINT"))
1838 case '\025': /* ${^UNICODE}, ${^UTF8LOCALE} */
1839 if (strEQ(name2, "NICODE"))
1841 if (strEQ(name2, "TF8LOCALE"))
1843 if (strEQ(name2, "TF8CACHE"))
1846 case '\027': /* $^WARNING_BITS */
1847 if (strEQ(name2, "ARNING_BITS"))
1860 /* Ensures that we have an all-digit variable, ${"1foo"} fails
1862 /* This snippet is taken from is_gv_magical */
1863 const char *end = name + len;
1864 while (--end > name) {
1865 if (!isDIGIT(*end)) goto add_magical_gv;
1872 /* Names of length 1. (Or 0. But name is NUL terminated, so that will
1873 be case '\0' in this switch statement (ie a default case) */
1879 sv_type == SVt_PVAV ||
1880 sv_type == SVt_PVHV ||
1881 sv_type == SVt_PVCV ||
1882 sv_type == SVt_PVFM ||
1884 )) { PL_sawampersand |=
1888 ? SAWAMPERSAND_MIDDLE
1889 : SAWAMPERSAND_RIGHT;
1894 sv_setpv(GvSVn(gv),PL_chopset);
1898 #ifdef COMPLEX_STATUS
1899 SvUPGRADE(GvSVn(gv), SVt_PVLV);
1905 /* If %! has been used, automatically load Errno.pm. */
1907 sv_magic(GvSVn(gv), MUTABLE_SV(gv), PERL_MAGIC_sv, name, len);
1909 /* magicalization must be done before require_tie_mod is called */
1910 if (sv_type == SVt_PVHV || sv_type == SVt_PVGV)
1912 if (addmg) (void)hv_store(stash,name,len,(SV *)gv,0);
1914 require_tie_mod(gv, "!", newSVpvs("Errno"), "TIEHASH", 1);
1920 GvMULTI_on(gv); /* no used once warnings here */
1922 AV* const av = GvAVn(gv);
1923 SV* const avc = (*name == '+') ? MUTABLE_SV(av) : NULL;
1925 sv_magic(MUTABLE_SV(av), avc, PERL_MAGIC_regdata, NULL, 0);
1926 sv_magic(GvSVn(gv), MUTABLE_SV(gv), PERL_MAGIC_sv, name, len);
1928 SvREADONLY_on(GvSVn(gv));
1931 if (sv_type == SVt_PVHV || sv_type == SVt_PVGV)
1933 if (addmg) (void)hv_store(stash,name,len,(SV *)gv,0);
1935 require_tie_mod(gv, name, newSVpvs("Tie::Hash::NamedCapture"), "TIEHASH", 0);
1942 if (sv_type == SVt_PV)
1943 /* diag_listed_as: $* is no longer supported */
1944 Perl_ck_warner_d(aTHX_ packWARN2(WARN_DEPRECATED, WARN_SYNTAX),
1945 "$%c is no longer supported", *name);
1948 sv_setiv(GvSVn(gv), (IV)(IoFLAGS(GvIOp(PL_defoutgv)) & IOf_FLUSH) != 0);
1951 case '\010': /* $^H */
1953 HV *const hv = GvHVn(gv);
1954 hv_magic(hv, NULL, PERL_MAGIC_hints);
1958 if ((sv_type == SVt_PV || sv_type == SVt_PVGV)
1959 && FEATURE_ARYBASE_IS_ENABLED) {
1960 if (addmg) (void)hv_store(stash,name,len,(SV *)gv,0);
1961 require_tie_mod(gv,name,newSVpvs("arybase"),"FETCH",0);
1964 else goto magicalize;
1966 case '\023': /* $^S */
1968 SvREADONLY_on(GvSVn(gv));
1992 case '\001': /* $^A */
1993 case '\003': /* $^C */
1994 case '\004': /* $^D */
1995 case '\005': /* $^E */
1996 case '\006': /* $^F */
1997 case '\011': /* $^I, NOT \t in EBCDIC */
1998 case '\016': /* $^N */
1999 case '\017': /* $^O */
2000 case '\020': /* $^P */
2001 case '\024': /* $^T */
2002 case '\027': /* $^W */
2004 sv_magic(GvSVn(gv), MUTABLE_SV(gv), PERL_MAGIC_sv, name, len);
2007 case '\014': /* $^L */
2008 sv_setpvs(GvSVn(gv),"\f");
2009 PL_formfeed = GvSV(gv);
2012 sv_setpvs(GvSVn(gv),"\034");
2016 SV * const sv = GvSV(gv);
2017 if (!sv_derived_from(PL_patchlevel, "version"))
2018 upg_version(PL_patchlevel, TRUE);
2019 GvSV(gv) = vnumify(PL_patchlevel);
2020 SvREADONLY_on(GvSV(gv));
2024 case '\026': /* $^V */
2026 SV * const sv = GvSV(gv);
2027 GvSV(gv) = new_version(PL_patchlevel);
2028 SvREADONLY_on(GvSV(gv));
2036 if (GvAV(gv) || GvHV(gv) || GvIO(gv) || GvCV(gv) || (
2037 GvSV(gv) && (SvOK(GvSV(gv)) || SvMAGICAL(GvSV(gv)))
2039 (void)hv_store(stash,name,len,(SV *)gv,0);
2040 else SvREFCNT_dec(gv), gv = NULL;
2042 if (gv) gv_init_svtype(gv, faking_it ? SVt_PVCV : sv_type);
2047 Perl_gv_fullname4(pTHX_ SV *sv, const GV *gv, const char *prefix, bool keepmain)
2050 const HV * const hv = GvSTASH(gv);
2052 PERL_ARGS_ASSERT_GV_FULLNAME4;
2054 sv_setpv(sv, prefix ? prefix : "");
2056 if (hv && (name = HvNAME(hv))) {
2057 const STRLEN len = HvNAMELEN(hv);
2058 if (keepmain || strnNE(name, "main", len)) {
2059 sv_catpvn_flags(sv,name,len,HvNAMEUTF8(hv)?SV_CATUTF8:SV_CATBYTES);
2063 else sv_catpvs(sv,"__ANON__::");
2064 sv_catsv(sv,sv_2mortal(newSVhek(GvNAME_HEK(gv))));
2068 Perl_gv_efullname4(pTHX_ SV *sv, const GV *gv, const char *prefix, bool keepmain)
2070 const GV * const egv = GvEGVx(gv);
2072 PERL_ARGS_ASSERT_GV_EFULLNAME4;
2074 gv_fullname4(sv, egv ? egv : gv, prefix, keepmain);
2078 Perl_gv_check(pTHX_ const HV *stash)
2083 PERL_ARGS_ASSERT_GV_CHECK;
2085 if (!HvARRAY(stash))
2087 for (i = 0; i <= (I32) HvMAX(stash); i++) {
2089 for (entry = HvARRAY(stash)[i]; entry; entry = HeNEXT(entry)) {
2092 if (HeKEY(entry)[HeKLEN(entry)-1] == ':' &&
2093 (gv = MUTABLE_GV(HeVAL(entry))) && isGV(gv) && (hv = GvHV(gv)))
2095 if (hv != PL_defstash && hv != stash)
2096 gv_check(hv); /* nested package */
2098 else if ( *HeKEY(entry) != '_'
2099 && isIDFIRST_lazy_if(HeKEY(entry), HeUTF8(entry)) ) {
2101 gv = MUTABLE_GV(HeVAL(entry));
2102 if (SvTYPE(gv) != SVt_PVGV || GvMULTI(gv))
2105 CopLINE_set(PL_curcop, GvLINE(gv));
2107 CopFILE(PL_curcop) = (char *)file; /* set for warning */
2109 CopFILEGV(PL_curcop)
2110 = gv_fetchfile_flags(file, HEK_LEN(GvFILE_HEK(gv)), 0);
2112 Perl_warner(aTHX_ packWARN(WARN_ONCE),
2113 "Name \"%"HEKf"::%"HEKf
2114 "\" used only once: possible typo",
2115 HEKfARG(HvNAME_HEK(stash)),
2116 HEKfARG(GvNAME_HEK(gv)));
2123 Perl_newGVgen_flags(pTHX_ const char *pack, U32 flags)
2126 PERL_ARGS_ASSERT_NEWGVGEN_FLAGS;
2128 return gv_fetchpv(Perl_form(aTHX_ "%"SVf"::_GEN_%ld",
2129 SVfARG(newSVpvn_flags(pack, strlen(pack),
2135 /* hopefully this is only called on local symbol table entries */
2138 Perl_gp_ref(pTHX_ GP *gp)
2146 /* If the GP they asked for a reference to contains
2147 a method cache entry, clear it first, so that we
2148 don't infect them with our cached entry */
2149 SvREFCNT_dec(gp->gp_cv);
2158 Perl_gp_free(pTHX_ GV *gv)
2164 if (!gv || !isGV_with_GP(gv) || !(gp = GvGP(gv)))
2166 if (gp->gp_refcnt == 0) {
2167 Perl_ck_warner_d(aTHX_ packWARN(WARN_INTERNAL),
2168 "Attempt to free unreferenced glob pointers"
2169 pTHX__FORMAT pTHX__VALUE);
2172 if (--gp->gp_refcnt > 0) {
2173 if (gp->gp_egv == gv)
2180 /* Copy and null out all the glob slots, so destructors do not see
2182 HEK * const file_hek = gp->gp_file_hek;
2183 SV * const sv = gp->gp_sv;
2184 AV * const av = gp->gp_av;
2185 HV * const hv = gp->gp_hv;
2186 IO * const io = gp->gp_io;
2187 CV * const cv = gp->gp_cv;
2188 CV * const form = gp->gp_form;
2190 gp->gp_file_hek = NULL;
2199 unshare_hek(file_hek);
2203 /* FIXME - another reference loop GV -> symtab -> GV ?
2204 Somehow gp->gp_hv can end up pointing at freed garbage. */
2205 if (hv && SvTYPE(hv) == SVt_PVHV) {
2206 const HEK *hvname_hek = HvNAME_HEK(hv);
2207 if (PL_stashcache && hvname_hek)
2208 (void)hv_delete(PL_stashcache, HEK_KEY(hvname_hek),
2209 (HEK_UTF8(hvname_hek) ? -HEK_LEN(hvname_hek) : HEK_LEN(hvname_hek)),
2217 if (!gp->gp_file_hek
2223 && !gp->gp_form) break;
2225 if (--attempts == 0) {
2227 "panic: gp_free failed to free glob pointer - "
2228 "something is repeatedly re-creating entries"
2238 Perl_magic_freeovrld(pTHX_ SV *sv, MAGIC *mg)
2240 AMT * const amtp = (AMT*)mg->mg_ptr;
2241 PERL_UNUSED_ARG(sv);
2243 PERL_ARGS_ASSERT_MAGIC_FREEOVRLD;
2245 if (amtp && AMT_AMAGIC(amtp)) {
2247 for (i = 1; i < NofAMmeth; i++) {
2248 CV * const cv = amtp->table[i];
2250 SvREFCNT_dec(MUTABLE_SV(cv));
2251 amtp->table[i] = NULL;
2258 /* Updates and caches the CV's */
2260 * 1 on success and there is some overload
2261 * 0 if there is no overload
2262 * -1 if some error occurred and it couldn't croak
2266 Perl_Gv_AMupdate(pTHX_ HV *stash, bool destructing)
2269 MAGIC* const mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table);
2271 const struct mro_meta* stash_meta = HvMROMETA(stash);
2274 PERL_ARGS_ASSERT_GV_AMUPDATE;
2276 newgen = PL_sub_generation + stash_meta->pkg_gen + stash_meta->cache_gen;
2278 const AMT * const amtp = (AMT*)mg->mg_ptr;
2279 if (amtp->was_ok_sub == newgen) {
2280 return AMT_OVERLOADED(amtp) ? 1 : 0;
2282 sv_unmagic(MUTABLE_SV(stash), PERL_MAGIC_overload_table);
2285 DEBUG_o( Perl_deb(aTHX_ "Recalcing overload magic in package %s\n",HvNAME_get(stash)) );
2288 amt.was_ok_sub = newgen;
2289 amt.fallback = AMGfallNO;
2293 int filled = 0, have_ovl = 0;
2296 /* Work with "fallback" key, which we assume to be first in PL_AMG_names */
2298 /* Try to find via inheritance. */
2299 GV *gv = gv_fetchmeth_pvn(stash, PL_AMG_names[0], 2, -1, 0);
2300 SV * const sv = gv ? GvSV(gv) : NULL;
2305 if (!gv_fetchmeth_pvn(stash, "((", 2, -1, 0))
2306 lim = DESTROY_amg; /* Skip overloading entries. */
2308 #ifdef PERL_DONT_CREATE_GVSV
2310 NOOP; /* Equivalent to !SvTRUE and !SvOK */
2313 else if (SvTRUE(sv))
2314 /* don't need to set overloading here because fallback => 1
2315 * is the default setting for classes without overloading */
2316 amt.fallback=AMGfallYES;
2317 else if (SvOK(sv)) {
2318 amt.fallback=AMGfallNEVER;
2327 for (i = 1; i < lim; i++)
2328 amt.table[i] = NULL;
2329 for (; i < NofAMmeth; i++) {
2330 const char * const cooky = PL_AMG_names[i];
2331 /* Human-readable form, for debugging: */
2332 const char * const cp = (i >= DESTROY_amg ? cooky : AMG_id2name(i));
2333 const STRLEN l = PL_AMG_namelens[i];
2335 DEBUG_o( Perl_deb(aTHX_ "Checking overloading of \"%s\" in package \"%.256s\"\n",
2336 cp, HvNAME_get(stash)) );
2337 /* don't fill the cache while looking up!
2338 Creation of inheritance stubs in intermediate packages may
2339 conflict with the logic of runtime method substitution.
2340 Indeed, for inheritance A -> B -> C, if C overloads "+0",
2341 then we could have created stubs for "(+0" in A and C too.
2342 But if B overloads "bool", we may want to use it for
2343 numifying instead of C's "+0". */
2344 if (i >= DESTROY_amg)
2345 gv = Perl_gv_fetchmeth_pvn_autoload(aTHX_ stash, cooky, l, 0, 0);
2346 else /* Autoload taken care of below */
2347 gv = Perl_gv_fetchmeth_pvn(aTHX_ stash, cooky, l, -1, 0);
2349 if (gv && (cv = GvCV(gv))) {
2350 if(GvNAMELEN(CvGV(cv)) == 3 && strEQ(GvNAME(CvGV(cv)), "nil")){
2351 const char * const hvname = HvNAME_get(GvSTASH(CvGV(cv)));
2352 if (hvname && HEK_LEN(HvNAME_HEK(GvSTASH(CvGV(cv)))) == 8
2353 && strEQ(hvname, "overload")) {
2354 /* This is a hack to support autoloading..., while
2355 knowing *which* methods were declared as overloaded. */
2356 /* GvSV contains the name of the method. */
2358 SV *gvsv = GvSV(gv);
2360 DEBUG_o( Perl_deb(aTHX_ "Resolving method \"%"SVf256\
2361 "\" for overloaded \"%s\" in package \"%.256s\"\n",
2362 (void*)GvSV(gv), cp, HvNAME(stash)) );
2363 if (!gvsv || !SvPOK(gvsv)
2364 || !(ngv = gv_fetchmethod_sv_flags(stash, gvsv, 0)))
2366 /* Can be an import stub (created by "can"). */
2371 const SV * const name = (gvsv && SvPOK(gvsv))
2373 : newSVpvs_flags("???", SVs_TEMP);
2374 /* diag_listed_as: Can't resolve method "%s" overloading "%s" in package "%s" */
2375 Perl_croak(aTHX_ "%s method \"%"SVf256
2376 "\" overloading \"%s\" "\
2377 "in package \"%"HEKf256"\"",
2378 (GvCVGEN(gv) ? "Stub found while resolving"
2386 cv = GvCV(gv = ngv);
2389 DEBUG_o( Perl_deb(aTHX_ "Overloading \"%s\" in package \"%.256s\" via \"%.256s::%.256s\"\n",
2390 cp, HvNAME_get(stash), HvNAME_get(GvSTASH(CvGV(cv))),
2391 GvNAME(CvGV(cv))) );
2393 if (i < DESTROY_amg)
2395 } else if (gv) { /* Autoloaded... */
2396 cv = MUTABLE_CV(gv);
2399 amt.table[i]=MUTABLE_CV(SvREFCNT_inc_simple(cv));
2402 AMT_AMAGIC_on(&amt);
2404 AMT_OVERLOADED_on(&amt);
2405 sv_magic(MUTABLE_SV(stash), 0, PERL_MAGIC_overload_table,
2406 (char*)&amt, sizeof(AMT));
2410 /* Here we have no table: */
2412 AMT_AMAGIC_off(&amt);
2413 sv_magic(MUTABLE_SV(stash), 0, PERL_MAGIC_overload_table,
2414 (char*)&amt, sizeof(AMTS));
2420 Perl_gv_handler(pTHX_ HV *stash, I32 id)
2426 struct mro_meta* stash_meta;
2428 if (!stash || !HvNAME_get(stash))
2431 stash_meta = HvMROMETA(stash);
2432 newgen = PL_sub_generation + stash_meta->pkg_gen + stash_meta->cache_gen;
2434 mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table);
2437 /* If we're looking up a destructor to invoke, we must avoid
2438 * that Gv_AMupdate croaks, because we might be dying already */
2439 if (Gv_AMupdate(stash, cBOOL(id == DESTROY_amg)) == -1) {
2440 /* and if it didn't found a destructor, we fall back
2441 * to a simpler method that will only look for the
2442 * destructor instead of the whole magic */
2443 if (id == DESTROY_amg) {
2444 GV * const gv = gv_fetchmethod(stash, "DESTROY");
2450 mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table);
2453 amtp = (AMT*)mg->mg_ptr;
2454 if ( amtp->was_ok_sub != newgen )
2456 if (AMT_AMAGIC(amtp)) {
2457 CV * const ret = amtp->table[id];
2458 if (ret && isGV(ret)) { /* Autoloading stab */
2459 /* Passing it through may have resulted in a warning
2460 "Inherited AUTOLOAD for a non-method deprecated", since
2461 our caller is going through a function call, not a method call.
2462 So return the CV for AUTOLOAD, setting $AUTOLOAD. */
2463 GV * const gv = gv_fetchmethod(stash, PL_AMG_names[id]);
2475 /* Implement tryAMAGICun_MG macro.
2476 Do get magic, then see if the stack arg is overloaded and if so call it.
2478 AMGf_set return the arg using SETs rather than assigning to
2480 AMGf_numeric apply sv_2num to the stack arg.
2484 Perl_try_amagic_un(pTHX_ int method, int flags) {
2488 SV* const arg = TOPs;
2492 if (SvAMAGIC(arg) && (tmpsv = amagic_call(arg, &PL_sv_undef, method,
2493 AMGf_noright | AMGf_unary))) {
2494 if (flags & AMGf_set) {
2499 if (SvPADMY(TARG)) {
2500 sv_setsv(TARG, tmpsv);
2510 if ((flags & AMGf_numeric) && SvROK(arg))
2516 /* Implement tryAMAGICbin_MG macro.
2517 Do get magic, then see if the two stack args are overloaded and if so
2520 AMGf_set return the arg using SETs rather than assigning to
2522 AMGf_assign op may be called as mutator (eg +=)
2523 AMGf_numeric apply sv_2num to the stack arg.
2527 Perl_try_amagic_bin(pTHX_ int method, int flags) {
2530 SV* const left = TOPm1s;
2531 SV* const right = TOPs;
2537 if (SvAMAGIC(left) || SvAMAGIC(right)) {
2538 SV * const tmpsv = amagic_call(left, right, method,
2539 ((flags & AMGf_assign) && opASSIGN ? AMGf_assign: 0));
2541 if (flags & AMGf_set) {
2548 if (opASSIGN || SvPADMY(TARG)) {
2549 sv_setsv(TARG, tmpsv);
2559 if(left==right && SvGMAGICAL(left)) {
2560 SV * const left = sv_newmortal();
2562 /* Print the uninitialized warning now, so it includes the vari-
2565 if (ckWARN(WARN_UNINITIALIZED)) report_uninit(right);
2566 sv_setsv_flags(left, &PL_sv_no, 0);
2568 else sv_setsv_flags(left, right, 0);
2571 if (flags & AMGf_numeric) {
2573 *(sp-1) = sv_2num(TOPm1s);
2575 *sp = sv_2num(right);
2581 Perl_amagic_deref_call(pTHX_ SV *ref, int method) {
2584 PERL_ARGS_ASSERT_AMAGIC_DEREF_CALL;
2586 while (SvAMAGIC(ref) &&
2587 (tmpsv = amagic_call(ref, &PL_sv_undef, method,
2588 AMGf_noright | AMGf_unary))) {
2590 Perl_croak(aTHX_ "Overloaded dereference did not return a reference");
2591 if (tmpsv == ref || SvRV(tmpsv) == SvRV(ref)) {
2592 /* Bail out if it returns us the same reference. */
2597 return tmpsv ? tmpsv : ref;
2601 Perl_amagic_is_enabled(pTHX_ int method)
2603 SV *lex_mask = cop_hints_fetch_pvs(PL_curcop, "overloading", 0);
2605 assert(PL_curcop->cop_hints & HINT_NO_AMAGIC);
2607 if ( !lex_mask || !SvOK(lex_mask) )
2608 /* overloading lexically disabled */
2610 else if ( lex_mask && SvPOK(lex_mask) ) {
2611 /* we have an entry in the hints hash, check if method has been
2612 * masked by overloading.pm */
2614 const int offset = method / 8;
2615 const int bit = method % 8;
2616 char *pv = SvPV(lex_mask, len);
2618 /* Bit set, so this overloading operator is disabled */
2619 if ( (STRLEN)offset < len && pv[offset] & ( 1 << bit ) )
2626 Perl_amagic_call(pTHX_ SV *left, SV *right, int method, int flags)
2631 CV **cvp=NULL, **ocvp=NULL;
2632 AMT *amtp=NULL, *oamtp=NULL;
2633 int off = 0, off1, lr = 0, notfound = 0;
2634 int postpr = 0, force_cpy = 0;
2635 int assign = AMGf_assign & flags;
2636 const int assignshift = assign ? 1 : 0;
2637 int use_default_op = 0;
2638 int force_scalar = 0;
2644 PERL_ARGS_ASSERT_AMAGIC_CALL;
2646 if ( PL_curcop->cop_hints & HINT_NO_AMAGIC ) {
2647 if (!amagic_is_enabled(method)) return NULL;
2650 if (!(AMGf_noleft & flags) && SvAMAGIC(left)
2651 && (stash = SvSTASH(SvRV(left))) && Gv_AMG(stash)
2652 && (mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table))
2653 && (ocvp = cvp = (AMT_AMAGIC((AMT*)mg->mg_ptr)
2654 ? (oamtp = amtp = (AMT*)mg->mg_ptr)->table
2656 && ((cv = cvp[off=method+assignshift])
2657 || (assign && amtp->fallback > AMGfallNEVER && /* fallback to
2663 cv = cvp[off=method])))) {
2664 lr = -1; /* Call method for left argument */
2666 if (cvp && amtp->fallback > AMGfallNEVER && flags & AMGf_unary) {
2669 /* look for substituted methods */
2670 /* In all the covered cases we should be called with assign==0. */
2674 if ((cv = cvp[off=add_ass_amg])
2675 || ((cv = cvp[off = add_amg]) && (force_cpy = 0, postpr = 1))) {
2676 right = &PL_sv_yes; lr = -1; assign = 1;
2681 if ((cv = cvp[off = subtr_ass_amg])
2682 || ((cv = cvp[off = subtr_amg]) && (force_cpy = 0, postpr=1))) {
2683 right = &PL_sv_yes; lr = -1; assign = 1;
2687 (void)((cv = cvp[off=numer_amg]) || (cv = cvp[off=string_amg]));
2690 (void)((cv = cvp[off=string_amg]) || (cv = cvp[off=bool__amg]));
2693 (void)((cv = cvp[off=numer_amg]) || (cv = cvp[off=bool__amg]));
2696 (void)((cv = cvp[off=bool__amg])
2697 || (cv = cvp[off=numer_amg])
2698 || (cv = cvp[off=string_amg]));
2705 * SV* ref causes confusion with the interpreter variable of
2708 SV* const tmpRef=SvRV(left);
2709 if (!SvROK(tmpRef) && SvTYPE(tmpRef) <= SVt_PVMG) {
2711 * Just to be extra cautious. Maybe in some
2712 * additional cases sv_setsv is safe, too.
2714 SV* const newref = newSVsv(tmpRef);
2715 SvOBJECT_on(newref);
2716 /* No need to do SvAMAGIC_on here, as SvAMAGIC macros
2717 delegate to the stash. */
2718 SvSTASH_set(newref, MUTABLE_HV(SvREFCNT_inc(SvSTASH(tmpRef))));
2724 if ((cvp[off1=lt_amg] || cvp[off1=ncmp_amg])
2725 && ((cv = cvp[off=neg_amg]) || (cv = cvp[off=subtr_amg]))) {
2726 SV* const nullsv=sv_2mortal(newSViv(0));
2728 SV* const lessp = amagic_call(left,nullsv,
2729 lt_amg,AMGf_noright);
2730 logic = SvTRUE(lessp);
2732 SV* const lessp = amagic_call(left,nullsv,
2733 ncmp_amg,AMGf_noright);
2734 logic = (SvNV(lessp) < 0);
2737 if (off==subtr_amg) {
2748 if ((cv = cvp[off=subtr_amg])) {
2750 left = sv_2mortal(newSViv(0));
2755 case iter_amg: /* XXXX Eventually should do to_gv. */
2756 case ftest_amg: /* XXXX Eventually should do to_gv. */
2759 return NULL; /* Delegate operation to standard mechanisms. */
2767 return left; /* Delegate operation to standard mechanisms. */
2772 if (!cv) goto not_found;
2773 } else if (!(AMGf_noright & flags) && SvAMAGIC(right)
2774 && (stash = SvSTASH(SvRV(right))) && Gv_AMG(stash)
2775 && (mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table))
2776 && (cvp = (AMT_AMAGIC((AMT*)mg->mg_ptr)
2777 ? (amtp = (AMT*)mg->mg_ptr)->table
2779 && ((cv = cvp[off=method+assignshift])
2780 || (assign && amtp->fallback > AMGfallNEVER && /* fallback to
2786 cv = cvp[off=method])))) { /* Method for right
2789 } else if (((cvp && amtp->fallback > AMGfallNEVER)
2790 || (ocvp && oamtp->fallback > AMGfallNEVER))
2791 && !(flags & AMGf_unary)) {
2792 /* We look for substitution for
2793 * comparison operations and
2795 if (method==concat_amg || method==concat_ass_amg
2796 || method==repeat_amg || method==repeat_ass_amg) {
2797 return NULL; /* Delegate operation to string conversion */
2819 if (ocvp && (oamtp->fallback > AMGfallNEVER)) {
2823 if (!cv && (cvp && amtp->fallback > AMGfallNEVER)) {
2833 not_found: /* No method found, either report or croak */
2841 return left; /* Delegate operation to standard mechanisms. */
2844 if (ocvp && (cv=ocvp[nomethod_amg])) { /* Call report method */
2845 notfound = 1; lr = -1;
2846 } else if (cvp && (cv=cvp[nomethod_amg])) {
2847 notfound = 1; lr = 1;
2848 } else if ((use_default_op =
2849 (!ocvp || oamtp->fallback >= AMGfallYES)
2850 && (!cvp || amtp->fallback >= AMGfallYES))
2852 /* Skip generating the "no method found" message. */
2856 if (off==-1) off=method;
2857 msg = sv_2mortal(Perl_newSVpvf(aTHX_
2858 "Operation \"%s\": no method found,%sargument %s%"SVf"%s%"SVf,
2859 AMG_id2name(method + assignshift),
2860 (flags & AMGf_unary ? " " : "\n\tleft "),
2862 "in overloaded package ":
2863 "has no overloaded magic",
2865 SVfARG(sv_2mortal(newSVhek(HvNAME_HEK(SvSTASH(SvRV(left)))))):
2868 ",\n\tright argument in overloaded package ":
2871 : ",\n\tright argument has no overloaded magic"),
2873 SVfARG(sv_2mortal(newSVhek(HvNAME_HEK(SvSTASH(SvRV(right)))))):
2874 SVfARG(&PL_sv_no)));
2875 if (use_default_op) {
2876 DEBUG_o( Perl_deb(aTHX_ "%"SVf, SVfARG(msg)) );
2878 Perl_croak(aTHX_ "%"SVf, SVfARG(msg));
2882 force_cpy = force_cpy || assign;
2887 /* in these cases, we're calling '+' or '-' as a fallback for a ++ or --
2888 * operation. we need this to return a value, so that it can be assigned
2889 * later on, in the postpr block (case inc_amg/dec_amg), even if the
2890 * increment or decrement was itself called in void context */
2896 if (off == subtr_amg)
2899 /* in these cases, we're calling an assignment variant of an operator
2900 * (+= rather than +, for instance). regardless of whether it's a
2901 * fallback or not, it always has to return a value, which will be
2902 * assigned to the proper variable later */
2919 /* the copy constructor always needs to return a value */
2923 /* because of the way these are implemented (they don't perform the
2924 * dereferencing themselves, they return a reference that perl then
2925 * dereferences later), they always have to be in scalar context */
2933 /* these don't have an op of their own; they're triggered by their parent
2934 * op, so the context there isn't meaningful ('$a and foo()' in void
2935 * context still needs to pass scalar context on to $a's bool overload) */
2945 DEBUG_o(Perl_deb(aTHX_
2946 "Overloaded operator \"%s\"%s%s%s:\n\tmethod%s found%s in package %"SVf"%s\n",
2948 method+assignshift==off? "" :
2950 method+assignshift==off? "" :
2951 AMG_id2name(method+assignshift),
2952 method+assignshift==off? "" : "\")",
2953 flags & AMGf_unary? "" :
2954 lr==1 ? " for right argument": " for left argument",
2955 flags & AMGf_unary? " for argument" : "",
2956 stash ? SVfARG(sv_2mortal(newSVhek(HvNAME_HEK(stash)))) : SVfARG(newSVpvs_flags("null", SVs_TEMP)),
2957 fl? ",\n\tassignment variant used": "") );
2960 /* Since we use shallow copy during assignment, we need
2961 * to dublicate the contents, probably calling user-supplied
2962 * version of copy operator
2964 /* We need to copy in following cases:
2965 * a) Assignment form was called.
2966 * assignshift==1, assign==T, method + 1 == off
2967 * b) Increment or decrement, called directly.
2968 * assignshift==0, assign==0, method + 0 == off
2969 * c) Increment or decrement, translated to assignment add/subtr.
2970 * assignshift==0, assign==T,
2972 * d) Increment or decrement, translated to nomethod.
2973 * assignshift==0, assign==0,
2975 * e) Assignment form translated to nomethod.
2976 * assignshift==1, assign==T, method + 1 != off
2979 /* off is method, method+assignshift, or a result of opcode substitution.
2980 * In the latter case assignshift==0, so only notfound case is important.
2982 if ( (lr == -1) && ( ( (method + assignshift == off)
2983 && (assign || (method == inc_amg) || (method == dec_amg)))
2986 /* newSVsv does not behave as advertised, so we copy missing
2987 * information by hand */
2988 SV *tmpRef = SvRV(left);
2990 if (SvREFCNT(tmpRef) > 1 && (rv_copy = AMG_CALLunary(left,copy_amg))) {
2991 SvRV_set(left, rv_copy);
2993 SvREFCNT_dec(tmpRef);
3001 const bool oldcatch = CATCH_GET;
3003 int gimme = force_scalar ? G_SCALAR : GIMME_V;
3006 Zero(&myop, 1, BINOP);
3007 myop.op_last = (OP *) &myop;
3008 myop.op_next = NULL;
3009 myop.op_flags = OPf_STACKED;
3013 myop.op_flags |= OPf_WANT_VOID;
3016 if (flags & AMGf_want_list) {
3017 myop.op_flags |= OPf_WANT_LIST;
3022 myop.op_flags |= OPf_WANT_SCALAR;
3026 PUSHSTACKi(PERLSI_OVERLOAD);
3029 PL_op = (OP *) &myop;
3030 if (PERLDB_SUB && PL_curstash != PL_debstash)
3031 PL_op->op_private |= OPpENTERSUB_DB;
3033 Perl_pp_pushmark(aTHX);
3035 EXTEND(SP, notfound + 5);
3036 PUSHs(lr>0? right: left);
3037 PUSHs(lr>0? left: right);
3038 PUSHs( lr > 0 ? &PL_sv_yes : ( assign ? &PL_sv_undef : &PL_sv_no ));
3040 PUSHs(newSVpvn_flags(AMG_id2name(method + assignshift),
3041 AMG_id2namelen(method + assignshift), SVs_TEMP));
3043 PUSHs(MUTABLE_SV(cv));
3047 if ((PL_op = PL_ppaddr[OP_ENTERSUB](aTHX)))
3051 nret = SP - (PL_stack_base + oldmark);
3055 /* returning NULL has another meaning, and we check the context
3056 * at the call site too, so this can be differentiated from the
3059 SP = PL_stack_base + oldmark;
3062 if (flags & AMGf_want_list) {
3063 res = sv_2mortal((SV *)newAV());
3064 av_extend((AV *)res, nret);
3066 av_store((AV *)res, nret, POPs);
3078 CATCH_SET(oldcatch);
3085 ans=SvIV(res)<=0; break;
3088 ans=SvIV(res)<0; break;
3091 ans=SvIV(res)>=0; break;
3094 ans=SvIV(res)>0; break;
3097 ans=SvIV(res)==0; break;
3100 ans=SvIV(res)!=0; break;
3103 SvSetSV(left,res); return left;
3105 ans=!SvTRUE(res); break;
3110 } else if (method==copy_amg) {
3112 Perl_croak(aTHX_ "Copy method did not return a reference");
3114 return SvREFCNT_inc(SvRV(res));
3122 Perl_gv_name_set(pTHX_ GV *gv, const char *name, U32 len, U32 flags)
3127 PERL_ARGS_ASSERT_GV_NAME_SET;
3130 Perl_croak(aTHX_ "panic: gv name too long (%"UVuf")", (UV) len);
3132 if (!(flags & GV_ADD) && GvNAME_HEK(gv)) {
3133 unshare_hek(GvNAME_HEK(gv));
3136 PERL_HASH(hash, name, len);
3137 GvNAME_HEK(gv) = share_hek(name, (flags & SVf_UTF8 ? -(I32)len : (I32)len), hash);
3141 =for apidoc gv_try_downgrade
3143 If the typeglob C<gv> can be expressed more succinctly, by having
3144 something other than a real GV in its place in the stash, replace it
3145 with the optimised form. Basic requirements for this are that C<gv>
3146 is a real typeglob, is sufficiently ordinary, and is only referenced
3147 from its package. This function is meant to be used when a GV has been
3148 looked up in part to see what was there, causing upgrading, but based
3149 on what was found it turns out that the real GV isn't required after all.
3151 If C<gv> is a completely empty typeglob, it is deleted from the stash.
3153 If C<gv> is a typeglob containing only a sufficiently-ordinary constant
3154 sub, the typeglob is replaced with a scalar-reference placeholder that
3155 more compactly represents the same thing.
3161 Perl_gv_try_downgrade(pTHX_ GV *gv)
3167 PERL_ARGS_ASSERT_GV_TRY_DOWNGRADE;
3169 /* XXX Why and where does this leave dangling pointers during global
3171 if (PL_phase == PERL_PHASE_DESTRUCT) return;
3173 if (!(SvREFCNT(gv) == 1 && SvTYPE(gv) == SVt_PVGV && !SvFAKE(gv) &&
3174 !SvOBJECT(gv) && !SvREADONLY(gv) &&
3175 isGV_with_GP(gv) && GvGP(gv) &&
3176 !GvINTRO(gv) && GvREFCNT(gv) == 1 &&
3177 !GvSV(gv) && !GvAV(gv) && !GvHV(gv) && !GvIOp(gv) && !GvFORM(gv) &&
3178 GvEGVx(gv) == gv && (stash = GvSTASH(gv))))
3180 if (SvMAGICAL(gv)) {
3182 /* only backref magic is allowed */
3183 if (SvGMAGICAL(gv) || SvSMAGICAL(gv))
3185 for (mg = SvMAGIC(gv); mg; mg = mg->mg_moremagic) {
3186 if (mg->mg_type != PERL_MAGIC_backref)
3192 HEK *gvnhek = GvNAME_HEK(gv);
3193 (void)hv_delete(stash, HEK_KEY(gvnhek),
3194 HEK_UTF8(gvnhek) ? -HEK_LEN(gvnhek) : HEK_LEN(gvnhek), G_DISCARD);
3195 } else if (GvMULTI(gv) && cv &&
3196 !SvOBJECT(cv) && !SvMAGICAL(cv) && !SvREADONLY(cv) &&
3197 CvSTASH(cv) == stash && CvGV(cv) == gv &&
3198 CvCONST(cv) && !CvMETHOD(cv) && !CvLVALUE(cv) && !CvUNIQUE(cv) &&
3199 !CvNODEBUG(cv) && !CvCLONE(cv) && !CvCLONED(cv) && !CvANON(cv) &&
3200 (namehek = GvNAME_HEK(gv)) &&
3201 (gvp = hv_fetch(stash, HEK_KEY(namehek),
3202 HEK_LEN(namehek)*(HEK_UTF8(namehek) ? -1 : 1), 0)) &&
3204 SV *value = SvREFCNT_inc(CvXSUBANY(cv).any_ptr);
3208 SvFLAGS(gv) = SVt_IV|SVf_ROK;
3209 SvANY(gv) = (XPVGV*)((char*)&(gv->sv_u.svu_iv) -
3210 STRUCT_OFFSET(XPVIV, xiv_iv));
3211 SvRV_set(gv, value);
3218 core_xsub(pTHX_ CV* cv)
3221 "&CORE::%s cannot be called directly", GvNAME(CvGV(cv))
3227 * c-indentation-style: bsd
3229 * indent-tabs-mode: nil
3232 * ex: set ts=8 sts=4 sw=4 et: