summaryrefslogtreecommitdiff
path: root/gv.h
Commit message (Collapse)AuthorAgeFilesLines
* Merge multi and flags params to gv_init_*Father Chrysostomos2011-10-061-3/+5
| | | | | Since multi is a boolean (even though it’s typed as an int), there is no need to have a separate parameter. We can just use a flag bit.
* gv.c: newGVgen_flags and a flags parameter for gv_get_super_pkg.Brian Fraser2011-10-061-0/+1
|
* Remove method param from gv_autoload_*Father Chrysostomos2011-10-061-2/+7
| | | | | | | | method is a boolean flag (typed I32, but used as a boolean) added by commit 54310121b442. These new gv_autoload_* functions have a flags parameter, so there’s no reason for this extra effective bool. We can just use a flag bit.
* Remove 4 from new gv_autoload4_(sv|pvn?) functionsFather Chrysostomos2011-10-061-1/+1
| | | | | | | | | | | | The 4 was added in commit 54310121b442 (inseparable changes during 5.003/4 developement), presumably the ‘Don't look up &AUTOLOAD in @ISA when calling plain function’ part. Before that, gv_autoload had three arguments, so the 4 indicated the new version (with the method argument). Since these new functions don’t all have four arguments, and since they have a new naming convention, there is not reason for the 4.
* gv.c: Added gv_autoload4_(sv|pv|pvn)Brian Fraser2011-10-061-0/+1
|
* gv.c: Added gv_fetchmethod_(sv|pv|pvn)_flags.Brian Fraser2011-10-061-0/+1
| | | | | | In addition from taking a flags parameter, it also takes the length of the method; This will eventually make method lookup nul-clean.
* gv.c: Added gv_fetchmeth_(sv|pv|pvn)_autoload.Brian Fraser2011-10-061-1/+2
|
* Remove some _get variants of *NAMEUTF8 macros in [gh]v.hFather Chrysostomos2011-10-061-3/+2
| | | | | For macros that returns flags, the _get convention implies that there could be a _set variant some day. But we don’t do that for flags.
* gv.c: Added gv_fetchmeth_(sv|pv|pvn).Brian Fraser2011-10-061-0/+1
| | | | | I'm probably pushing this too early. Can't do the Perl-level tests because of that. TODO.
* gv.c: Added gv_init_(sv|pv|pvn), renamed gv_init_sv as gv_init_svtype.Brian Fraser2011-10-061-0/+1
| | | | | | | | | gv_init_pvn() is the same as the old gv_init(), but takes a flags parameter, which will be used for the UTF-8 cleanup. The old gv_init() is now implemeneted as a macro in gv.h. Also included is some minimal testing in XS::APItest.
* UTF-8 related macros in hv.h and gv.hBrian Fraser2011-10-061-0/+6
| | | | Groundwork for the following commits.
* Enter gv_fetchsv_nomgFather Chrysostomos2011-09-081-1/+4
| | | | | | | | | | | There are so many cases that use this incantation to get around gv_fetchsv’s calling of get-magic-- STRLEN len; const char *name = SvPV_nomg_const(sv,len); gv = gv_fetchpvn_flags(name, len, flags | SvUTF8(sv), type); --that it’s about time we had a shorthand.
* Eliminate is_gv_magical_svFather Chrysostomos2011-08-301-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This resolves perl bug #97978. Many built-in variables, like $], are actually created on the fly when first accessed. Perl likes to pretend that these variables have always existed, so it autovivifies the *] glob even in rvalue context (e.g., defined *{"]"}, close "]"). The list of variables that were autovivified was maintained separ- ately (in is_gv_magical_sv) from the code that actually creates them (gv_fetchpvn_flags). ‘Maintained’ is not actually precise: it *wasn’t* being maintained, and there were new variables that never got added to is_gv_magical_sv and one deleted variable that was never removed. There are only two pieces of code that call is_gv_magical_sv, both in pp.c: S_rv2gv (called by *{} and also the implicit *{} that functions like close() provide) and Perl_softrefxv (called by ${}, @{}, %{}). In both cases, the glob is immediately autovivified if is_gv_magical_sv returns true. So this commit eliminates the extra maintenance burden by extirpat- ing is_gv_magical_sv altogether, and replacing it with a new flag to gv_fetchpvn_flags, GvADDMG, which will autovivify a glob *if* it’s a magical one. It does make defined(*{"frobbly"}) slightly slower, in that it creates a temporary glob and then frees it when it sees nothing magical has been done with it. But this case is rare enough it should not matter. At least I got rid of the bugginess.
* Revert ‘Deprecate tie $handle without *’Father Chrysostomos2011-06-111-3/+0
| | | | | This reverts commit 7c7df8124bbdd7a0091f8ed82589548c8182f624, except for the perldiag entry, which we still need for splain’s sake.
* add GvCV_set() and GvGP_set() macros.David Mitchell2011-01-211-4/+11
| | | | | | | | and make GvCV() and GvGP() rvalue-only. This it to allow a future commit to eliminate some backref magic between GV and CVs, which will require complete control over assignment to the gp_cv slot.
* Deprecate tie $handle without *Father Chrysostomos2010-12-021-0/+3
|
* [perl #77362] Assigning glob to lvalue causes stringificationFather Chrysostomos2010-09-261-1/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This test from t/op/gv.t was added by change 22315/4ce457a6: { # test the assignment of a GLOB to an LVALUE my $e = ''; local $SIG{__DIE__} = sub { $e = $_[0] }; my $v; sub f { $_[0] = 0; $_[0] = "a"; $_[0] = *DATA } f($v); is ($v, '*main::DATA'); my $x = <$v>; is ($x, "perl\n"); } That change was the one that made glob-to-lvalue assignment work to begin with. But this test passes in perl version *prior* to that change. This patch fixes the test and adds tests to make sure what is assigned is actually a glob, and not just a string. It also happens to fix the stringification bug. In doing so, it essen- tially ‘enables’ globs-as-PVLVs. It turns out that many different parts of the perl source don’t fully take this into account, so this patch also fixes the following to work with them (I tried to make these into separate patches, but they are so intertwined it just got too complicated): • GvIO(gv) to make readline and other I/O ops work. • Autovivification of glob slots. • tie *$pvlv • *$pvlv = undef, *$pvlv = $number, *$pvlv = $ref • Duplicating a filehandle accessed through a PVLV glob when the stringified form of the glob cannot be used to access the file handle (!) • Using a PVLV glob as a subroutine reference • Coderef assignment when the glob is no longer in the symbol table • open with a PVLV glob for the filehandle • -t and -T • Unopened file handle warnings
* fix indendation of DM_* flag definitionsDavid Mitchell2010-06-041-5/+5
|
* express DM_[GU]ID flags in terms of componentsDavid Mitchell2010-06-041-2/+2
|
* rename DM_ARRAY flag to DM_ARRAY_ISADavid Mitchell2010-06-041-1/+1
| | | | | This better represents its current role as specifically delaying magic on @ISA as opposed to a general array magic delay mechanism.
* Fix clang "incompatible operand types" error in ternary expressions.George Greer2010-05-271-1/+1
|
* PL_defoutgv isn't always a GV.David Mitchell2010-03-301-0/+1
| | | | | | | | | | | | | | | | | | | | Nasty code like the following results in PL_defoutgv not pointing to a valid GV: my $x = *STDERR; select($x); $x = 1; This causes all sorts of SEGVs when PL_defoutgv is subsequently accessed, because most code assumes that it has a valid gv_gp pointer. It also turns out that PL_defoutgv is under-tested; for example, temporarily hacking pp_close to make an arg-less close() croak didn't cause any minitest failures. Add a new test file that does some basic testing of a bad PL_defoutgv, and fix all the obvious badness in accessing it. This also fixes #20727, which although ostensibly a tie bug, was due to PL_defoutgv pointing to a tiedelem scalar, and fun like that described above happening.
* Merge gv_IOadd() into gv_add_by_type().Nicholas Clark2009-08-081-0/+1
|
* Merge gv_AVadd(), gv_HVadd() and gv_SVadd() into gv_add_by_type().Nicholas Clark2009-08-081-0/+4
| | | | The "short" names become macro wrappers, and the Perl_* versions become mathoms.
* Remove GvREFCNT_inc(), which is deprecated and unused.Nicholas Clark2009-08-071-3/+0
|
* GvUNIQUE* have been defined as 0 since 2005/06/30 - high time to remove them.Nicholas Clark2009-04-131-10/+0
|
* Add a macro MUTABLE_PTR(p), which on (non-pedantic) gcc will not castNicholas Clark2008-10-271-1/+1
| | | | | | | | | | away const, returning a void *. Add MUTABLE_SV(sv) which uses this, and replace all (SV *) casts either with MUTABLE_SV(sv), or (const SV *). This probably still needs some work - assigning to SvPVX() and SvRV() is now likely to generate a casting error. The core doesn't do this. But as-is it's finding bugs that can be fixed. p4raw-id: //depot/perl@34605
* Update copyright years.Nicholas Clark2008-10-251-2/+2
| | | p4raw-id: //depot/perl@34585
* readable assertion namesReini Urban2008-06-081-17/+17
| | | | | | From: "Reini Urban" <rurban@x-ray.at> Message-ID: <6910a60806080541n4f7e1939q254797411545ebea@mail.gmail.com> p4raw-id: //depot/perl@34029
* /* This code tries to figure out just what went wrong withNicholas Clark2008-04-171-0/+2
| | | | | | | | | | | gv_fetchmethod. It therefore needs to duplicate a lot of the internals of that function. "Duplicate". <snigger>. You said a naughty word. Now sanitised. [All tests pass, but I'm not 100% confident that this code is equivalent in all reachable corner cases, and it may be possible to simplify the error reporting logic now in gv_fetchmethod_flags] p4raw-id: //depot/perl@33702
* Deprecate (and remove core use of ) Nullav, Nullcv, Nullgv, Nullhe,Nicholas Clark2008-01-231-1/+3
| | | | | Nullhek and Nullhv. Nullop is going to be a bit less simple. p4raw-id: //depot/perl@33051
* Fix up copyright years for files modified in 2007.Nicholas Clark2007-11-071-1/+1
| | | p4raw-id: //depot/perl@32237
* Re: optimize push @ISA, (was Re: parent.pm at http://corion.net/perl-dev)Brandon Black2007-08-311-0/+1
| | | | | | From: "Brandon Black" <blblack@gmail.com> Message-ID: <84621a60708121336m13dcf9e5uac624fb246f2a79c@mail.gmail.com> p4raw-id: //depot/perl@31770
* More portability nits by JarkkoRafael Garcia-Suarez2007-06-161-1/+1
| | | p4raw-id: //depot/perl@31396
* Rearrange members of structures to reduce memory size on someNicholas Clark2007-03-311-5/+5
| | | | | | platforms. On LP64 structs stackinfo, refcounted_he, and magic shrink by 8 bytes, struct yy_parser by 16. p4raw-id: //depot/perl@30817
* Don't SEGV when dumping an undefined typeglob. The HEK used to storeNicholas Clark2007-03-011-1/+1
| | | | | the GV's name can be NULL. p4raw-id: //depot/perl@30439
* Add get_cvn_flags(), which is like get_cv() but takes a length. ThisNicholas Clark2007-01-151-0/+4
| | | | | allows symbolic code references with embeded NULs to work. p4raw-id: //depot/perl@29830
* Assert that PVGVs are never SvVALID() in the PVBM sense.Nicholas Clark2006-12-121-0/+1
| | | p4raw-id: //depot/perl@29536
* Another place where Intel C++ pretending to be gcc is a reallySteve Peters2006-05-021-1/+1
| | | | | bad thing. p4raw-id: //depot/perl@28067
* GvFILE() cannot be a pointer to the memory owned by the COP, becauseNicholas Clark2006-05-021-2/+13
| | | | | | | COPs created by use can be freed along this memory, but the GP remains. Given that several GVs may refer to the same file, use a shared string rather than an individual allocation per GP. p4raw-id: //depot/perl@28060
* use NOOP macroAndy Lester2006-04-251-2/+2
| | | | | Message-ID: <20060424184451.GA1479@petdance.com> p4raw-id: //depot/perl@27958
* Ensure GvNAME doesn't return NULLMarcus Holland-Moritz2006-04-241-3/+4
| | | | | | | First patch from : Subject: Re: [PATCH] cleanup 212 warnings emitted by gcc-4.2 Message-ID: <20060423044704.6a383ee8@r2d2> p4raw-id: //depot/perl@27944
* Random accumulated patchesAndy Lester2006-03-311-3/+2
| | | | | Message-ID: <20060331054228.GA18940@petdance.com> p4raw-id: //depot/perl@27641
* Change 27380 (HEK into the IV union failed to convert the code in theNicholas Clark2006-03-051-1/+1
| | | | | non-gcc-debugging ifdef. Whoops. Very lax of me) p4raw-id: //depot/perl@27383
* Perl_gv_name_set should not leak the old HEK. Allow the flag GV_ADDNicholas Clark2006-03-051-1/+3
| | | | | to simplify GV initialisation. p4raw-id: //depot/perl@27382
* Move the GvNAME HEK into the IV union - every GV is now 1 pointerNicholas Clark2006-03-051-1/+1
| | | | | smaller. p4raw-id: //depot/perl@27380
* Use a HEK to store the GV's name, rather than a malloc()ed string.Nicholas Clark2006-03-051-12/+8
| | | | | | | Saves 1 word in each GV (no more strlen), and will also save the memory used by the string itself, as the HEK will exist already due to the key used by the symbol table for this GV. p4raw-id: //depot/perl@27379
* Provide Perl_gv_name_set to replace LVALUE use of GvNAME and GvNAMESET.Nicholas Clark2006-03-051-14/+17
| | | p4raw-id: //depot/perl@27377
* fix up gv.c and gv.hAndy Lester2006-02-271-3/+3
| | | | | Message-ID: <20060226025216.GA12758@petdance.com> p4raw-id: //depot/perl@27344
* Fix argument grouping for some macrosRafael Garcia-Suarez2006-02-271-5/+5
| | | p4raw-id: //depot/perl@27331