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"]
24 A GV is a structure which corresponds to to a Perl typeglob, ie *foo.
25 It is a structure that holds a pointer to a scalar, an array, a hash etc,
26 corresponding to $foo, @foo, %foo.
28 GVs are usually found as values in stashes (symbol table hashes) where
29 Perl stores its global variables.
39 #include "overload.inc"
43 static const char S_autoload[] = "AUTOLOAD";
44 #define S_autolen (sizeof("AUTOLOAD")-1)
47 Perl_gv_add_by_type(pTHX_ GV *gv, svtype type)
54 SvTYPE((const SV *)gv) != SVt_PVGV
55 && SvTYPE((const SV *)gv) != SVt_PVLV
59 if (type == SVt_PVIO) {
61 * if it walks like a dirhandle, then let's assume that
62 * this is a dirhandle.
64 what = OP_IS_DIRHOP(PL_op->op_type) ?
65 "dirhandle" : "filehandle";
66 } else if (type == SVt_PVHV) {
69 what = type == SVt_PVAV ? "array" : "scalar";
71 /* diag_listed_as: Bad symbol for filehandle */
72 Perl_croak(aTHX_ "Bad symbol for %s", what);
75 if (type == SVt_PVHV) {
76 where = (SV **)&GvHV(gv);
77 } else if (type == SVt_PVAV) {
78 where = (SV **)&GvAV(gv);
79 } else if (type == SVt_PVIO) {
80 where = (SV **)&GvIOp(gv);
87 *where = newSV_type(type);
89 && memEQs(GvNAME(gv), GvNAMELEN(gv), "ISA"))
90 sv_magic(*where, (SV *)gv, PERL_MAGIC_isa, NULL, 0);
96 =for apidoc gv_fetchfile
97 =for apidoc_item gv_fetchfile_flags
99 These return the debugger glob for the file (compiled by Perl) whose name is
100 given by the C<name> parameter.
102 There are currently exactly two differences between these functions.
104 The C<name> parameter to C<gv_fetchfile> is a C string, meaning it is
105 C<NUL>-terminated; whereas the C<name> parameter to C<gv_fetchfile_flags> is a
106 Perl string, whose length (in bytes) is passed in via the C<namelen> parameter
107 This means the name may contain embedded C<NUL> characters.
108 C<namelen> doesn't exist in plain C<gv_fetchfile>).
110 The other difference is that C<gv_fetchfile_flags> has an extra C<flags>
111 parameter, which is currently completely ignored, but allows for possible
117 Perl_gv_fetchfile(pTHX_ const char *name)
119 PERL_ARGS_ASSERT_GV_FETCHFILE;
120 return gv_fetchfile_flags(name, strlen(name), 0);
124 Perl_gv_fetchfile_flags(pTHX_ const char *const name, const STRLEN namelen,
129 const STRLEN tmplen = namelen + 2;
132 PERL_ARGS_ASSERT_GV_FETCHFILE_FLAGS;
133 PERL_UNUSED_ARG(flags);
138 if (tmplen <= sizeof smallbuf)
141 Newx(tmpbuf, tmplen, char);
142 /* This is where the debugger's %{"::_<$filename"} hash is created */
145 memcpy(tmpbuf + 2, name, namelen);
146 gv = *(GV**)hv_fetch(PL_defstash, tmpbuf, tmplen, TRUE);
148 gv_init(gv, PL_defstash, tmpbuf, tmplen, FALSE);
149 #ifdef PERL_DONT_CREATE_GVSV
150 GvSV(gv) = newSVpvn(name, namelen);
152 sv_setpvn(GvSV(gv), name, namelen);
155 if (PERLDB_LINE_OR_SAVESRC && !GvAV(gv))
156 hv_magic(GvHVn(gv), GvAVn(gv), PERL_MAGIC_dbfile);
157 if (tmpbuf != smallbuf)
163 =for apidoc gv_const_sv
165 If C<gv> is a typeglob whose subroutine entry is a constant sub eligible for
166 inlining, or C<gv> is a placeholder reference that would be promoted to such
167 a typeglob, then returns the value returned by the sub. Otherwise, returns
174 Perl_gv_const_sv(pTHX_ GV *gv)
176 PERL_ARGS_ASSERT_GV_CONST_SV;
179 if (SvTYPE(gv) == SVt_PVGV)
180 return cv_const_sv(GvCVu(gv));
181 return SvROK(gv) && SvTYPE(SvRV(gv)) != SVt_PVAV && SvTYPE(SvRV(gv)) != SVt_PVCV ? SvRV(gv) : NULL;
185 Perl_newGP(pTHX_ GV *const gv)
195 PERL_ARGS_ASSERT_NEWGP;
197 gp->gp_egv = gv; /* allow compiler to reuse gv after this */
198 #ifndef PERL_DONT_CREATE_GVSV
199 gp->gp_sv = newSV(0);
202 /* PL_curcop may be null here. E.g.,
203 INIT { bless {} and exit }
204 frees INIT before looking up DESTROY (and creating *DESTROY)
207 gp->gp_line = CopLINE(PL_curcop); /* 0 otherwise Newxz */
209 if (CopFILE(PL_curcop)) {
210 file = CopFILE(PL_curcop);
214 filegv = CopFILEGV(PL_curcop);
216 file = GvNAME(filegv)+2;
217 len = GvNAMELEN(filegv)-2;
228 PERL_HASH(hash, file, len);
229 gp->gp_file_hek = share_hek(file, len, hash);
235 /* Assign CvGV(cv) = gv, handling weak references.
236 * See also S_anonymise_cv_maybe */
239 Perl_cvgv_set(pTHX_ CV* cv, GV* gv)
241 GV * const oldgv = CvNAMED(cv) ? NULL : SvANY(cv)->xcv_gv_u.xcv_gv;
243 PERL_ARGS_ASSERT_CVGV_SET;
250 SvREFCNT_dec_NN(oldgv);
254 sv_del_backref(MUTABLE_SV(oldgv), MUTABLE_SV(cv));
257 else if ((hek = CvNAME_HEK(cv))) {
263 SvANY(cv)->xcv_gv_u.xcv_gv = gv;
264 assert(!CvCVGV_RC(cv));
269 if (isGV_with_GP(gv) && GvGP(gv) && (GvCV(gv) == cv || GvFORM(gv) == cv))
270 Perl_sv_add_backref(aTHX_ MUTABLE_SV(gv), MUTABLE_SV(cv));
273 SvREFCNT_inc_simple_void_NN(gv);
277 /* Convert CvSTASH + CvNAME_HEK into a GV. Conceptually, all subs have a
278 GV, but for efficiency that GV may not in fact exist. This function,
279 called by CvGV, reifies it. */
282 Perl_cvgv_from_hek(pTHX_ CV *cv)
286 PERL_ARGS_ASSERT_CVGV_FROM_HEK;
287 assert(SvTYPE(cv) == SVt_PVCV);
288 if (!CvSTASH(cv)) return NULL;
289 ASSUME(CvNAME_HEK(cv));
290 svp = hv_fetchhek(CvSTASH(cv), CvNAME_HEK(cv), 0);
291 gv = MUTABLE_GV(svp && *svp ? *svp : newSV(0));
293 gv_init_pvn(gv, CvSTASH(cv), HEK_KEY(CvNAME_HEK(cv)),
294 HEK_LEN(CvNAME_HEK(cv)),
295 SVf_UTF8 * !!HEK_UTF8(CvNAME_HEK(cv)));
296 if (!CvNAMED(cv)) { /* gv_init took care of it */
297 assert (SvANY(cv)->xcv_gv_u.xcv_gv == gv);
300 unshare_hek(CvNAME_HEK(cv));
302 SvANY(cv)->xcv_gv_u.xcv_gv = gv;
303 if (svp && *svp) SvREFCNT_inc_simple_void_NN(gv);
308 /* Assign CvSTASH(cv) = st, handling weak references. */
311 Perl_cvstash_set(pTHX_ CV *cv, HV *st)
313 HV *oldst = CvSTASH(cv);
314 PERL_ARGS_ASSERT_CVSTASH_SET;
318 sv_del_backref(MUTABLE_SV(oldst), MUTABLE_SV(cv));
319 SvANY(cv)->xcv_stash = st;
321 Perl_sv_add_backref(aTHX_ MUTABLE_SV(st), MUTABLE_SV(cv));
325 =for apidoc gv_init_pvn
327 Converts a scalar into a typeglob. This is an incoercible typeglob;
328 assigning a reference to it will assign to one of its slots, instead of
329 overwriting it as happens with typeglobs created by C<SvSetSV>. Converting
330 any scalar that is C<SvOK()> may produce unpredictable results and is reserved
331 for perl's internal use.
333 C<gv> is the scalar to be converted.
335 C<stash> is the parent stash/package, if any.
337 C<name> and C<len> give the name. The name must be unqualified;
338 that is, it must not include the package name. If C<gv> is a
339 stash element, it is the caller's responsibility to ensure that the name
340 passed to this function matches the name of the element. If it does not
341 match, perl's internal bookkeeping will get out of sync.
343 C<flags> can be set to C<SVf_UTF8> if C<name> is a UTF-8 string, or
344 the return value of SvUTF8(sv). It can also take the
345 C<GV_ADDMULTI> flag, which means to pretend that the GV has been
346 seen before (i.e., suppress "Used once" warnings).
348 =for apidoc Amnh||GV_ADDMULTI
352 The old form of C<gv_init_pvn()>. It does not work with UTF-8 strings, as it
353 has no flags parameter. If the C<multi> parameter is set, the
354 C<GV_ADDMULTI> flag will be passed to C<gv_init_pvn()>.
356 =for apidoc gv_init_pv
358 Same as C<gv_init_pvn()>, but takes a nul-terminated string for the name
359 instead of separate char * and length parameters.
361 =for apidoc gv_init_sv
363 Same as C<gv_init_pvn()>, but takes an SV * for the name instead of separate
364 char * and length parameters. C<flags> is currently unused.
370 Perl_gv_init_sv(pTHX_ GV *gv, HV *stash, SV* namesv, U32 flags)
374 PERL_ARGS_ASSERT_GV_INIT_SV;
375 namepv = SvPV(namesv, namelen);
378 gv_init_pvn(gv, stash, namepv, namelen, flags);
382 Perl_gv_init_pv(pTHX_ GV *gv, HV *stash, const char *name, U32 flags)
384 PERL_ARGS_ASSERT_GV_INIT_PV;
385 gv_init_pvn(gv, stash, name, strlen(name), flags);
389 Perl_gv_init_pvn(pTHX_ GV *gv, HV *stash, const char *name, STRLEN len, U32 flags)
391 const U32 old_type = SvTYPE(gv);
392 const bool doproto = old_type > SVt_NULL;
393 char * const proto = (doproto && SvPOK(gv))
394 ? ((void)(SvIsCOW(gv) && (sv_force_normal((SV *)gv), 0)), SvPVX(gv))
396 const STRLEN protolen = proto ? SvCUR(gv) : 0;
397 const U32 proto_utf8 = proto ? SvUTF8(gv) : 0;
398 SV *const has_constant = doproto && SvROK(gv) ? SvRV(gv) : NULL;
399 const U32 exported_constant = has_constant ? SvPCS_IMPORTED(gv) : 0;
400 const bool really_sub =
401 has_constant && SvTYPE(has_constant) == SVt_PVCV;
402 COP * const old = PL_curcop;
404 PERL_ARGS_ASSERT_GV_INIT_PVN;
405 assert (!(proto && has_constant));
408 /* The constant has to be a scalar, array or subroutine. */
409 switch (SvTYPE(has_constant)) {
413 Perl_croak(aTHX_ "Cannot convert a reference to %s to typeglob",
414 sv_reftype(has_constant, 0));
415 NOT_REACHED; /* NOTREACHED */
425 if (old_type < SVt_PVGV) {
426 if (old_type >= SVt_PV)
428 sv_upgrade(MUTABLE_SV(gv), SVt_PVGV);
436 Safefree(SvPVX_mutable(gv));
441 if (really_sub && !CvISXSUB(has_constant) && CvSTART(has_constant)
442 && ( CvSTART(has_constant)->op_type == OP_NEXTSTATE
443 || CvSTART(has_constant)->op_type == OP_DBSTATE))
444 PL_curcop = (COP *)CvSTART(has_constant);
445 GvGP_set(gv, Perl_newGP(aTHX_ gv));
449 Perl_sv_add_backref(aTHX_ MUTABLE_SV(stash), MUTABLE_SV(gv));
450 gv_name_set(gv, name, len, GV_ADD | ( flags & SVf_UTF8 ? SVf_UTF8 : 0 ));
451 if (flags & GV_ADDMULTI || doproto) /* doproto means it */
452 GvMULTI_on(gv); /* _was_ mentioned */
454 /* Not actually a constant. Just a regular sub. */
455 CV * const cv = (CV *)has_constant;
457 if (CvNAMED(cv) && CvSTASH(cv) == stash && (
458 CvNAME_HEK(cv) == GvNAME_HEK(gv)
459 || ( HEK_LEN(CvNAME_HEK(cv)) == HEK_LEN(GvNAME_HEK(gv))
460 && HEK_FLAGS(CvNAME_HEK(cv)) != HEK_FLAGS(GvNAME_HEK(gv))
461 && HEK_UTF8(CvNAME_HEK(cv)) == HEK_UTF8(GvNAME_HEK(gv))
462 && memEQ(HEK_KEY(CvNAME_HEK(cv)), GvNAME(gv), GvNAMELEN(gv))
470 /* newCONSTSUB takes ownership of the reference from us. */
471 cv = newCONSTSUB_flags(stash, name, len, flags, has_constant);
472 /* In case op.c:S_process_special_blocks stole it: */
474 GvCV_set(gv, (CV *)SvREFCNT_inc_simple_NN(cv));
475 assert(GvCV(gv) == cv); /* newCONSTSUB should have set this */
476 /* If this reference was a copy of another, then the subroutine
477 must have been "imported", by a Perl space assignment to a GV
478 from a reference to CV. */
479 if (exported_constant)
480 GvIMPORTED_CV_on(gv);
481 CvSTASH_set(cv, PL_curstash); /* XXX Why is this needed? */
486 sv_usepvn_flags(MUTABLE_SV(cv), proto, protolen,
487 SV_HAS_TRAILING_NUL);
488 if ( proto_utf8 ) SvUTF8_on(MUTABLE_SV(cv));
494 S_gv_init_svtype(pTHX_ GV *gv, const svtype sv_type)
496 PERL_ARGS_ASSERT_GV_INIT_SVTYPE;
508 #ifdef PERL_DONT_CREATE_GVSV
516 /* Work round what appears to be a bug in Sun C++ 5.8 2005/10/13
517 If we just cast GvSVn(gv) to void, it ignores evaluating it for
524 static void core_xsub(pTHX_ CV* cv);
527 S_maybe_add_coresub(pTHX_ HV * const stash, GV *gv,
528 const char * const name, const STRLEN len)
530 const int code = keyword(name, len, 1);
531 static const char file[] = __FILE__;
532 CV *cv, *oldcompcv = NULL;
534 bool ampable = TRUE; /* &{}-able */
535 COP *oldcurcop = NULL;
536 yy_parser *oldparser = NULL;
537 I32 oldsavestack_ix = 0;
542 if (!code) return NULL; /* Not a keyword */
543 switch (code < 0 ? -code : code) {
544 /* no support for \&CORE::infix;
545 no support for funcs that do not parse like funcs */
546 case KEY___DATA__: case KEY___END__: case KEY_and: case KEY_AUTOLOAD:
547 case KEY_BEGIN : case KEY_CHECK : case KEY_cmp:
548 case KEY_default : case KEY_DESTROY:
549 case KEY_do : case KEY_dump : case KEY_else : case KEY_elsif :
550 case KEY_END : case KEY_eq : case KEY_eval :
551 case KEY_for : case KEY_foreach: case KEY_format: case KEY_ge :
552 case KEY_given : case KEY_goto : case KEY_grep : case KEY_gt :
553 case KEY_if : case KEY_isa : case KEY_INIT : case KEY_last :
554 case KEY_le : case KEY_local : case KEY_lt : case KEY_m :
555 case KEY_map : case KEY_my:
556 case KEY_ne : case KEY_next : case KEY_no: case KEY_or: case KEY_our:
557 case KEY_package: case KEY_print: case KEY_printf:
558 case KEY_q : case KEY_qq : case KEY_qr : case KEY_qw :
559 case KEY_qx : case KEY_redo : case KEY_require: case KEY_return:
560 case KEY_s : case KEY_say : case KEY_sort :
561 case KEY_state: case KEY_sub :
562 case KEY_tr : case KEY_UNITCHECK: case KEY_unless:
563 case KEY_until: case KEY_use : case KEY_when : case KEY_while :
564 case KEY_x : case KEY_xor : case KEY_y :
567 case KEY_chomp: case KEY_chop: case KEY_defined: case KEY_delete:
568 case KEY_eof : case KEY_exec: case KEY_exists :
573 case KEY_truncate: case KEY_unlink:
578 gv_init(gv, stash, name, len, TRUE);
583 oldcurcop = PL_curcop;
584 oldparser = PL_parser;
585 lex_start(NULL, NULL, 0);
586 oldcompcv = PL_compcv;
587 PL_compcv = NULL; /* Prevent start_subparse from setting
589 oldsavestack_ix = start_subparse(FALSE,0);
593 /* Avoid calling newXS, as it calls us, and things start to
595 cv = MUTABLE_CV(newSV_type(SVt_PVCV));
599 CvXSUB(cv) = core_xsub;
602 CvGV_set(cv, gv); /* This stops new ATTRSUB from setting CvFILE
604 /* XSUBs can't be perl lang/perl5db.pl debugged
605 if (PERLDB_LINE_OR_SAVESRC)
606 (void)gv_fetchfile(file); */
607 CvFILE(cv) = (char *)file;
608 /* XXX This is inefficient, as doing things this order causes
609 a prototype check in newATTRSUB. But we have to do
610 it this order as we need an op number before calling
612 (void)core_prototype((SV *)cv, name, code, &opnum);
614 (void)hv_store(stash,name,len,(SV *)gv,0);
620 /* newATTRSUB will free the CV and return NULL if we're still
621 compiling after a syntax error */
622 if ((cv = newATTRSUB_x(
623 oldsavestack_ix, (OP *)gv,
628 : newSVpvn(name,len),
633 assert(GvCV(gv) == orig_cv);
634 if (opnum != OP_VEC && opnum != OP_SUBSTR && opnum != OP_POS
635 && opnum != OP_UNDEF && opnum != OP_KEYS)
636 CvLVALUE_off(cv); /* Now *that* was a neat trick. */
639 PL_parser = oldparser;
640 PL_curcop = oldcurcop;
641 PL_compcv = oldcompcv;
644 SV *opnumsv = newSViv(
645 (opnum == OP_ENTEREVAL && len == 9 && memEQ(name, "evalbytes", 9)) ?
646 (OP_ENTEREVAL | (1<<16))
647 : opnum ? opnum : (((I32)name[2]) << 16));
648 cv_set_call_checker_flags(cv, Perl_ck_entersub_args_core, opnumsv, 0);
649 SvREFCNT_dec_NN(opnumsv);
656 =for apidoc gv_fetchmeth
658 Like L</gv_fetchmeth_pvn>, but lacks a flags parameter.
660 =for apidoc gv_fetchmeth_sv
662 Exactly like L</gv_fetchmeth_pvn>, but takes the name string in the form
663 of an SV instead of a string/length pair.
669 Perl_gv_fetchmeth_sv(pTHX_ HV *stash, SV *namesv, I32 level, U32 flags)
673 PERL_ARGS_ASSERT_GV_FETCHMETH_SV;
674 if (LIKELY(SvPOK_nog(namesv))) /* common case */
675 return gv_fetchmeth_internal(stash, namesv, NULL, 0, level,
676 flags | SvUTF8(namesv));
677 namepv = SvPV(namesv, namelen);
678 if (SvUTF8(namesv)) flags |= SVf_UTF8;
679 return gv_fetchmeth_pvn(stash, namepv, namelen, level, flags);
683 =for apidoc gv_fetchmeth_pv
685 Exactly like L</gv_fetchmeth_pvn>, but takes a nul-terminated string
686 instead of a string/length pair.
692 Perl_gv_fetchmeth_pv(pTHX_ HV *stash, const char *name, I32 level, U32 flags)
694 PERL_ARGS_ASSERT_GV_FETCHMETH_PV;
695 return gv_fetchmeth_internal(stash, NULL, name, strlen(name), level, flags);
699 =for apidoc gv_fetchmeth_pvn
701 Returns the glob with the given C<name> and a defined subroutine or
702 C<NULL>. The glob lives in the given C<stash>, or in the stashes
703 accessible via C<@ISA> and C<UNIVERSAL::>.
705 The argument C<level> should be either 0 or -1. If C<level==0>, as a
706 side-effect creates a glob with the given C<name> in the given C<stash>
707 which in the case of success contains an alias for the subroutine, and sets
708 up caching info for this glob.
710 The only significant values for C<flags> are C<GV_SUPER> and C<SVf_UTF8>.
712 C<GV_SUPER> indicates that we want to look up the method in the superclasses
716 GV returned from C<gv_fetchmeth> may be a method cache entry, which is not
717 visible to Perl code. So when calling C<call_sv>, you should not use
718 the GV directly; instead, you should use the method's CV, which can be
719 obtained from the GV with the C<GvCV> macro.
721 =for apidoc Amnh||GV_SUPER
726 /* NOTE: No support for tied ISA */
728 PERL_STATIC_INLINE GV*
729 S_gv_fetchmeth_internal(pTHX_ HV* stash, SV* meth, const char* name, STRLEN len, I32 level, U32 flags)
736 HV* cstash, *cachestash;
737 GV* candidate = NULL;
742 I32 create = (level >= 0) ? HV_FETCH_LVALUE : 0;
745 U32 is_utf8 = flags & SVf_UTF8;
747 /* UNIVERSAL methods should be callable without a stash */
749 create = 0; /* probably appropriate */
750 if(!(stash = gv_stashpvs("UNIVERSAL", 0)))
756 hvname = HvNAME_get(stash);
757 hvnamelen = HvNAMELEN_get(stash);
759 Perl_croak(aTHX_ "Can't use anonymous symbol table for method lookup");
762 assert(name || meth);
764 DEBUG_o( Perl_deb(aTHX_ "Looking for %smethod %s in package %s\n",
765 flags & GV_SUPER ? "SUPER " : "",
766 name ? name : SvPV_nolen(meth), hvname) );
768 topgen_cmp = HvMROMETA(stash)->cache_gen + PL_sub_generation;
770 if (flags & GV_SUPER) {
771 if (!HvAUX(stash)->xhv_mro_meta->super)
772 HvAUX(stash)->xhv_mro_meta->super = newHV();
773 cachestash = HvAUX(stash)->xhv_mro_meta->super;
775 else cachestash = stash;
777 /* check locally for a real method or a cache entry */
779 cachestash, meth, name, len, is_utf8 ? HVhek_UTF8 : 0, create, NULL, 0
781 if (he) gvp = (GV**)&HeVAL(he);
788 if (SvTYPE(topgv) != SVt_PVGV)
791 name = SvPV_nomg(meth, len);
792 gv_init_pvn(topgv, stash, name, len, GV_ADDMULTI|is_utf8);
794 if ((cand_cv = GvCV(topgv))) {
795 /* If genuine method or valid cache entry, use it */
796 if (!GvCVGEN(topgv) || GvCVGEN(topgv) == topgen_cmp) {
800 /* stale cache entry, junk it and move on */
801 SvREFCNT_dec_NN(cand_cv);
802 GvCV_set(topgv, NULL);
807 else if (GvCVGEN(topgv) == topgen_cmp) {
808 /* cache indicates no such method definitively */
811 else if (stash == cachestash
812 && len > 1 /* shortest is uc */
813 && memEQs(hvname, HvNAMELEN_get(stash), "CORE")
814 && S_maybe_add_coresub(aTHX_ NULL,topgv,name,len))
818 linear_av = mro_get_linear_isa(stash); /* has ourselves at the top of the list */
819 linear_svp = AvARRAY(linear_av) + 1; /* skip over self */
820 items = AvFILLp(linear_av); /* no +1, to skip over self */
822 linear_sv = *linear_svp++;
824 cstash = gv_stashsv(linear_sv, 0);
827 if ( ckWARN(WARN_SYNTAX)) {
828 if( /* these are loaded from Perl_Gv_AMupdate() one way or another */
829 ( len && name[0] == '(' ) /* overload.pm related, in particular "()" */
830 || ( memEQs( name, len, "DESTROY") )
832 Perl_ck_warner(aTHX_ packWARN(WARN_SYNTAX),
833 "Can't locate package %" SVf " for @%" HEKf "::ISA",
835 HEKfARG(HvNAME_HEK(stash)));
837 } else if( memEQs( name, len, "AUTOLOAD") ) {
838 /* gobble this warning */
840 Perl_ck_warner(aTHX_ packWARN(WARN_SYNTAX),
841 "While trying to resolve method call %.*s->%.*s()"
842 " can not locate package \"%" SVf "\" yet it is mentioned in @%.*s::ISA"
843 " (perhaps you forgot to load \"%" SVf "\"?)",
844 (int) hvnamelen, hvname,
847 (int) hvnamelen, hvname,
856 gvp = (GV**)hv_common(
857 cstash, meth, name, len, is_utf8 ? HVhek_UTF8 : 0, HV_FETCH_JUST_SV, NULL, 0
860 if (len > 1 && HvNAMELEN_get(cstash) == 4) {
861 const char *hvname = HvNAME(cstash); assert(hvname);
862 if (strBEGINs(hvname, "CORE")
864 S_maybe_add_coresub(aTHX_ cstash,NULL,name,len)
870 else candidate = *gvp;
873 if (SvTYPE(candidate) != SVt_PVGV)
874 gv_init_pvn(candidate, cstash, name, len, GV_ADDMULTI|is_utf8);
875 if (SvTYPE(candidate) == SVt_PVGV && (cand_cv = GvCV(candidate)) && !GvCVGEN(candidate)) {
877 * Found real method, cache method in topgv if:
878 * 1. topgv has no synonyms (else inheritance crosses wires)
879 * 2. method isn't a stub (else AUTOLOAD fails spectacularly)
881 if (topgv && (GvREFCNT(topgv) == 1) && (CvROOT(cand_cv) || CvXSUB(cand_cv))) {
882 CV *old_cv = GvCV(topgv);
883 SvREFCNT_dec(old_cv);
884 SvREFCNT_inc_simple_void_NN(cand_cv);
885 GvCV_set(topgv, cand_cv);
886 GvCVGEN(topgv) = topgen_cmp;
892 /* Check UNIVERSAL without caching */
893 if(level == 0 || level == -1) {
894 candidate = gv_fetchmeth_internal(NULL, meth, name, len, 1,
897 cand_cv = GvCV(candidate);
898 if (topgv && (GvREFCNT(topgv) == 1) && (CvROOT(cand_cv) || CvXSUB(cand_cv))) {
899 CV *old_cv = GvCV(topgv);
900 SvREFCNT_dec(old_cv);
901 SvREFCNT_inc_simple_void_NN(cand_cv);
902 GvCV_set(topgv, cand_cv);
903 GvCVGEN(topgv) = topgen_cmp;
909 if (topgv && GvREFCNT(topgv) == 1) {
910 /* cache the fact that the method is not defined */
911 GvCVGEN(topgv) = topgen_cmp;
918 Perl_gv_fetchmeth_pvn(pTHX_ HV *stash, const char *name, STRLEN len, I32 level, U32 flags)
920 PERL_ARGS_ASSERT_GV_FETCHMETH_PVN;
921 return gv_fetchmeth_internal(stash, NULL, name, len, level, flags);
925 =for apidoc gv_fetchmeth_autoload
927 This is the old form of L</gv_fetchmeth_pvn_autoload>, which has no flags
930 =for apidoc gv_fetchmeth_sv_autoload
932 Exactly like L</gv_fetchmeth_pvn_autoload>, but takes the name string in the form
933 of an SV instead of a string/length pair.
939 Perl_gv_fetchmeth_sv_autoload(pTHX_ HV *stash, SV *namesv, I32 level, U32 flags)
943 PERL_ARGS_ASSERT_GV_FETCHMETH_SV_AUTOLOAD;
944 namepv = SvPV(namesv, namelen);
947 return gv_fetchmeth_pvn_autoload(stash, namepv, namelen, level, flags);
951 =for apidoc gv_fetchmeth_pv_autoload
953 Exactly like L</gv_fetchmeth_pvn_autoload>, but takes a nul-terminated string
954 instead of a string/length pair.
960 Perl_gv_fetchmeth_pv_autoload(pTHX_ HV *stash, const char *name, I32 level, U32 flags)
962 PERL_ARGS_ASSERT_GV_FETCHMETH_PV_AUTOLOAD;
963 return gv_fetchmeth_pvn_autoload(stash, name, strlen(name), level, flags);
967 =for apidoc gv_fetchmeth_pvn_autoload
969 Same as C<gv_fetchmeth_pvn()>, but looks for autoloaded subroutines too.
970 Returns a glob for the subroutine.
972 For an autoloaded subroutine without a GV, will create a GV even
973 if C<level < 0>. For an autoloaded subroutine without a stub, C<GvCV()>
974 of the result may be zero.
976 Currently, the only significant value for C<flags> is C<SVf_UTF8>.
982 Perl_gv_fetchmeth_pvn_autoload(pTHX_ HV *stash, const char *name, STRLEN len, I32 level, U32 flags)
984 GV *gv = gv_fetchmeth_pvn(stash, name, len, level, flags);
986 PERL_ARGS_ASSERT_GV_FETCHMETH_PVN_AUTOLOAD;
993 return NULL; /* UNIVERSAL::AUTOLOAD could cause trouble */
994 if (len == S_autolen && memEQ(name, S_autoload, S_autolen))
996 if (!(gv = gv_fetchmeth_pvn(stash, S_autoload, S_autolen, FALSE, flags)))
999 if (!(CvROOT(cv) || CvXSUB(cv)))
1001 /* Have an autoload */
1002 if (level < 0) /* Cannot do without a stub */
1003 gv_fetchmeth_pvn(stash, name, len, 0, flags);
1004 gvp = (GV**)hv_fetch(stash, name,
1005 (flags & SVf_UTF8) ? -(I32)len : (I32)len, (level >= 0));
1014 =for apidoc gv_fetchmethod_autoload
1016 Returns the glob which contains the subroutine to call to invoke the method
1017 on the C<stash>. In fact in the presence of autoloading this may be the
1018 glob for "AUTOLOAD". In this case the corresponding variable C<$AUTOLOAD> is
1021 The third parameter of C<gv_fetchmethod_autoload> determines whether
1022 AUTOLOAD lookup is performed if the given method is not present: non-zero
1023 means yes, look for AUTOLOAD; zero means no, don't look for AUTOLOAD.
1024 Calling C<gv_fetchmethod> is equivalent to calling C<gv_fetchmethod_autoload>
1025 with a non-zero C<autoload> parameter.
1027 These functions grant C<"SUPER"> token
1028 as a prefix of the method name. Note
1029 that if you want to keep the returned glob for a long time, you need to
1030 check for it being "AUTOLOAD", since at the later time the call may load a
1031 different subroutine due to C<$AUTOLOAD> changing its value. Use the glob
1032 created as a side effect to do this.
1034 These functions have the same side-effects as C<gv_fetchmeth> with
1035 C<level==0>. The warning against passing the GV returned by
1036 C<gv_fetchmeth> to C<call_sv> applies equally to these functions.
1042 Perl_gv_fetchmethod_autoload(pTHX_ HV *stash, const char *name, I32 autoload)
1044 PERL_ARGS_ASSERT_GV_FETCHMETHOD_AUTOLOAD;
1046 return gv_fetchmethod_flags(stash, name, autoload ? GV_AUTOLOAD : 0);
1050 Perl_gv_fetchmethod_sv_flags(pTHX_ HV *stash, SV *namesv, U32 flags)
1054 PERL_ARGS_ASSERT_GV_FETCHMETHOD_SV_FLAGS;
1055 namepv = SvPV(namesv, namelen);
1058 return gv_fetchmethod_pvn_flags(stash, namepv, namelen, flags);
1062 Perl_gv_fetchmethod_pv_flags(pTHX_ HV *stash, const char *name, U32 flags)
1064 PERL_ARGS_ASSERT_GV_FETCHMETHOD_PV_FLAGS;
1065 return gv_fetchmethod_pvn_flags(stash, name, strlen(name), flags);
1069 Perl_gv_fetchmethod_pvn_flags(pTHX_ HV *stash, const char *name, const STRLEN len, U32 flags)
1071 const char * const origname = name;
1072 const char * const name_end = name + len;
1073 const char *last_separator = NULL;
1076 SV *const error_report = MUTABLE_SV(stash);
1077 const U32 autoload = flags & GV_AUTOLOAD;
1078 const U32 do_croak = flags & GV_CROAK;
1079 const U32 is_utf8 = flags & SVf_UTF8;
1081 PERL_ARGS_ASSERT_GV_FETCHMETHOD_PVN_FLAGS;
1083 if (SvTYPE(stash) < SVt_PVHV)
1086 /* The only way stash can become NULL later on is if last_separator is set,
1087 which in turn means that there is no need for a SVt_PVHV case
1088 the error reporting code. */
1092 /* check if the method name is fully qualified or
1093 * not, and separate the package name from the actual
1096 * leaves last_separator pointing to the beginning of the
1097 * last package separator (either ' or ::) or 0
1098 * if none was found.
1100 * leaves name pointing at the beginning of the
1103 const char *name_cursor = name;
1104 const char * const name_em1 = name_end - 1; /* name_end minus 1 */
1105 for (name_cursor = name; name_cursor < name_end ; name_cursor++) {
1106 if (*name_cursor == '\'') {
1107 last_separator = name_cursor;
1108 name = name_cursor + 1;
1110 else if (name_cursor < name_em1 && *name_cursor == ':' && name_cursor[1] == ':') {
1111 last_separator = name_cursor++;
1112 name = name_cursor + 1;
1117 /* did we find a separator? */
1118 if (last_separator) {
1119 STRLEN sep_len= last_separator - origname;
1120 if ( memEQs(origname, sep_len, "SUPER")) {
1121 /* ->SUPER::method should really be looked up in original stash */
1122 stash = CopSTASH(PL_curcop);
1124 DEBUG_o( Perl_deb(aTHX_ "Treating %s as %s::%s\n",
1125 origname, HvENAME_get(stash), name) );
1127 else if ( sep_len >= 7 &&
1128 strBEGINs(last_separator - 7, "::SUPER")) {
1129 /* don't autovifify if ->NoSuchStash::SUPER::method */
1130 stash = gv_stashpvn(origname, sep_len - 7, is_utf8);
1131 if (stash) flags |= GV_SUPER;
1134 /* don't autovifify if ->NoSuchStash::method */
1135 stash = gv_stashpvn(origname, sep_len, is_utf8);
1140 gv = gv_fetchmeth_pvn(stash, name, name_end - name, 0, flags);
1142 /* This is the special case that exempts Foo->import and
1143 Foo->unimport from being an error even if there's no
1144 import/unimport subroutine */
1145 if (strEQ(name,"import") || strEQ(name,"unimport")) {
1146 gv = (GV*)sv_2mortal((SV*)newCONSTSUB_flags(NULL,
1148 } else if (autoload)
1149 gv = gv_autoload_pvn(
1150 ostash, name, name_end - name, GV_AUTOLOAD_ISMETHOD|flags
1152 if (!gv && do_croak) {
1153 /* Right now this is exclusively for the benefit of S_method_common
1156 /* If we can't find an IO::File method, it might be a call on
1157 * a filehandle. If IO:File has not been loaded, try to
1158 * require it first instead of croaking */
1159 const char *stash_name = HvNAME_get(stash);
1160 if (stash_name && memEQs(stash_name, HvNAMELEN_get(stash), "IO::File")
1161 && !Perl_hv_common(aTHX_ GvHVn(PL_incgv), NULL,
1162 STR_WITH_LEN("IO/File.pm"), 0,
1163 HV_FETCH_ISEXISTS, NULL, 0)
1165 require_pv("IO/File.pm");
1166 gv = gv_fetchmeth_pvn(stash, name, name_end - name, 0, flags);
1171 "Can't locate object method \"%" UTF8f
1172 "\" via package \"%" HEKf "\"",
1173 UTF8fARG(is_utf8, name_end - name, name),
1174 HEKfARG(HvNAME_HEK(stash)));
1179 if (last_separator) {
1180 packnamesv = newSVpvn_flags(origname, last_separator - origname,
1181 SVs_TEMP | is_utf8);
1183 packnamesv = error_report;
1187 "Can't locate object method \"%" UTF8f
1188 "\" via package \"%" SVf "\""
1189 " (perhaps you forgot to load \"%" SVf "\"?)",
1190 UTF8fARG(is_utf8, name_end - name, name),
1191 SVfARG(packnamesv), SVfARG(packnamesv));
1195 else if (autoload) {
1196 CV* const cv = GvCV(gv);
1197 if (!CvROOT(cv) && !CvXSUB(cv)) {
1201 if (CvANON(cv) || CvLEXICAL(cv))
1205 if (GvCV(stubgv) != cv) /* orphaned import */
1208 autogv = gv_autoload_pvn(GvSTASH(stubgv),
1209 GvNAME(stubgv), GvNAMELEN(stubgv),
1210 GV_AUTOLOAD_ISMETHOD
1211 | (GvNAMEUTF8(stubgv) ? SVf_UTF8 : 0));
1221 Perl_gv_autoload_sv(pTHX_ HV *stash, SV* namesv, U32 flags)
1225 PERL_ARGS_ASSERT_GV_AUTOLOAD_SV;
1226 namepv = SvPV(namesv, namelen);
1229 return gv_autoload_pvn(stash, namepv, namelen, flags);
1233 Perl_gv_autoload_pv(pTHX_ HV *stash, const char *namepv, U32 flags)
1235 PERL_ARGS_ASSERT_GV_AUTOLOAD_PV;
1236 return gv_autoload_pvn(stash, namepv, strlen(namepv), flags);
1240 Perl_gv_autoload_pvn(pTHX_ HV *stash, const char *name, STRLEN len, U32 flags)
1247 SV *packname = NULL;
1248 U32 is_utf8 = flags & SVf_UTF8 ? SVf_UTF8 : 0;
1250 PERL_ARGS_ASSERT_GV_AUTOLOAD_PVN;
1252 if (len == S_autolen && memEQ(name, S_autoload, S_autolen))
1255 if (SvTYPE(stash) < SVt_PVHV) {
1256 STRLEN packname_len = 0;
1257 const char * const packname_ptr = SvPV_const(MUTABLE_SV(stash), packname_len);
1258 packname = newSVpvn_flags(packname_ptr, packname_len,
1259 SVs_TEMP | SvUTF8(stash));
1263 packname = sv_2mortal(newSVhek(HvNAME_HEK(stash)));
1264 if (flags & GV_SUPER) sv_catpvs(packname, "::SUPER");
1266 if (!(gv = gv_fetchmeth_pvn(stash, S_autoload, S_autolen, FALSE,
1267 is_utf8 | (flags & GV_SUPER))))
1271 if (!(CvROOT(cv) || CvXSUB(cv)))
1275 * Inheriting AUTOLOAD for non-methods no longer works
1278 !(flags & GV_AUTOLOAD_ISMETHOD)
1279 && (GvCVGEN(gv) || GvSTASH(gv) != stash)
1281 Perl_croak(aTHX_ "Use of inherited AUTOLOAD for non-method %" SVf
1282 "::%" UTF8f "() is no longer allowed",
1284 UTF8fARG(is_utf8, len, name));
1287 /* Instead of forcing the XSUB do another lookup for $AUTOLOAD
1288 * and split that value on the last '::', pass along the same data
1289 * via the SvPVX field in the CV, and the stash in CvSTASH.
1291 * Due to an unfortunate accident of history, the SvPVX field
1292 * serves two purposes. It is also used for the subroutine's pro-
1293 * type. Since SvPVX has been documented as returning the sub name
1294 * for a long time, but not as returning the prototype, we have
1295 * to preserve the SvPVX AUTOLOAD behaviour and put the prototype
1298 * We put the prototype in the same allocated buffer, but after
1299 * the sub name. The SvPOK flag indicates the presence of a proto-
1300 * type. The CvAUTOLOAD flag indicates the presence of a sub name.
1301 * If both flags are on, then SvLEN is used to indicate the end of
1302 * the prototype (artificially lower than what is actually allo-
1303 * cated), at the risk of having to reallocate a few bytes unneces-
1304 * sarily--but that should happen very rarely, if ever.
1306 * We use SvUTF8 for both prototypes and sub names, so if one is
1307 * UTF8, the other must be upgraded.
1309 CvSTASH_set(cv, stash);
1310 if (SvPOK(cv)) { /* Ouch! */
1311 SV * const tmpsv = newSVpvn_flags(name, len, is_utf8);
1313 const char *proto = CvPROTO(cv);
1316 sv_utf8_upgrade_flags_grow(tmpsv, 0, CvPROTOLEN(cv) + 2);
1317 ulen = SvCUR(tmpsv);
1318 SvCUR_set(tmpsv, SvCUR(tmpsv) + 1); /* include null in string */
1320 tmpsv, proto, CvPROTOLEN(cv), SV_CATBYTES*!SvUTF8(cv)
1322 SvTEMP_on(tmpsv); /* Allow theft */
1323 sv_setsv_nomg((SV *)cv, tmpsv);
1325 SvREFCNT_dec_NN(tmpsv);
1326 SvLEN_set(cv, SvCUR(cv) + 1);
1327 SvCUR_set(cv, ulen);
1330 sv_setpvn((SV *)cv, name, len);
1334 else SvUTF8_off(cv);
1340 * Given &FOO::AUTOLOAD, set $FOO::AUTOLOAD to desired function name.
1341 * The subroutine's original name may not be "AUTOLOAD", so we don't
1342 * use that, but for lack of anything better we will use the sub's
1343 * original package to look up $AUTOLOAD.
1345 varstash = CvNAMED(cv) ? CvSTASH(cv) : GvSTASH(CvGV(cv));
1346 vargv = *(GV**)hv_fetch(varstash, S_autoload, S_autolen, TRUE);
1350 gv_init_pvn(vargv, varstash, S_autoload, S_autolen, 0);
1351 #ifdef PERL_DONT_CREATE_GVSV
1352 GvSV(vargv) = newSV(0);
1356 varsv = GvSVn(vargv);
1357 SvTAINTED_off(varsv); /* previous $AUTOLOAD taint is obsolete */
1358 /* XXX: this process is not careful to avoid extra magic gets and sets; tied $AUTOLOAD will get noise */
1359 sv_setsv(varsv, packname);
1360 sv_catpvs(varsv, "::");
1361 /* Ensure SvSETMAGIC() is called if necessary. In particular, to clear
1362 tainting if $FOO::AUTOLOAD was previously tainted, but is not now. */
1365 SV_SMAGIC|(is_utf8 ? SV_CATUTF8 : SV_CATBYTES)
1373 /* require_tie_mod() internal routine for requiring a module
1374 * that implements the logic of automatic ties like %! and %-
1375 * It loads the module and then calls the _tie_it subroutine
1376 * with the passed gv as an argument.
1378 * The "gv" parameter should be the glob.
1379 * "varname" holds the 1-char name of the var, used for error messages.
1380 * "namesv" holds the module name. Its refcount will be decremented.
1381 * "flags": if flag & 1 then save the scalar before loading.
1382 * For the protection of $! to work (it is set by this routine)
1383 * the sv slot must already be magicalized.
1386 S_require_tie_mod(pTHX_ GV *gv, const char varname, const char * name,
1387 STRLEN len, const U32 flags)
1389 const SV * const target = varname == '[' ? GvSV(gv) : (SV *)GvHV(gv);
1391 PERL_ARGS_ASSERT_REQUIRE_TIE_MOD;
1393 /* If it is not tied */
1394 if (!target || !SvRMAGICAL(target)
1396 varname == '[' ? PERL_MAGIC_tiedscalar : PERL_MAGIC_tied))
1402 PUSHSTACKi(PERLSI_MAGIC);
1405 #define GET_HV_FETCH_TIE_FUNC \
1406 ( (gvp = (GV **)hv_fetchs(stash, "_tie_it", 0)) \
1408 && ( (isGV(*gvp) && GvCV(*gvp)) \
1409 || (SvROK(*gvp) && SvTYPE(SvRV(*gvp)) == SVt_PVCV) ) \
1412 /* Load the module if it is not loaded. */
1413 if (!(stash = gv_stashpvn(name, len, 0))
1414 || ! GET_HV_FETCH_TIE_FUNC)
1416 SV * const module = newSVpvn(name, len);
1417 const char type = varname == '[' ? '$' : '%';
1420 Perl_load_module(aTHX_ PERL_LOADMOD_NOIMPORT, module, NULL);
1421 assert(sp == PL_stack_sp);
1422 stash = gv_stashpvn(name, len, 0);
1424 Perl_croak(aTHX_ "panic: Can't use %c%c because %s is not available",
1425 type, varname, name);
1426 else if (! GET_HV_FETCH_TIE_FUNC)
1427 Perl_croak(aTHX_ "panic: Can't use %c%c because %s does not define _tie_it",
1428 type, varname, name);
1430 /* Now call the tie function. It should be in *gvp. */
1431 assert(gvp); assert(*gvp);
1435 call_sv((SV *)*gvp, G_VOID|G_DISCARD);
1441 /* add a require_tie_mod_s - the _s suffix is similar to pvs type suffixes,
1442 * IOW it means we do STR_WITH_LEN() ourselves and the user should pass in
1443 * a true string WITHOUT a len.
1445 #define require_tie_mod_s(gv, varname, name, flags) \
1446 S_require_tie_mod(aTHX_ gv, varname, STR_WITH_LEN(name), flags)
1449 =for apidoc gv_stashpv
1451 Returns a pointer to the stash for a specified package. Uses C<strlen> to
1452 determine the length of C<name>, then calls C<gv_stashpvn()>.
1458 Perl_gv_stashpv(pTHX_ const char *name, I32 create)
1460 PERL_ARGS_ASSERT_GV_STASHPV;
1461 return gv_stashpvn(name, strlen(name), create);
1465 =for apidoc gv_stashpvn
1467 Returns a pointer to the stash for a specified package. The C<namelen>
1468 parameter indicates the length of the C<name>, in bytes. C<flags> is passed
1469 to C<gv_fetchpvn_flags()>, so if set to C<GV_ADD> then the package will be
1470 created if it does not already exist. If the package does not exist and
1471 C<flags> is 0 (or any other setting that does not create packages) then C<NULL>
1474 Flags may be one of:
1476 GV_ADD Create and initialize the package if doesn't
1478 GV_NOADD_NOINIT Don't create the package,
1479 GV_ADDMG GV_ADD iff the GV is magical
1480 GV_NOINIT GV_ADD, but don't initialize
1481 GV_NOEXPAND Don't expand SvOK() entries to PVGV
1482 SVf_UTF8 The name is in UTF-8
1484 The most important of which are probably C<GV_ADD> and C<SVf_UTF8>.
1486 Note, use of C<gv_stashsv> instead of C<gv_stashpvn> where possible is strongly
1487 recommended for performance reasons.
1489 =for apidoc Amnh||GV_ADD
1490 =for apidoc Amnh||GV_NOADD_NOINIT
1491 =for apidoc Amnh||GV_NOINIT
1492 =for apidoc Amnh||GV_NOEXPAND
1493 =for apidoc Amnh||GV_ADDMG
1494 =for apidoc Amnh||SVf_UTF8
1500 gv_stashpvn_internal
1502 Perform the internal bits of gv_stashsvpvn_cached. You could think of this
1503 as being one half of the logic. Not to be called except from gv_stashsvpvn_cached().
1507 PERL_STATIC_INLINE HV*
1508 S_gv_stashpvn_internal(pTHX_ const char *name, U32 namelen, I32 flags)
1514 U32 tmplen = namelen + 2;
1516 PERL_ARGS_ASSERT_GV_STASHPVN_INTERNAL;
1518 if (tmplen <= sizeof smallbuf)
1521 Newx(tmpbuf, tmplen, char);
1522 Copy(name, tmpbuf, namelen, char);
1523 tmpbuf[namelen] = ':';
1524 tmpbuf[namelen+1] = ':';
1525 tmpgv = gv_fetchpvn_flags(tmpbuf, tmplen, flags, SVt_PVHV);
1526 if (tmpbuf != smallbuf)
1528 if (!tmpgv || !isGV_with_GP(tmpgv))
1530 stash = GvHV(tmpgv);
1531 if (!(flags & ~GV_NOADD_MASK) && !stash) return NULL;
1533 if (!HvNAME_get(stash)) {
1534 hv_name_set(stash, name, namelen, flags & SVf_UTF8 ? SVf_UTF8 : 0 );
1536 /* FIXME: This is a repeat of logic in gv_fetchpvn_flags */
1537 /* If the containing stash has multiple effective
1538 names, see that this one gets them, too. */
1539 if (HvAUX(GvSTASH(tmpgv))->xhv_name_count)
1540 mro_package_moved(stash, NULL, tmpgv, 1);
1546 gv_stashsvpvn_cached
1548 Returns a pointer to the stash for a specified package, possibly
1549 cached. Implements both C<L</gv_stashpvn>> and C<L</gv_stashsv>>.
1551 Requires one of either C<namesv> or C<namepv> to be non-null.
1553 See C<L</gv_stashpvn>> for details on C<flags>.
1555 Note the sv interface is strongly preferred for performance reasons.
1559 #define PERL_ARGS_ASSERT_GV_STASHSVPVN_CACHED \
1560 assert(namesv || name)
1563 Perl_gv_stashsvpvn_cached(pTHX_ SV *namesv, const char *name, U32 namelen, I32 flags)
1568 PERL_ARGS_ASSERT_GV_STASHSVPVN_CACHED;
1570 he = (HE *)hv_common(
1571 PL_stashcache, namesv, name, namelen,
1572 (flags & SVf_UTF8) ? HVhek_UTF8 : 0, 0, NULL, 0
1579 hv = INT2PTR(HV*, SvIVX(sv));
1580 assert(SvTYPE(hv) == SVt_PVHV);
1583 else if (flags & GV_CACHE_ONLY) return NULL;
1586 if (SvOK(namesv)) { /* prevent double uninit warning */
1588 name = SvPV_const(namesv, len);
1590 flags |= SvUTF8(namesv);
1592 name = ""; namelen = 0;
1595 stash = gv_stashpvn_internal(name, namelen, flags);
1597 if (stash && namelen) {
1598 SV* const ref = newSViv(PTR2IV(stash));
1599 (void)hv_store(PL_stashcache, name,
1600 (flags & SVf_UTF8) ? -(I32)namelen : (I32)namelen, ref, 0);
1607 Perl_gv_stashpvn(pTHX_ const char *name, U32 namelen, I32 flags)
1609 PERL_ARGS_ASSERT_GV_STASHPVN;
1610 return gv_stashsvpvn_cached(NULL, name, namelen, flags);
1614 =for apidoc gv_stashsv
1616 Returns a pointer to the stash for a specified package. See
1619 Note this interface is strongly preferred over C<gv_stashpvn> for performance
1626 Perl_gv_stashsv(pTHX_ SV *sv, I32 flags)
1628 PERL_ARGS_ASSERT_GV_STASHSV;
1629 return gv_stashsvpvn_cached(sv, NULL, 0, flags);
1632 Perl_gv_fetchpv(pTHX_ const char *nambeg, I32 flags, const svtype sv_type) {
1633 PERL_ARGS_ASSERT_GV_FETCHPV;
1634 return gv_fetchpvn_flags(nambeg, strlen(nambeg), flags, sv_type);
1638 Perl_gv_fetchsv(pTHX_ SV *name, I32 flags, const svtype sv_type) {
1640 const char * const nambeg =
1641 SvPV_flags_const(name, len, flags & GV_NO_SVGMAGIC ? 0 : SV_GMAGIC);
1642 PERL_ARGS_ASSERT_GV_FETCHSV;
1643 return gv_fetchpvn_flags(nambeg, len, flags | SvUTF8(name), sv_type);
1646 PERL_STATIC_INLINE void
1647 S_gv_magicalize_isa(pTHX_ GV *gv)
1651 PERL_ARGS_ASSERT_GV_MAGICALIZE_ISA;
1655 sv_magic(MUTABLE_SV(av), MUTABLE_SV(gv), PERL_MAGIC_isa,
1659 /* This function grabs name and tries to split a stash and glob
1660 * from its contents. TODO better description, comments
1662 * If the function returns TRUE and 'name == name_end', then
1663 * 'gv' can be directly returned to the caller of gv_fetchpvn_flags
1665 PERL_STATIC_INLINE bool
1666 S_parse_gv_stash_name(pTHX_ HV **stash, GV **gv, const char **name,
1667 STRLEN *len, const char *nambeg, STRLEN full_len,
1668 const U32 is_utf8, const I32 add)
1670 char *tmpfullbuf = NULL; /* only malloc one big chunk of memory when the smallbuff is not large enough */
1671 const char *name_cursor;
1672 const char *const name_end = nambeg + full_len;
1673 const char *const name_em1 = name_end - 1;
1674 char smallbuf[64]; /* small buffer to avoid a malloc when possible */
1676 PERL_ARGS_ASSERT_PARSE_GV_STASH_NAME;
1680 && isIDFIRST_lazy_if_safe(*name + 1, name_end, is_utf8))
1682 /* accidental stringify on a GV? */
1686 for (name_cursor = *name; name_cursor < name_end; name_cursor++) {
1687 if (name_cursor < name_em1 &&
1688 ((*name_cursor == ':' && name_cursor[1] == ':')
1689 || *name_cursor == '\''))
1692 *stash = PL_defstash;
1693 if (!*stash || !SvREFCNT(*stash)) /* symbol table under destruction */
1696 *len = name_cursor - *name;
1697 if (name_cursor > nambeg) { /* Skip for initial :: or ' */
1700 if (*name_cursor == ':') {
1704 else { /* using ' for package separator */
1705 /* use our pre-allocated buffer when possible to save a malloc */
1707 if ( *len+2 <= sizeof smallbuf)
1710 /* only malloc once if needed */
1711 if (tmpfullbuf == NULL) /* only malloc&free once, a little more than needed */
1712 Newx(tmpfullbuf, full_len+2, char);
1713 tmpbuf = tmpfullbuf;
1715 Copy(*name, tmpbuf, *len, char);
1716 tmpbuf[(*len)++] = ':';
1717 tmpbuf[(*len)++] = ':';
1720 gvp = (GV**)hv_fetch(*stash, key, is_utf8 ? -((I32)*len) : (I32)*len, add);
1721 *gv = gvp ? *gvp : NULL;
1722 if (!*gv || *gv == (const GV *)&PL_sv_undef) {
1725 /* here we know that *gv && *gv != &PL_sv_undef */
1726 if (SvTYPE(*gv) != SVt_PVGV)
1727 gv_init_pvn(*gv, *stash, key, *len, (add & GV_ADDMULTI)|is_utf8);
1731 if (!(*stash = GvHV(*gv))) {
1732 *stash = GvHV(*gv) = newHV();
1733 if (!HvNAME_get(*stash)) {
1734 if (GvSTASH(*gv) == PL_defstash && *len == 6
1735 && strBEGINs(*name, "CORE"))
1736 hv_name_sets(*stash, "CORE", 0);
1739 *stash, nambeg, name_cursor-nambeg, is_utf8
1741 /* If the containing stash has multiple effective
1742 names, see that this one gets them, too. */
1743 if (HvAUX(GvSTASH(*gv))->xhv_name_count)
1744 mro_package_moved(*stash, NULL, *gv, 1);
1747 else if (!HvNAME_get(*stash))
1748 hv_name_set(*stash, nambeg, name_cursor - nambeg, is_utf8);
1751 if (*name_cursor == ':')
1753 *name = name_cursor+1;
1754 if (*name == name_end) {
1756 *gv = MUTABLE_GV(*hv_fetchs(PL_defstash, "main::", TRUE));
1757 if (SvTYPE(*gv) != SVt_PVGV) {
1758 gv_init_pvn(*gv, PL_defstash, "main::", 6,
1761 MUTABLE_HV(SvREFCNT_inc_simple(PL_defstash));
1768 *len = name_cursor - *name;
1770 Safefree(tmpfullbuf); /* free our tmpfullbuf if it was used */
1773 Safefree(tmpfullbuf); /* free our tmpfullbuf if it was used */
1778 /* Checks if an unqualified name is in the main stash */
1779 PERL_STATIC_INLINE bool
1780 S_gv_is_in_main(pTHX_ const char *name, STRLEN len, const U32 is_utf8)
1782 PERL_ARGS_ASSERT_GV_IS_IN_MAIN;
1784 /* If it's an alphanumeric variable */
1785 if ( len && isIDFIRST_lazy_if_safe(name, name + len, is_utf8) ) {
1786 /* Some "normal" variables are always in main::,
1787 * like INC or STDOUT.
1795 if ((name[0] == 'I' && name[1] == 'N' && name[2] == 'C')
1796 || (name[0] == 'E' && name[1] == 'N' && name[2] == 'V')
1797 || (name[0] == 'S' && name[1] == 'I' && name[2] == 'G'))
1801 if (name[0] == 'A' && name[1] == 'R' && name[2] == 'G'
1806 if (name[0] == 'S' && name[1] == 'T' && name[2] == 'D'
1807 && name[3] == 'I' && name[4] == 'N')
1811 if ((name[0] == 'S' && name[1] == 'T' && name[2] == 'D')
1812 &&((name[3] == 'O' && name[4] == 'U' && name[5] == 'T')
1813 ||(name[3] == 'E' && name[4] == 'R' && name[5] == 'R')))
1817 if (name[0] == 'A' && name[1] == 'R' && name[2] == 'G'
1818 && name[3] == 'V' && name[4] == 'O' && name[5] == 'U'
1824 /* *{""}, or a special variable like $@ */
1832 /* This function is called if parse_gv_stash_name() failed to
1833 * find a stash, or if GV_NOTQUAL or an empty name was passed
1834 * to gv_fetchpvn_flags.
1836 * It returns FALSE if the default stash can't be found nor created,
1837 * which might happen during global destruction.
1839 PERL_STATIC_INLINE bool
1840 S_find_default_stash(pTHX_ HV **stash, const char *name, STRLEN len,
1841 const U32 is_utf8, const I32 add,
1842 const svtype sv_type)
1844 PERL_ARGS_ASSERT_FIND_DEFAULT_STASH;
1846 /* No stash in name, so see how we can default */
1848 if ( gv_is_in_main(name, len, is_utf8) ) {
1849 *stash = PL_defstash;
1852 if (IN_PERL_COMPILETIME) {
1853 *stash = PL_curstash;
1854 if (add && (PL_hints & HINT_STRICT_VARS) &&
1855 sv_type != SVt_PVCV &&
1856 sv_type != SVt_PVGV &&
1857 sv_type != SVt_PVFM &&
1858 sv_type != SVt_PVIO &&
1859 !(len == 1 && sv_type == SVt_PV &&
1860 (*name == 'a' || *name == 'b')) )
1862 GV**gvp = (GV**)hv_fetch(*stash,name,is_utf8 ? -(I32)len : (I32)len,0);
1863 if (!gvp || *gvp == (const GV *)&PL_sv_undef ||
1864 SvTYPE(*gvp) != SVt_PVGV)
1868 else if ((sv_type == SVt_PV && !GvIMPORTED_SV(*gvp)) ||
1869 (sv_type == SVt_PVAV && !GvIMPORTED_AV(*gvp)) ||
1870 (sv_type == SVt_PVHV && !GvIMPORTED_HV(*gvp)) )
1872 /* diag_listed_as: Variable "%s" is not imported%s */
1874 aTHX_ packWARN(WARN_MISC),
1875 "Variable \"%c%" UTF8f "\" is not imported",
1876 sv_type == SVt_PVAV ? '@' :
1877 sv_type == SVt_PVHV ? '%' : '$',
1878 UTF8fARG(is_utf8, len, name));
1881 aTHX_ packWARN(WARN_MISC),
1882 "\t(Did you mean &%" UTF8f " instead?)\n",
1883 UTF8fARG(is_utf8, len, name)
1890 /* Use the current op's stash */
1891 *stash = CopSTASH(PL_curcop);
1896 if (add && !PL_in_clean_all) {
1898 qerror(Perl_mess(aTHX_
1899 "Global symbol \"%s%" UTF8f
1900 "\" requires explicit package name (did you forget to "
1901 "declare \"my %s%" UTF8f "\"?)",
1902 (sv_type == SVt_PV ? "$"
1903 : sv_type == SVt_PVAV ? "@"
1904 : sv_type == SVt_PVHV ? "%"
1905 : ""), UTF8fARG(is_utf8, len, name),
1906 (sv_type == SVt_PV ? "$"
1907 : sv_type == SVt_PVAV ? "@"
1908 : sv_type == SVt_PVHV ? "%"
1909 : ""), UTF8fARG(is_utf8, len, name)));
1910 /* To maintain the output of errors after the strict exception
1911 * above, and to keep compat with older releases, rather than
1912 * placing the variables in the pad, we place
1913 * them in the <none>:: stash.
1915 gv = gv_fetchpvs("<none>::", GV_ADDMULTI, SVt_PVHV);
1917 /* symbol table under destruction */
1926 if (!SvREFCNT(*stash)) /* symbol table under destruction */
1932 /* gv_magicalize only turns on the SVf_READONLY flag, not SVf_PROTECT. So
1933 redefine SvREADONLY_on for that purpose. We don’t use it later on in
1935 #undef SvREADONLY_on
1936 #define SvREADONLY_on(sv) (SvFLAGS(sv) |= SVf_READONLY)
1938 /* gv_magicalize() is called by gv_fetchpvn_flags when creating
1940 * Note that it does not insert the GV into the stash prior to
1941 * magicalization, which some variables require need in order
1942 * to work (like %+, %-, %!), so callers must take care of
1945 * It returns true if the gv did turn out to be magical one; i.e.,
1946 * if gv_magicalize actually did something.
1948 PERL_STATIC_INLINE bool
1949 S_gv_magicalize(pTHX_ GV *gv, HV *stash, const char *name, STRLEN len,
1950 const svtype sv_type)
1954 PERL_ARGS_ASSERT_GV_MAGICALIZE;
1956 if (stash != PL_defstash) { /* not the main stash */
1957 /* We only have to check for a few names here: a, b, EXPORT, ISA
1958 and VERSION. All the others apply only to the main stash or to
1959 CORE (which is checked right after this). */
1964 len >= 6 && name[1] == 'X' &&
1965 (memEQs(name, len, "EXPORT")
1966 ||memEQs(name, len, "EXPORT_OK")
1967 ||memEQs(name, len, "EXPORT_FAIL")
1968 ||memEQs(name, len, "EXPORT_TAGS"))
1973 if (memEQs(name, len, "ISA"))
1974 gv_magicalize_isa(gv);
1977 if (memEQs(name, len, "VERSION"))
1981 if (stash == PL_debstash && memEQs(name, len, "args")) {
1982 GvMULTI_on(gv_AVadd(gv));
1987 if (len == 1 && sv_type == SVt_PV)
1996 if (len > 1 /* shortest is uc */ && HvNAMELEN_get(stash) == 4) {
1997 /* Avoid null warning: */
1998 const char * const stashname = HvNAME(stash); assert(stashname);
1999 if (strBEGINs(stashname, "CORE"))
2000 S_maybe_add_coresub(aTHX_ 0, gv, name, len);
2007 /* Nothing else to do.
2008 The compiler will probably turn the switch statement into a
2009 branch table. Make sure we avoid even that small overhead for
2010 the common case of lower case variable names. (On EBCDIC
2011 platforms, we can't just do:
2012 if (NATIVE_TO_ASCII(*name) > NATIVE_TO_ASCII('V') ) {
2013 because cases like '\027' in the switch statement below are
2014 C1 (non-ASCII) controls on those platforms, so the remapping
2015 would make them larger than 'V')
2022 if (memEQs(name, len, "ARGV")) {
2023 IoFLAGS(GvIOn(gv)) |= IOf_ARGV|IOf_START;
2025 else if (memEQs(name, len, "ARGVOUT")) {
2031 len >= 6 && name[1] == 'X' &&
2032 (memEQs(name, len, "EXPORT")
2033 ||memEQs(name, len, "EXPORT_OK")
2034 ||memEQs(name, len, "EXPORT_FAIL")
2035 ||memEQs(name, len, "EXPORT_TAGS"))
2040 if (memEQs(name, len, "ISA")) {
2041 gv_magicalize_isa(gv);
2045 if (memEQs(name, len, "SIG")) {
2048 if (!PL_psig_name) {
2049 Newxz(PL_psig_name, 2 * SIG_SIZE, SV*);
2050 Newxz(PL_psig_pend, SIG_SIZE, int);
2051 PL_psig_ptr = PL_psig_name + SIG_SIZE;
2053 /* I think that the only way to get here is to re-use an
2054 embedded perl interpreter, where the previous
2055 use didn't clean up fully because
2056 PL_perl_destruct_level was 0. I'm not sure that we
2057 "support" that, in that I suspect in that scenario
2058 there are sufficient other garbage values left in the
2059 interpreter structure that something else will crash
2060 before we get here. I suspect that this is one of
2061 those "doctor, it hurts when I do this" bugs. */
2062 Zero(PL_psig_name, 2 * SIG_SIZE, SV*);
2063 Zero(PL_psig_pend, SIG_SIZE, int);
2067 hv_magic(hv, NULL, PERL_MAGIC_sig);
2068 for (i = 1; i < SIG_SIZE; i++) {
2069 SV * const * const init = hv_fetch(hv, PL_sig_name[i], strlen(PL_sig_name[i]), 1);
2071 sv_setsv(*init, &PL_sv_undef);
2076 if (memEQs(name, len, "VERSION"))
2079 case '\003': /* $^CHILD_ERROR_NATIVE */
2080 if (memEQs(name, len, "\003HILD_ERROR_NATIVE"))
2082 /* @{^CAPTURE} %{^CAPTURE} */
2083 if (memEQs(name, len, "\003APTURE")) {
2084 AV* const av = GvAVn(gv);
2085 const Size_t n = *name;
2087 sv_magic(MUTABLE_SV(av), (SV*)n, PERL_MAGIC_regdata, NULL, 0);
2090 require_tie_mod_s(gv, '+', "Tie::Hash::NamedCapture",0);
2092 } else /* %{^CAPTURE_ALL} */
2093 if (memEQs(name, len, "\003APTURE_ALL")) {
2094 require_tie_mod_s(gv, '-', "Tie::Hash::NamedCapture",0);
2097 case '\005': /* $^ENCODING */
2098 if (memEQs(name, len, "\005NCODING"))
2101 case '\007': /* $^GLOBAL_PHASE */
2102 if (memEQs(name, len, "\007LOBAL_PHASE"))
2105 case '\014': /* $^LAST_FH */
2106 if (memEQs(name, len, "\014AST_FH"))
2109 case '\015': /* $^MATCH */
2110 if (memEQs(name, len, "\015ATCH")) {
2111 paren = RX_BUFF_IDX_CARET_FULLMATCH;
2115 case '\017': /* $^OPEN */
2116 if (memEQs(name, len, "\017PEN"))
2119 case '\020': /* $^PREMATCH $^POSTMATCH */
2120 if (memEQs(name, len, "\020REMATCH")) {
2121 paren = RX_BUFF_IDX_CARET_PREMATCH;
2124 if (memEQs(name, len, "\020OSTMATCH")) {
2125 paren = RX_BUFF_IDX_CARET_POSTMATCH;
2130 if (memEQs(name, len, "\023AFE_LOCALES"))
2133 case '\024': /* ${^TAINT} */
2134 if (memEQs(name, len, "\024AINT"))
2137 case '\025': /* ${^UNICODE}, ${^UTF8LOCALE} */
2138 if (memEQs(name, len, "\025NICODE"))
2140 if (memEQs(name, len, "\025TF8LOCALE"))
2142 if (memEQs(name, len, "\025TF8CACHE"))
2145 case '\027': /* $^WARNING_BITS */
2146 if (memEQs(name, len, "\027ARNING_BITS"))
2149 else if (memEQs(name, len, "\027IN32_SLOPPY_STAT"))
2163 /* Ensures that we have an all-digit variable, ${"1foo"} fails
2166 if (!grok_atoUV(name, &uv, NULL) || uv > I32_MAX)
2168 /* XXX why are we using a SSize_t? */
2169 paren = (SSize_t)(I32)uv;
2175 /* Names of length 1. (Or 0. But name is NUL terminated, so that will
2176 be case '\0' in this switch statement (ie a default case) */
2179 paren = RX_BUFF_IDX_FULLMATCH;
2182 paren = RX_BUFF_IDX_PREMATCH;
2185 paren = RX_BUFF_IDX_POSTMATCH;
2187 #ifdef PERL_SAWAMPERSAND
2189 sv_type == SVt_PVAV ||
2190 sv_type == SVt_PVHV ||
2191 sv_type == SVt_PVCV ||
2192 sv_type == SVt_PVFM ||
2194 )) { PL_sawampersand |=
2198 ? SAWAMPERSAND_MIDDLE
2199 : SAWAMPERSAND_RIGHT;
2212 paren = *name - '0';
2215 /* Flag the capture variables with a NULL mg_ptr
2216 Use mg_len for the array index to lookup. */
2217 sv_magic(GvSVn(gv), MUTABLE_SV(gv), PERL_MAGIC_sv, NULL, paren);
2221 sv_setpv(GvSVn(gv),PL_chopset);
2225 #ifdef COMPLEX_STATUS
2226 SvUPGRADE(GvSVn(gv), SVt_PVLV);
2232 /* If %! has been used, automatically load Errno.pm. */
2234 sv_magic(GvSVn(gv), MUTABLE_SV(gv), PERL_MAGIC_sv, name, len);
2236 /* magicalization must be done before require_tie_mod_s is called */
2237 if (sv_type == SVt_PVHV || sv_type == SVt_PVGV)
2238 require_tie_mod_s(gv, '!', "Errno", 1);
2241 case '-': /* $-, %-, @- */
2242 case '+': /* $+, %+, @+ */
2243 GvMULTI_on(gv); /* no used once warnings here */
2245 sv_magic(GvSVn(gv), MUTABLE_SV(gv), PERL_MAGIC_sv, name, len);
2247 SvREADONLY_on(GvSVn(gv));
2250 if (sv_type == SVt_PVHV || sv_type == SVt_PVGV)
2251 require_tie_mod_s(gv, *name, "Tie::Hash::NamedCapture",0);
2254 AV* const av = GvAVn(gv);
2255 const Size_t n = *name;
2257 sv_magic(MUTABLE_SV(av), (SV*)n, PERL_MAGIC_regdata, NULL, 0);
2263 if (sv_type == SVt_PV)
2264 /* diag_listed_as: $* is no longer supported as of Perl 5.30 */
2265 Perl_croak(aTHX_ "$%c is no longer supported as of Perl 5.30", *name);
2267 case '\010': /* $^H */
2269 HV *const hv = GvHVn(gv);
2270 hv_magic(hv, NULL, PERL_MAGIC_hints);
2273 case '\023': /* $^S */
2275 SvREADONLY_on(GvSVn(gv));
2292 case '\001': /* $^A */
2293 case '\003': /* $^C */
2294 case '\004': /* $^D */
2295 case '\005': /* $^E */
2296 case '\006': /* $^F */
2297 case '\011': /* $^I, NOT \t in EBCDIC */
2298 case '\016': /* $^N */
2299 case '\017': /* $^O */
2300 case '\020': /* $^P */
2301 case '\024': /* $^T */
2302 case '\027': /* $^W */
2304 sv_magic(GvSVn(gv), MUTABLE_SV(gv), PERL_MAGIC_sv, name, len);
2307 case '\014': /* $^L */
2308 sv_setpvs(GvSVn(gv),"\f");
2311 sv_setpvs(GvSVn(gv),"\034");
2315 SV * const sv = GvSV(gv);
2316 if (!sv_derived_from(PL_patchlevel, "version"))
2317 upg_version(PL_patchlevel, TRUE);
2318 GvSV(gv) = vnumify(PL_patchlevel);
2319 SvREADONLY_on(GvSV(gv));
2323 case '\026': /* $^V */
2325 SV * const sv = GvSV(gv);
2326 GvSV(gv) = new_version(PL_patchlevel);
2327 SvREADONLY_on(GvSV(gv));
2333 if (sv_type == SVt_PV)
2339 /* Return true if we actually did something. */
2340 return GvAV(gv) || GvHV(gv) || GvIO(gv) || GvCV(gv)
2342 SvOK(GvSV(gv)) || SvMAGICAL(GvSV(gv))
2347 /* If we do ever start using this later on in the file, we need to make
2348 sure we don’t accidentally use the wrong definition. */
2349 #undef SvREADONLY_on
2351 /* This function is called when the stash already holds the GV of the magic
2352 * variable we're looking for, but we need to check that it has the correct
2353 * kind of magic. For example, if someone first uses $! and then %!, the
2354 * latter would end up here, and we add the Errno tie to the HASH slot of
2357 PERL_STATIC_INLINE void
2358 S_maybe_multimagic_gv(pTHX_ GV *gv, const char *name, const svtype sv_type)
2360 PERL_ARGS_ASSERT_MAYBE_MULTIMAGIC_GV;
2362 if (sv_type == SVt_PVHV || sv_type == SVt_PVGV) {
2364 require_tie_mod_s(gv, '!', "Errno", 1);
2365 else if (*name == '-' || *name == '+')
2366 require_tie_mod_s(gv, *name, "Tie::Hash::NamedCapture", 0);
2367 } else if (sv_type == SVt_PV) {
2368 if (*name == '*' || *name == '#') {
2369 /* diag_listed_as: $* is no longer supported as of Perl 5.30 */
2370 Perl_croak(aTHX_ "$%c is no longer supported as of Perl 5.30", *name);
2373 if (sv_type==SVt_PV || sv_type==SVt_PVGV) {
2375 #ifdef PERL_SAWAMPERSAND
2377 PL_sawampersand |= SAWAMPERSAND_LEFT;
2381 PL_sawampersand |= SAWAMPERSAND_MIDDLE;
2385 PL_sawampersand |= SAWAMPERSAND_RIGHT;
2394 =for apidoc gv_fetchpv
2395 =for apidoc_item |GV *|gv_fetchpvn|const char * nambeg|STRLEN full_len|I32 flags|const svtype sv_type
2396 =for apidoc_item ||gv_fetchpvn_flags
2397 =for apidoc_item |GV *|gv_fetchpvs|"name"|I32 flags|const svtype sv_type
2398 =for apidoc_item ||gv_fetchsv
2399 =for apidoc_item |GV *|gv_fetchsv_nomg|SV *name|I32 flags|const svtype sv_type
2401 These all return the GV of type C<sv_type> whose name is given by the inputs,
2402 or NULL if no GV of that name and type could be found. See L<perlguts/Stashes
2405 The only differences are how the input name is specified, and if 'get' magic is
2406 normally used in getting that name.
2408 Don't be fooled by the fact that only one form has C<flags> in its name. They
2409 all have a C<flags> parameter in fact, and all the flag bits have the same
2412 If any of the flags C<GV_ADD>, C<GV_ADDMG>, C<GV_ADDWARN>, C<GV_ADDMULTI>, or
2413 C<GV_NOINIT> is set, a GV is created if none already exists for the input name
2414 and type. However, C<GV_ADDMG> will only do the creation for magical GV's.
2415 For all of these flags except C<GV_NOINIT>, C<L</gv_init_pvn>> is called after
2416 the addition. C<GV_ADDWARN> is used when the caller expects that adding won't
2417 be necessary because the symbol should already exist; but if not, add it
2418 anyway, with a warning that it was unexpectedly absent. The C<GV_ADDMULTI>
2419 flag means to pretend that the GV has been seen before (I<i.e.>, suppress "Used
2422 The flag C<GV_NOADD_NOINIT> causes C<L</gv_init_pvn>> not be to called if the
2423 GV existed but isn't PVGV.
2425 If the C<SVf_UTF8> bit is set, the name is treated as being encoded in UTF-8;
2426 otherwise the name won't be considered to be UTF-8 in the C<pv>-named forms,
2427 and the UTF-8ness of the underlying SVs will be used in the C<sv> forms.
2429 If the flag C<GV_NOTQUAL> is set, the caller warrants that the input name is a
2430 plain symbol name, not qualified with a package, otherwise the name is checked
2431 for being a qualified one.
2433 In C<gv_fetchpv>, C<nambeg> is a C string, NUL-terminated with no intermediate
2436 In C<gv_fetchpvs>, C<name> is a literal C string, hence is enclosed in
2439 C<gv_fetchpvn> and C<gv_fetchpvn_flags> are identical. In these, <nambeg> is
2440 a Perl string whose byte length is given by C<full_len>, and may contain
2443 In C<gv_fetchsv> and C<gv_fetchsv_nomg>, the name is extracted from the PV of
2444 the input C<name> SV. The only difference between these two forms is that
2445 'get' magic is normally done on C<name> in C<gv_fetchsv>, and always skipped
2446 with C<gv_fetchsv_nomg>. Including C<GV_NO_SVGMAGIC> in the C<flags> parameter
2447 to C<gv_fetchsv> makes it behave identically to C<gv_fetchsv_nomg>.
2449 =for apidoc Amnh||GV_ADD
2450 =for apidoc Amnh||GV_ADDMG
2451 =for apidoc Amnh||GV_ADDMULTI
2452 =for apidoc Amnh||GV_ADDWARN
2453 =for apidoc Amnh||GV_NOADD_NOINIT
2454 =for apidoc Amnh||GV_NOINIT
2455 =for apidoc Amnh||GV_NOTQUAL
2456 =for apidoc Amnh||GV_NO_SVGMAGIC
2457 =for apidoc Amnh||SVf_UTF8
2463 Perl_gv_fetchpvn_flags(pTHX_ const char *nambeg, STRLEN full_len, I32 flags,
2464 const svtype sv_type)
2466 const char *name = nambeg;
2471 const I32 no_init = flags & (GV_NOADD_NOINIT | GV_NOINIT);
2472 const I32 no_expand = flags & GV_NOEXPAND;
2473 const I32 add = flags & ~GV_NOADD_MASK;
2474 const U32 is_utf8 = flags & SVf_UTF8;
2475 bool addmg = cBOOL(flags & GV_ADDMG);
2476 const char *const name_end = nambeg + full_len;
2479 PERL_ARGS_ASSERT_GV_FETCHPVN_FLAGS;
2481 /* If we have GV_NOTQUAL, the caller promised that
2482 * there is no stash, so we can skip the check.
2483 * Similarly if full_len is 0, since then we're
2484 * dealing with something like *{""} or ""->foo()
2486 if ((flags & GV_NOTQUAL) || !full_len) {
2489 else if (parse_gv_stash_name(&stash, &gv, &name, &len, nambeg, full_len, is_utf8, add)) {
2490 if (name == name_end) return gv;
2496 if (!stash && !find_default_stash(&stash, name, len, is_utf8, add, sv_type)) {
2500 /* By this point we should have a stash and a name */
2501 gvp = (GV**)hv_fetch(stash,name,is_utf8 ? -(I32)len : (I32)len,add);
2502 if (!gvp || *gvp == (const GV *)&PL_sv_undef) {
2503 if (addmg) gv = (GV *)newSV(0); /* tentatively */
2506 else gv = *gvp, addmg = 0;
2507 /* From this point on, addmg means gv has not been inserted in the
2510 if (SvTYPE(gv) == SVt_PVGV) {
2511 /* The GV already exists, so return it, but check if we need to do
2512 * anything else with it before that.
2515 /* This is the heuristic that handles if a variable triggers the
2516 * 'used only once' warning. If there's already a GV in the stash
2517 * with this name, then we assume that the variable has been used
2518 * before and turn its MULTI flag on.
2519 * It's a heuristic because it can easily be "tricked", like with
2520 * BEGIN { $a = 1; $::{foo} = *a }; () = $foo
2521 * not warning about $main::foo being used just once
2524 gv_init_svtype(gv, sv_type);
2525 /* You reach this path once the typeglob has already been created,
2526 either by the same or a different sigil. If this path didn't
2527 exist, then (say) referencing $! first, and %! second would
2528 mean that %! was not handled correctly. */
2529 if (len == 1 && stash == PL_defstash) {
2530 maybe_multimagic_gv(gv, name, sv_type);
2532 else if (sv_type == SVt_PVAV
2533 && memEQs(name, len, "ISA")
2534 && (!GvAV(gv) || !SvSMAGICAL(GvAV(gv))))
2535 gv_magicalize_isa(gv);
2538 } else if (no_init) {
2542 /* If GV_NOEXPAND is true and what we got off the stash is a ref,
2543 * don't expand it to a glob. This is an optimization so that things
2544 * copying constants over, like Exporter, don't have to be rewritten
2545 * to take into account that you can store more than just globs in
2548 else if (no_expand && SvROK(gv)) {
2553 /* Adding a new symbol.
2554 Unless of course there was already something non-GV here, in which case
2555 we want to behave as if there was always a GV here, containing some sort
2557 Otherwise we run the risk of creating things like GvIO, which can cause
2558 subtle bugs. eg the one that tripped up SQL::Translator */
2560 faking_it = SvOK(gv);
2562 if (add & GV_ADDWARN)
2563 Perl_ck_warner_d(aTHX_ packWARN(WARN_INTERNAL),
2564 "Had to create %" UTF8f " unexpectedly",
2565 UTF8fARG(is_utf8, name_end-nambeg, nambeg));
2566 gv_init_pvn(gv, stash, name, len, (add & GV_ADDMULTI)|is_utf8);
2569 && isIDFIRST_lazy_if_safe(name, name + full_len, is_utf8)
2570 && !ckWARN(WARN_ONCE) )
2575 /* set up magic where warranted */
2576 if ( gv_magicalize(gv, stash, name, len, sv_type) ) {
2579 /* gv_magicalize magicalised this gv, so we want it
2580 * stored in the symtab.
2581 * Effectively the caller is asking, ‘Does this gv exist?’
2582 * And we respond, ‘Er, *now* it does!’
2584 (void)hv_store(stash,name,len,(SV *)gv,0);
2588 /* The temporary GV created above */
2589 SvREFCNT_dec_NN(gv);
2593 if (gv) gv_init_svtype(gv, faking_it ? SVt_PVCV : sv_type);
2598 Perl_gv_fullname4(pTHX_ SV *sv, const GV *gv, const char *prefix, bool keepmain)
2601 const HV * const hv = GvSTASH(gv);
2603 PERL_ARGS_ASSERT_GV_FULLNAME4;
2605 sv_setpv(sv, prefix ? prefix : "");
2607 if (hv && (name = HvNAME(hv))) {
2608 const STRLEN len = HvNAMELEN(hv);
2609 if (keepmain || ! memBEGINs(name, len, "main")) {
2610 sv_catpvn_flags(sv,name,len,HvNAMEUTF8(hv)?SV_CATUTF8:SV_CATBYTES);
2614 else sv_catpvs(sv,"__ANON__::");
2615 sv_catsv(sv,sv_2mortal(newSVhek(GvNAME_HEK(gv))));
2619 Perl_gv_efullname4(pTHX_ SV *sv, const GV *gv, const char *prefix, bool keepmain)
2621 const GV * const egv = GvEGVx(gv);
2623 PERL_ARGS_ASSERT_GV_EFULLNAME4;
2625 gv_fullname4(sv, egv ? egv : gv, prefix, keepmain);
2629 /* recursively scan a stash and any nested stashes looking for entries
2630 * that need the "only used once" warning raised
2634 Perl_gv_check(pTHX_ HV *stash)
2638 PERL_ARGS_ASSERT_GV_CHECK;
2643 assert(HvARRAY(stash));
2645 for (i = 0; i <= (I32) HvMAX(stash); i++) {
2647 /* mark stash is being scanned, to avoid recursing */
2648 HvAUX(stash)->xhv_aux_flags |= HvAUXf_SCAN_STASH;
2649 for (entry = HvARRAY(stash)[i]; entry; entry = HeNEXT(entry)) {
2652 STRLEN keylen = HeKLEN(entry);
2653 const char * const key = HeKEY(entry);
2655 if (keylen >= 2 && key[keylen-2] == ':' && key[keylen-1] == ':' &&
2656 (gv = MUTABLE_GV(HeVAL(entry))) && isGV(gv) && (hv = GvHV(gv)))
2658 if (hv != PL_defstash && hv != stash
2660 && (HvAUX(hv)->xhv_aux_flags & HvAUXf_SCAN_STASH))
2662 gv_check(hv); /* nested package */
2664 else if ( HeKLEN(entry) != 0
2665 && *HeKEY(entry) != '_'
2666 && isIDFIRST_lazy_if_safe(HeKEY(entry),
2667 HeKEY(entry) + HeKLEN(entry),
2671 gv = MUTABLE_GV(HeVAL(entry));
2672 if (SvTYPE(gv) != SVt_PVGV || GvMULTI(gv))
2675 CopLINE_set(PL_curcop, GvLINE(gv));
2677 CopFILE(PL_curcop) = (char *)file; /* set for warning */
2679 CopFILEGV(PL_curcop)
2680 = gv_fetchfile_flags(file, HEK_LEN(GvFILE_HEK(gv)), 0);
2682 Perl_warner(aTHX_ packWARN(WARN_ONCE),
2683 "Name \"%" HEKf "::%" HEKf
2684 "\" used only once: possible typo",
2685 HEKfARG(HvNAME_HEK(stash)),
2686 HEKfARG(GvNAME_HEK(gv)));
2689 HvAUX(stash)->xhv_aux_flags &= ~HvAUXf_SCAN_STASH;
2694 Perl_newGVgen_flags(pTHX_ const char *pack, U32 flags)
2696 PERL_ARGS_ASSERT_NEWGVGEN_FLAGS;
2697 assert(!(flags & ~SVf_UTF8));
2699 return gv_fetchpv(Perl_form(aTHX_ "%" UTF8f "::_GEN_%ld",
2700 UTF8fARG(flags, strlen(pack), pack),
2705 /* hopefully this is only called on local symbol table entries */
2708 Perl_gp_ref(pTHX_ GP *gp)
2715 /* If the GP they asked for a reference to contains
2716 a method cache entry, clear it first, so that we
2717 don't infect them with our cached entry */
2718 SvREFCNT_dec_NN(gp->gp_cv);
2727 Perl_gp_free(pTHX_ GV *gv)
2732 if (!gv || !isGV_with_GP(gv) || !(gp = GvGP(gv)))
2734 if (gp->gp_refcnt == 0) {
2735 Perl_ck_warner_d(aTHX_ packWARN(WARN_INTERNAL),
2736 "Attempt to free unreferenced glob pointers"
2737 pTHX__FORMAT pTHX__VALUE);
2740 if (gp->gp_refcnt > 1) {
2742 if (gp->gp_egv == gv)
2750 /* Copy and null out all the glob slots, so destructors do not see
2752 HEK * const file_hek = gp->gp_file_hek;
2753 SV * const sv = gp->gp_sv;
2754 AV * const av = gp->gp_av;
2755 HV * const hv = gp->gp_hv;
2756 IO * const io = gp->gp_io;
2757 CV * const cv = gp->gp_cv;
2758 CV * const form = gp->gp_form;
2760 gp->gp_file_hek = NULL;
2769 unshare_hek(file_hek);
2773 /* FIXME - another reference loop GV -> symtab -> GV ?
2774 Somehow gp->gp_hv can end up pointing at freed garbage. */
2775 if (hv && SvTYPE(hv) == SVt_PVHV) {
2776 const HEK *hvname_hek = HvNAME_HEK(hv);
2777 if (PL_stashcache && hvname_hek) {
2778 DEBUG_o(Perl_deb(aTHX_
2779 "gp_free clearing PL_stashcache for '%" HEKf "'\n",
2780 HEKfARG(hvname_hek)));
2781 (void)hv_deletehek(PL_stashcache, hvname_hek, G_DISCARD);
2785 if (io && SvREFCNT(io) == 1 && IoIFP(io)
2786 && (IoTYPE(io) == IoTYPE_WRONLY ||
2787 IoTYPE(io) == IoTYPE_RDWR ||
2788 IoTYPE(io) == IoTYPE_APPEND)
2789 && ckWARN_d(WARN_IO)
2790 && IoIFP(io) != PerlIO_stdin()
2791 && IoIFP(io) != PerlIO_stdout()
2792 && IoIFP(io) != PerlIO_stderr()
2793 && !(IoFLAGS(io) & IOf_FAKE_DIRP))
2794 io_close(io, gv, FALSE, TRUE);
2799 /* Possibly reallocated by a destructor */
2802 if (!gp->gp_file_hek
2808 && !gp->gp_form) break;
2810 if (--attempts == 0) {
2812 "panic: gp_free failed to free glob pointer - "
2813 "something is repeatedly re-creating entries"
2818 /* Possibly incremented by a destructor doing glob assignment */
2819 if (gp->gp_refcnt > 1) goto borrowed;
2825 Perl_magic_freeovrld(pTHX_ SV *sv, MAGIC *mg)
2827 AMT * const amtp = (AMT*)mg->mg_ptr;
2828 PERL_UNUSED_ARG(sv);
2830 PERL_ARGS_ASSERT_MAGIC_FREEOVRLD;
2832 if (amtp && AMT_AMAGIC(amtp)) {
2834 for (i = 1; i < NofAMmeth; i++) {
2835 CV * const cv = amtp->table[i];
2837 SvREFCNT_dec_NN(MUTABLE_SV(cv));
2838 amtp->table[i] = NULL;
2845 /* Updates and caches the CV's */
2847 * 1 on success and there is some overload
2848 * 0 if there is no overload
2849 * -1 if some error occurred and it couldn't croak
2853 Perl_Gv_AMupdate(pTHX_ HV *stash, bool destructing)
2855 MAGIC* const mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table);
2857 const struct mro_meta* stash_meta = HvMROMETA(stash);
2860 PERL_ARGS_ASSERT_GV_AMUPDATE;
2862 newgen = PL_sub_generation + stash_meta->pkg_gen + stash_meta->cache_gen;
2864 const AMT * const amtp = (AMT*)mg->mg_ptr;
2865 if (amtp->was_ok_sub == newgen) {
2866 return AMT_AMAGIC(amtp) ? 1 : 0;
2868 sv_unmagic(MUTABLE_SV(stash), PERL_MAGIC_overload_table);
2871 DEBUG_o( Perl_deb(aTHX_ "Recalcing overload magic in package %s\n",HvNAME_get(stash)) );
2874 amt.was_ok_sub = newgen;
2875 amt.fallback = AMGfallNO;
2881 bool deref_seen = 0;
2884 /* Work with "fallback" key, which we assume to be first in PL_AMG_names */
2886 /* Try to find via inheritance. */
2887 GV *gv = gv_fetchmeth_pvn(stash, PL_AMG_names[0], 2, -1, 0);
2888 SV * const sv = gv ? GvSV(gv) : NULL;
2893 if (!gv_fetchmeth_pvn(stash, "((", 2, -1, 0))
2896 #ifdef PERL_DONT_CREATE_GVSV
2898 NOOP; /* Equivalent to !SvTRUE and !SvOK */
2901 else if (SvTRUE(sv))
2902 /* don't need to set overloading here because fallback => 1
2903 * is the default setting for classes without overloading */
2904 amt.fallback=AMGfallYES;
2905 else if (SvOK(sv)) {
2906 amt.fallback=AMGfallNEVER;
2913 assert(SvOOK(stash));
2914 /* initially assume the worst */
2915 HvAUX(stash)->xhv_aux_flags &= ~HvAUXf_NO_DEREF;
2917 for (i = 1; i < NofAMmeth; i++) {
2918 const char * const cooky = PL_AMG_names[i];
2919 /* Human-readable form, for debugging: */
2920 const char * const cp = AMG_id2name(i);
2921 const STRLEN l = PL_AMG_namelens[i];
2923 DEBUG_o( Perl_deb(aTHX_ "Checking overloading of \"%s\" in package \"%.256s\"\n",
2924 cp, HvNAME_get(stash)) );
2925 /* don't fill the cache while looking up!
2926 Creation of inheritance stubs in intermediate packages may
2927 conflict with the logic of runtime method substitution.
2928 Indeed, for inheritance A -> B -> C, if C overloads "+0",
2929 then we could have created stubs for "(+0" in A and C too.
2930 But if B overloads "bool", we may want to use it for
2931 numifying instead of C's "+0". */
2932 gv = Perl_gv_fetchmeth_pvn(aTHX_ stash, cooky, l, -1, 0);
2934 if (gv && (cv = GvCV(gv)) && CvHASGV(cv)) {
2935 const HEK * const gvhek = CvGvNAME_HEK(cv);
2936 const HEK * const stashek =
2937 HvNAME_HEK(CvNAMED(cv) ? CvSTASH(cv) : GvSTASH(CvGV(cv)));
2938 if (memEQs(HEK_KEY(gvhek), HEK_LEN(gvhek), "nil")
2940 && memEQs(HEK_KEY(stashek), HEK_LEN(stashek), "overload")) {
2941 /* This is a hack to support autoloading..., while
2942 knowing *which* methods were declared as overloaded. */
2943 /* GvSV contains the name of the method. */
2945 SV *gvsv = GvSV(gv);
2947 DEBUG_o( Perl_deb(aTHX_ "Resolving method \"%" SVf256\
2948 "\" for overloaded \"%s\" in package \"%.256s\"\n",
2949 (void*)GvSV(gv), cp, HvNAME(stash)) );
2950 if (!gvsv || !SvPOK(gvsv)
2951 || !(ngv = gv_fetchmethod_sv_flags(stash, gvsv, 0)))
2953 /* Can be an import stub (created by "can"). */
2958 const SV * const name = (gvsv && SvPOK(gvsv))
2960 : newSVpvs_flags("???", SVs_TEMP);
2961 /* diag_listed_as: Can't resolve method "%s" overloading "%s" in package "%s" */
2962 Perl_croak(aTHX_ "%s method \"%" SVf256
2963 "\" overloading \"%s\" "\
2964 "in package \"%" HEKf256 "\"",
2965 (GvCVGEN(gv) ? "Stub found while resolving"
2973 cv = GvCV(gv = ngv);
2975 DEBUG_o( Perl_deb(aTHX_ "Overloading \"%s\" in package \"%.256s\" via \"%.256s::%.256s\"\n",
2976 cp, HvNAME_get(stash), HvNAME_get(GvSTASH(CvGV(cv))),
2977 GvNAME(CvGV(cv))) );
2979 } else if (gv) { /* Autoloaded... */
2980 cv = MUTABLE_CV(gv);
2983 amt.table[i]=MUTABLE_CV(SvREFCNT_inc_simple(cv));
2999 /* none of @{} etc overloaded; we can do $obj->[N] quicker.
3000 * NB - aux var invalid here, HvARRAY() could have been
3001 * reallocated since it was assigned to */
3002 HvAUX(stash)->xhv_aux_flags |= HvAUXf_NO_DEREF;
3005 AMT_AMAGIC_on(&amt);
3006 sv_magic(MUTABLE_SV(stash), 0, PERL_MAGIC_overload_table,
3007 (char*)&amt, sizeof(AMT));
3011 /* Here we have no table: */
3013 AMT_AMAGIC_off(&amt);
3014 sv_magic(MUTABLE_SV(stash), 0, PERL_MAGIC_overload_table,
3015 (char*)&amt, sizeof(AMTS));
3021 Perl_gv_handler(pTHX_ HV *stash, I32 id)
3026 struct mro_meta* stash_meta;
3028 if (!stash || !HvNAME_get(stash))
3031 stash_meta = HvMROMETA(stash);
3032 newgen = PL_sub_generation + stash_meta->pkg_gen + stash_meta->cache_gen;
3034 mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table);
3037 if (Gv_AMupdate(stash, 0) == -1)
3039 mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table);
3042 amtp = (AMT*)mg->mg_ptr;
3043 if ( amtp->was_ok_sub != newgen )
3045 if (AMT_AMAGIC(amtp)) {
3046 CV * const ret = amtp->table[id];
3047 if (ret && isGV(ret)) { /* Autoloading stab */
3048 /* Passing it through may have resulted in a warning
3049 "Inherited AUTOLOAD for a non-method deprecated", since
3050 our caller is going through a function call, not a method call.
3051 So return the CV for AUTOLOAD, setting $AUTOLOAD. */
3052 GV * const gv = gv_fetchmethod(stash, PL_AMG_names[id]);
3064 /* Implement tryAMAGICun_MG macro.
3065 Do get magic, then see if the stack arg is overloaded and if so call it.
3067 AMGf_numeric apply sv_2num to the stack arg.
3071 Perl_try_amagic_un(pTHX_ int method, int flags) {
3074 SV* const arg = TOPs;
3078 if (SvAMAGIC(arg) && (tmpsv = amagic_call(arg, &PL_sv_undef, method,
3079 AMGf_noright | AMGf_unary
3080 | (flags & AMGf_numarg))))
3082 /* where the op is of the form:
3083 * $lex = $x op $y (where the assign is optimised away)
3084 * then assign the returned value to targ and return that;
3085 * otherwise return the value directly
3087 if ( (PL_opargs[PL_op->op_type] & OA_TARGLEX)
3088 && (PL_op->op_private & OPpTARGET_MY))
3091 sv_setsv(TARG, tmpsv);
3101 if ((flags & AMGf_numeric) && SvROK(arg))
3107 /* Implement tryAMAGICbin_MG macro.
3108 Do get magic, then see if the two stack args are overloaded and if so
3111 AMGf_assign op may be called as mutator (eg +=)
3112 AMGf_numeric apply sv_2num to the stack arg.
3116 Perl_try_amagic_bin(pTHX_ int method, int flags) {
3118 SV* const left = TOPm1s;
3119 SV* const right = TOPs;
3125 if (SvAMAGIC(left) || SvAMAGIC(right)) {
3127 /* STACKED implies mutator variant, e.g. $x += 1 */
3128 bool mutator = (flags & AMGf_assign) && (PL_op->op_flags & OPf_STACKED);
3130 tmpsv = amagic_call(left, right, method,
3131 (mutator ? AMGf_assign: 0)
3132 | (flags & AMGf_numarg));
3135 /* where the op is one of the two forms:
3137 * $lex = $x op $y (where the assign is optimised away)
3138 * then assign the returned value to targ and return that;
3139 * otherwise return the value directly
3142 || ( (PL_opargs[PL_op->op_type] & OA_TARGLEX)
3143 && (PL_op->op_private & OPpTARGET_MY)))
3146 TARG = mutator ? *SP : PAD_SV(PL_op->op_targ);
3147 sv_setsv(TARG, tmpsv);
3158 if(left==right && SvGMAGICAL(left)) {
3159 SV * const left = sv_newmortal();
3161 /* Print the uninitialized warning now, so it includes the vari-
3164 if (ckWARN(WARN_UNINITIALIZED)) report_uninit(right);
3165 sv_setsv_flags(left, &PL_sv_no, 0);
3167 else sv_setsv_flags(left, right, 0);
3170 if (flags & AMGf_numeric) {
3172 *(sp-1) = sv_2num(TOPm1s);
3174 *sp = sv_2num(right);
3180 Perl_amagic_deref_call(pTHX_ SV *ref, int method) {
3184 PERL_ARGS_ASSERT_AMAGIC_DEREF_CALL;
3188 /* return quickly if none of the deref ops are overloaded */
3189 stash = SvSTASH(SvRV(ref));
3190 assert(SvOOK(stash));
3191 if (HvAUX(stash)->xhv_aux_flags & HvAUXf_NO_DEREF)
3194 while ((tmpsv = amagic_call(ref, &PL_sv_undef, method,
3195 AMGf_noright | AMGf_unary))) {
3197 Perl_croak(aTHX_ "Overloaded dereference did not return a reference");
3198 if (tmpsv == ref || SvRV(tmpsv) == SvRV(ref)) {
3199 /* Bail out if it returns us the same reference. */
3206 return tmpsv ? tmpsv : ref;
3210 Perl_amagic_is_enabled(pTHX_ int method)
3212 SV *lex_mask = cop_hints_fetch_pvs(PL_curcop, "overloading", 0);
3214 assert(PL_curcop->cop_hints & HINT_NO_AMAGIC);
3216 if ( !lex_mask || !SvOK(lex_mask) )
3217 /* overloading lexically disabled */
3219 else if ( lex_mask && SvPOK(lex_mask) ) {
3220 /* we have an entry in the hints hash, check if method has been
3221 * masked by overloading.pm */
3223 const int offset = method / 8;
3224 const int bit = method % 8;
3225 char *pv = SvPV(lex_mask, len);
3227 /* Bit set, so this overloading operator is disabled */
3228 if ( (STRLEN)offset < len && pv[offset] & ( 1 << bit ) )
3235 Perl_amagic_call(pTHX_ SV *left, SV *right, int method, int flags)
3239 CV **cvp=NULL, **ocvp=NULL;
3240 AMT *amtp=NULL, *oamtp=NULL;
3241 int off = 0, off1, lr = 0, notfound = 0;
3242 int postpr = 0, force_cpy = 0;
3243 int assign = AMGf_assign & flags;
3244 const int assignshift = assign ? 1 : 0;
3245 int use_default_op = 0;
3246 int force_scalar = 0;
3252 PERL_ARGS_ASSERT_AMAGIC_CALL;
3254 if ( PL_curcop->cop_hints & HINT_NO_AMAGIC ) {
3255 if (!amagic_is_enabled(method)) return NULL;
3258 if (!(AMGf_noleft & flags) && SvAMAGIC(left)
3259 && (stash = SvSTASH(SvRV(left))) && Gv_AMG(stash)
3260 && (mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table))
3261 && (ocvp = cvp = (AMT_AMAGIC((AMT*)mg->mg_ptr)
3262 ? (oamtp = amtp = (AMT*)mg->mg_ptr)->table
3264 && ((cv = cvp[off=method+assignshift])
3265 || (assign && amtp->fallback > AMGfallNEVER && /* fallback to
3271 cv = cvp[off=method])))) {
3272 lr = -1; /* Call method for left argument */
3274 if (cvp && amtp->fallback > AMGfallNEVER && flags & AMGf_unary) {
3277 /* look for substituted methods */
3278 /* In all the covered cases we should be called with assign==0. */
3282 if ((cv = cvp[off=add_ass_amg])
3283 || ((cv = cvp[off = add_amg]) && (force_cpy = 0, postpr = 1))) {
3284 right = &PL_sv_yes; lr = -1; assign = 1;
3289 if ((cv = cvp[off = subtr_ass_amg])
3290 || ((cv = cvp[off = subtr_amg]) && (force_cpy = 0, postpr=1))) {
3291 right = &PL_sv_yes; lr = -1; assign = 1;
3295 (void)((cv = cvp[off=numer_amg]) || (cv = cvp[off=string_amg]));
3298 (void)((cv = cvp[off=string_amg]) || (cv = cvp[off=bool__amg]));
3301 (void)((cv = cvp[off=numer_amg]) || (cv = cvp[off=bool__amg]));
3304 (void)((cv = cvp[off=bool__amg])
3305 || (cv = cvp[off=numer_amg])
3306 || (cv = cvp[off=string_amg]));
3313 * SV* ref causes confusion with the interpreter variable of
3316 SV* const tmpRef=SvRV(left);
3317 if (!SvROK(tmpRef) && SvTYPE(tmpRef) <= SVt_PVMG) {
3319 * Just to be extra cautious. Maybe in some
3320 * additional cases sv_setsv is safe, too.
3322 SV* const newref = newSVsv(tmpRef);
3323 SvOBJECT_on(newref);
3324 /* No need to do SvAMAGIC_on here, as SvAMAGIC macros
3325 delegate to the stash. */
3326 SvSTASH_set(newref, MUTABLE_HV(SvREFCNT_inc(SvSTASH(tmpRef))));
3332 if ((cvp[off1=lt_amg] || cvp[off1=ncmp_amg])
3333 && ((cv = cvp[off=neg_amg]) || (cv = cvp[off=subtr_amg]))) {
3334 SV* const nullsv=&PL_sv_zero;
3336 SV* const lessp = amagic_call(left,nullsv,
3337 lt_amg,AMGf_noright);
3338 logic = SvTRUE_NN(lessp);
3340 SV* const lessp = amagic_call(left,nullsv,
3341 ncmp_amg,AMGf_noright);
3342 logic = (SvNV(lessp) < 0);
3345 if (off==subtr_amg) {
3356 if ((cv = cvp[off=subtr_amg])) {
3363 case iter_amg: /* XXXX Eventually should do to_gv. */
3364 case ftest_amg: /* XXXX Eventually should do to_gv. */
3367 return NULL; /* Delegate operation to standard mechanisms. */
3375 return left; /* Delegate operation to standard mechanisms. */
3380 if (!cv) goto not_found;
3381 } else if (!(AMGf_noright & flags) && SvAMAGIC(right)
3382 && (stash = SvSTASH(SvRV(right))) && Gv_AMG(stash)
3383 && (mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table))
3384 && (cvp = (AMT_AMAGIC((AMT*)mg->mg_ptr)
3385 ? (amtp = (AMT*)mg->mg_ptr)->table
3387 && (cv = cvp[off=method])) { /* Method for right
3390 } else if (((cvp && amtp->fallback > AMGfallNEVER)
3391 || (ocvp && oamtp->fallback > AMGfallNEVER))
3392 && !(flags & AMGf_unary)) {
3393 /* We look for substitution for
3394 * comparison operations and
3396 if (method==concat_amg || method==concat_ass_amg
3397 || method==repeat_amg || method==repeat_ass_amg) {
3398 return NULL; /* Delegate operation to string conversion */
3420 if (ocvp && (oamtp->fallback > AMGfallNEVER)) {
3424 if (!cv && (cvp && amtp->fallback > AMGfallNEVER)) {
3434 not_found: /* No method found, either report or croak */
3442 return left; /* Delegate operation to standard mechanisms. */
3444 if (ocvp && (cv=ocvp[nomethod_amg])) { /* Call report method */
3445 notfound = 1; lr = -1;
3446 } else if (cvp && (cv=cvp[nomethod_amg])) {
3447 notfound = 1; lr = 1;
3448 } else if ((use_default_op =
3449 (!ocvp || oamtp->fallback >= AMGfallYES)
3450 && (!cvp || amtp->fallback >= AMGfallYES))
3452 /* Skip generating the "no method found" message. */
3456 if (off==-1) off=method;
3457 msg = sv_2mortal(Perl_newSVpvf(aTHX_
3458 "Operation \"%s\": no method found,%sargument %s%" SVf "%s%" SVf,
3459 AMG_id2name(method + assignshift),
3460 (flags & AMGf_unary ? " " : "\n\tleft "),
3462 "in overloaded package ":
3463 "has no overloaded magic",
3465 SVfARG(sv_2mortal(newSVhek(HvNAME_HEK(SvSTASH(SvRV(left)))))):
3468 ",\n\tright argument in overloaded package ":
3471 : ",\n\tright argument has no overloaded magic"),
3473 SVfARG(sv_2mortal(newSVhek(HvNAME_HEK(SvSTASH(SvRV(right)))))):
3474 SVfARG(&PL_sv_no)));
3475 if (use_default_op) {
3476 DEBUG_o( Perl_deb(aTHX_ "%" SVf, SVfARG(msg)) );
3478 Perl_croak(aTHX_ "%" SVf, SVfARG(msg));
3482 force_cpy = force_cpy || assign;
3487 /* in these cases, we're calling '+' or '-' as a fallback for a ++ or --
3488 * operation. we need this to return a value, so that it can be assigned
3489 * later on, in the postpr block (case inc_amg/dec_amg), even if the
3490 * increment or decrement was itself called in void context */
3496 if (off == subtr_amg)
3499 /* in these cases, we're calling an assignment variant of an operator
3500 * (+= rather than +, for instance). regardless of whether it's a
3501 * fallback or not, it always has to return a value, which will be
3502 * assigned to the proper variable later */
3522 /* the copy constructor always needs to return a value */
3526 /* because of the way these are implemented (they don't perform the
3527 * dereferencing themselves, they return a reference that perl then
3528 * dereferences later), they always have to be in scalar context */
3536 /* these don't have an op of their own; they're triggered by their parent
3537 * op, so the context there isn't meaningful ('$a and foo()' in void
3538 * context still needs to pass scalar context on to $a's bool overload) */
3548 DEBUG_o(Perl_deb(aTHX_
3549 "Overloaded operator \"%s\"%s%s%s:\n\tmethod%s found%s in package %" SVf "%s\n",
3551 method+assignshift==off? "" :
3553 method+assignshift==off? "" :
3554 AMG_id2name(method+assignshift),
3555 method+assignshift==off? "" : "\")",
3556 flags & AMGf_unary? "" :
3557 lr==1 ? " for right argument": " for left argument",
3558 flags & AMGf_unary? " for argument" : "",
3559 stash ? SVfARG(sv_2mortal(newSVhek(HvNAME_HEK(stash)))) : SVfARG(newSVpvs_flags("null", SVs_TEMP)),
3560 fl? ",\n\tassignment variant used": "") );
3563 /* Since we use shallow copy during assignment, we need
3564 * to dublicate the contents, probably calling user-supplied
3565 * version of copy operator
3567 /* We need to copy in following cases:
3568 * a) Assignment form was called.
3569 * assignshift==1, assign==T, method + 1 == off
3570 * b) Increment or decrement, called directly.
3571 * assignshift==0, assign==0, method + 0 == off
3572 * c) Increment or decrement, translated to assignment add/subtr.
3573 * assignshift==0, assign==T,
3575 * d) Increment or decrement, translated to nomethod.
3576 * assignshift==0, assign==0,
3578 * e) Assignment form translated to nomethod.
3579 * assignshift==1, assign==T, method + 1 != off
3582 /* off is method, method+assignshift, or a result of opcode substitution.
3583 * In the latter case assignshift==0, so only notfound case is important.
3585 if ( (lr == -1) && ( ( (method + assignshift == off)
3586 && (assign || (method == inc_amg) || (method == dec_amg)))
3589 /* newSVsv does not behave as advertised, so we copy missing
3590 * information by hand */
3591 SV *tmpRef = SvRV(left);
3593 if (SvREFCNT(tmpRef) > 1 && (rv_copy = AMG_CALLunary(left,copy_amg))) {
3594 SvRV_set(left, rv_copy);
3596 SvREFCNT_dec_NN(tmpRef);
3604 const bool oldcatch = CATCH_GET;
3606 /* for multiconcat, we may call overload several times,
3607 * with the context of individual concats being scalar,
3608 * regardless of the overall context of the multiconcat op
3610 U8 gimme = (force_scalar || PL_op->op_type == OP_MULTICONCAT)
3611 ? G_SCALAR : GIMME_V;
3614 Zero(&myop, 1, BINOP);
3615 myop.op_last = (OP *) &myop;
3616 myop.op_next = NULL;
3617 myop.op_flags = OPf_STACKED;
3621 myop.op_flags |= OPf_WANT_VOID;
3624 if (flags & AMGf_want_list) {
3625 myop.op_flags |= OPf_WANT_LIST;
3630 myop.op_flags |= OPf_WANT_SCALAR;
3634 PUSHSTACKi(PERLSI_OVERLOAD);
3637 PL_op = (OP *) &myop;
3638 if (PERLDB_SUB && PL_curstash != PL_debstash)
3639 PL_op->op_private |= OPpENTERSUB_DB;
3640 Perl_pp_pushmark(aTHX);
3642 EXTEND(SP, notfound + 5);
3643 PUSHs(lr>0? right: left);
3644 PUSHs(lr>0? left: right);
3645 PUSHs( lr > 0 ? &PL_sv_yes : ( assign ? &PL_sv_undef : &PL_sv_no ));
3647 PUSHs(newSVpvn_flags(AMG_id2name(method + assignshift),
3648 AMG_id2namelen(method + assignshift), SVs_TEMP));
3650 else if (flags & AMGf_numarg)
3651 PUSHs(&PL_sv_undef);
3652 if (flags & AMGf_numarg)
3654 PUSHs(MUTABLE_SV(cv));
3658 if ((PL_op = PL_ppaddr[OP_ENTERSUB](aTHX)))
3662 nret = SP - (PL_stack_base + oldmark);
3666 /* returning NULL has another meaning, and we check the context
3667 * at the call site too, so this can be differentiated from the
3670 SP = PL_stack_base + oldmark;
3673 if (flags & AMGf_want_list) {
3674 res = sv_2mortal((SV *)newAV());
3675 av_extend((AV *)res, nret);
3677 av_store((AV *)res, nret, POPs);
3688 CATCH_SET(oldcatch);
3695 ans=SvIV(res)<=0; break;
3698 ans=SvIV(res)<0; break;
3701 ans=SvIV(res)>=0; break;
3704 ans=SvIV(res)>0; break;
3707 ans=SvIV(res)==0; break;
3710 ans=SvIV(res)!=0; break;
3713 SvSetSV(left,res); return left;
3715 ans=!SvTRUE_NN(res); break;
3720 } else if (method==copy_amg) {
3722 Perl_croak(aTHX_ "Copy method did not return a reference");
3724 return SvREFCNT_inc(SvRV(res));
3732 Perl_gv_name_set(pTHX_ GV *gv, const char *name, U32 len, U32 flags)
3736 PERL_ARGS_ASSERT_GV_NAME_SET;
3739 Perl_croak(aTHX_ "panic: gv name too long (%" UVuf ")", (UV) len);
3741 if (!(flags & GV_ADD) && GvNAME_HEK(gv)) {
3742 unshare_hek(GvNAME_HEK(gv));
3745 PERL_HASH(hash, name, len);
3746 GvNAME_HEK(gv) = share_hek(name, (flags & SVf_UTF8 ? -(I32)len : (I32)len), hash);
3750 =for apidoc gv_try_downgrade
3752 If the typeglob C<gv> can be expressed more succinctly, by having
3753 something other than a real GV in its place in the stash, replace it
3754 with the optimised form. Basic requirements for this are that C<gv>
3755 is a real typeglob, is sufficiently ordinary, and is only referenced
3756 from its package. This function is meant to be used when a GV has been
3757 looked up in part to see what was there, causing upgrading, but based
3758 on what was found it turns out that the real GV isn't required after all.
3760 If C<gv> is a completely empty typeglob, it is deleted from the stash.
3762 If C<gv> is a typeglob containing only a sufficiently-ordinary constant
3763 sub, the typeglob is replaced with a scalar-reference placeholder that
3764 more compactly represents the same thing.
3770 Perl_gv_try_downgrade(pTHX_ GV *gv)
3776 PERL_ARGS_ASSERT_GV_TRY_DOWNGRADE;
3778 /* XXX Why and where does this leave dangling pointers during global
3780 if (PL_phase == PERL_PHASE_DESTRUCT) return;
3782 if (!(SvREFCNT(gv) == 1 && SvTYPE(gv) == SVt_PVGV && !SvFAKE(gv) &&
3783 !SvOBJECT(gv) && !SvREADONLY(gv) &&
3784 isGV_with_GP(gv) && GvGP(gv) &&
3785 !GvINTRO(gv) && GvREFCNT(gv) == 1 &&
3786 !GvSV(gv) && !GvAV(gv) && !GvHV(gv) && !GvIOp(gv) && !GvFORM(gv) &&
3787 GvEGVx(gv) == gv && (stash = GvSTASH(gv))))
3789 if (gv == PL_statgv || gv == PL_last_in_gv || gv == PL_stderrgv)
3791 if (SvMAGICAL(gv)) {
3793 /* only backref magic is allowed */
3794 if (SvGMAGICAL(gv) || SvSMAGICAL(gv))
3796 for (mg = SvMAGIC(gv); mg; mg = mg->mg_moremagic) {
3797 if (mg->mg_type != PERL_MAGIC_backref)
3803 HEK *gvnhek = GvNAME_HEK(gv);
3804 (void)hv_deletehek(stash, gvnhek, G_DISCARD);
3805 } else if (GvMULTI(gv) && cv && SvREFCNT(cv) == 1 &&
3806 !SvOBJECT(cv) && !SvMAGICAL(cv) && !SvREADONLY(cv) &&
3807 CvSTASH(cv) == stash && !CvNAMED(cv) && CvGV(cv) == gv &&
3808 CvCONST(cv) && !CvMETHOD(cv) && !CvLVALUE(cv) && !CvUNIQUE(cv) &&
3809 !CvNODEBUG(cv) && !CvCLONE(cv) && !CvCLONED(cv) && !CvANON(cv) &&
3810 (namehek = GvNAME_HEK(gv)) &&
3811 (gvp = hv_fetchhek(stash, namehek, 0)) &&
3813 SV *value = SvREFCNT_inc(CvXSUBANY(cv).any_ptr);
3814 const bool imported = !!GvIMPORTED_CV(gv);
3818 SvFLAGS(gv) = SVt_IV|SVf_ROK|SVprv_PCS_IMPORTED * imported;
3820 /* See also: 'SET_SVANY_FOR_BODYLESS_IV' in sv.c */
3821 SvANY(gv) = (XPVGV*)((char*)&(gv->sv_u.svu_iv) -
3822 STRUCT_OFFSET(XPVIV, xiv_iv));
3823 SvRV_set(gv, value);
3828 Perl_gv_override(pTHX_ const char * const name, const STRLEN len)
3830 GV *gv = gv_fetchpvn(name, len, GV_NOTQUAL, SVt_PVCV);
3832 PERL_ARGS_ASSERT_GV_OVERRIDE;
3833 if (gv && GvCVu(gv) && GvIMPORTED_CV(gv)) return gv;
3834 gvp = (GV**)hv_fetch(PL_globalstash, name, len, FALSE);
3835 gv = gvp ? *gvp : NULL;
3836 if (gv && !isGV(gv)) {
3837 if (!SvPCS_IMPORTED(gv)) return NULL;
3838 gv_init(gv, PL_globalstash, name, len, 0);
3841 return gv && GvCVu(gv) && GvIMPORTED_CV(gv) ? gv : NULL;
3847 core_xsub(pTHX_ CV* cv)
3850 "&CORE::%s cannot be called directly", GvNAME(CvGV(cv))
3855 * ex: set ts=8 sts=4 sw=4 et: