Skip to content

Commit 5723e4e

Browse files
committed
Remove PERL_CREATE_GVSV
PERL_DONT_CREATE_GVSV has been the default for more than 20 years now (since bdf3085). There's no real reason to enable PERL_CREATE_GVSV and it's almost undocumented, perlapi mentions it once in passing. It doesn't seem that any code on CPAN checks for PERL_CREATE_GVSV or PERL_DONT_CREATE_GVSV.
1 parent 7d0d88c commit 5723e4e

File tree

10 files changed

+15
-51
lines changed

10 files changed

+15
-51
lines changed

embed.fnc

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1636,6 +1636,7 @@ Adp |HV * |gv_stashpvn |NN const char *name \
16361636
|I32 flags
16371637
Adp |HV * |gv_stashsv |NN SV *sv \
16381638
|I32 flags
1639+
Admp |GV * |gv_SVadd |NULLOK GV *gv
16391640
Xdpx |void |gv_try_downgrade \
16401641
|NN GV *gv
16411642
op |struct xpvhv_aux *|hv_auxalloc \
@@ -4417,9 +4418,6 @@ Mp |bool |do_exec |NN const char *cmd
44174418
#else
44184419
p |bool |do_exec |NN const char *cmd
44194420
#endif
4420-
#if defined(PERL_DONT_CREATE_GVSV)
4421-
Admp |GV * |gv_SVadd |NULLOK GV *gv
4422-
#endif
44234421
#if defined(PERL_IMPLICIT_SYS)
44244422
CTo |PerlInterpreter *|perl_alloc_using \
44254423
|NN const struct IPerlMem **ipM \

embed.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2321,6 +2321,7 @@
23212321
# define Perl_gv_AVadd gv_AVadd
23222322
# define Perl_gv_HVadd gv_HVadd
23232323
# define Perl_gv_IOadd gv_IOadd
2324+
# define Perl_gv_SVadd gv_SVadd
23242325
# define Perl_gv_efullname3 gv_efullname3
23252326
# define Perl_gv_fetchmeth gv_fetchmeth
23262327
# define Perl_gv_fetchmeth_autoload gv_fetchmeth_autoload
@@ -2416,9 +2417,6 @@
24162417
# define Perl_utf16_to_utf8 utf16_to_utf8
24172418
# define Perl_utf16_to_utf8_reversed utf16_to_utf8_reversed
24182419
# endif
2419-
# if defined(PERL_DONT_CREATE_GVSV)
2420-
# define Perl_gv_SVadd gv_SVadd
2421-
# endif
24222420
# if !defined(USE_ITHREADS)
24232421
# define Perl_CopFILEGV_set CopFILEGV_set
24242422
# endif

gv.c

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -160,11 +160,7 @@ Perl_gv_fetchfile_flags(pTHX_ const char *const name, const STRLEN namelen,
160160
gv = *gvp;
161161
if (!isGV(gv)) {
162162
gv_init(gv, PL_defstash, tmpbuf, tmplen, FALSE);
163-
#ifdef PERL_DONT_CREATE_GVSV
164163
GvSV(gv) = newSVpvn(name, namelen);
165-
#else
166-
sv_setpvn(GvSV(gv), name, namelen);
167-
#endif
168164
}
169165
if (PERLDB_LINE_OR_SAVESRC && !GvAV(gv))
170166
hv_magic(GvHVn(gv), GvAVn(gv), PERL_MAGIC_dbfile);
@@ -210,9 +206,6 @@ Perl_newGP(pTHX_ GV *const gv)
210206
PERL_ARGS_ASSERT_NEWGP;
211207
Newxz(gp, 1, GP);
212208
gp->gp_egv = gv; /* allow compiler to reuse gv after this */
213-
#ifndef PERL_DONT_CREATE_GVSV
214-
gp->gp_sv = newSV_type(SVt_NULL);
215-
#endif
216209

217210
/* PL_curcop may be null here. E.g.,
218211
INIT { bless {} and exit }
@@ -580,7 +573,6 @@ S_gv_init_svtype(pTHX_ GV *gv, const svtype sv_type)
580573
case SVt_PVHV:
581574
(void)GvHVn(gv);
582575
break;
583-
#ifdef PERL_DONT_CREATE_GVSV
584576
case SVt_NULL:
585577
case SVt_PVCV:
586578
case SVt_PVFM:
@@ -592,7 +584,6 @@ S_gv_init_svtype(pTHX_ GV *gv, const svtype sv_type)
592584
If we just cast GvSVn(gv) to void, it ignores evaluating it for
593585
its side effect */
594586
}
595-
#endif
596587
}
597588
}
598589

@@ -1485,9 +1476,7 @@ Perl_gv_autoload_pvn(pTHX_ HV *stash, const char *name, STRLEN len, U32 flags)
14851476

14861477
if (!isGV(vargv)) {
14871478
gv_init_pvn(vargv, varstash, S_autoload, S_autolen, 0);
1488-
#ifdef PERL_DONT_CREATE_GVSV
14891479
GvSV(vargv) = newSV_type(SVt_NULL);
1490-
#endif
14911480
}
14921481
LEAVE;
14931482
varsv = GvSVn(vargv);
@@ -3178,11 +3167,9 @@ Perl_Gv_AMupdate(pTHX_ HV *stash, bool destructing)
31783167
if (!gv_fetchmeth_pvn(stash, "((", 2, -1, 0))
31793168
goto no_table;
31803169
}
3181-
#ifdef PERL_DONT_CREATE_GVSV
31823170
else if (!sv) {
31833171
NOOP; /* Equivalent to !SvTRUE and !SvOK */
31843172
}
3185-
#endif
31863173
else if (SvTRUE(sv))
31873174
/* don't need to set overloading here because fallback => 1
31883175
* is the default setting for classes without overloading */

gv.h

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,8 @@ the need to cast the result to the appropriate type.
9494
9595
Return the SV from the GV.
9696
97-
Prior to Perl v5.9.3, this would add a scalar if none existed. Nowadays, use
98-
C<L</GvSVn>> for that, or compile perl with S<C<-DPERL_CREATE_GVSV>>. See
99-
L<perl5100delta>.
97+
Use C<L</GvSVn>> if you wish to create an empty scalar when the SV slot is
98+
empty.
10099
101100
=for apidoc Am|SV*|GvSVn|GV* gv
102101
Like C<L</GvSV>>, but creates an empty scalar if none already exists.
@@ -117,13 +116,9 @@ Return the CV from the GV.
117116
*/
118117

119118
#define GvSV(gv) (GvGP(gv)->gp_sv)
120-
#ifdef PERL_DONT_CREATE_GVSV
121119
#define GvSVn(gv) (*(GvGP(gv)->gp_sv ? \
122120
&(GvGP(gv)->gp_sv) : \
123121
&(GvGP(gv_SVadd(gv))->gp_sv)))
124-
#else
125-
#define GvSVn(gv) GvSV(gv)
126-
#endif
127122

128123
#define GvREFCNT(gv) (GvGP(gv)->gp_refcnt)
129124
#define GvIO(gv) \

long_names.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,15 +95,13 @@ Perl_gv_IOadd(pTHX_ GV *gv)
9595
return gv_IOadd(gv);
9696
}
9797

98-
#if defined(PERL_DONT_CREATE_GVSV)
9998
GV *
10099
Perl_gv_SVadd(pTHX_ GV *gv)
101100
{
102101
PERL_ARGS_ASSERT_GV_SVADD;
103102

104103
return gv_SVadd(gv);
105104
}
106-
#endif
107105

108106
void
109107
Perl_gv_efullname3(pTHX_ SV *sv, const GV *gv, const char *prefix)

perl.c

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2022,9 +2022,6 @@ S_Internals_V(pTHX_ CV *cv)
20222022
# ifdef PERL_DISABLE_PMC
20232023
" PERL_DISABLE_PMC"
20242024
# endif
2025-
# ifdef PERL_DONT_CREATE_GVSV
2026-
" PERL_DONT_CREATE_GVSV"
2027-
# endif
20282025
# ifdef PERL_EXTERNAL_GLOB
20292026
" PERL_EXTERNAL_GLOB"
20302027
# endif
@@ -4162,9 +4159,7 @@ S_init_main_stash(pTHX)
41624159
SvREFCNT_inc_simple_void(PL_replgv);
41634160
GvMULTI_on(PL_replgv);
41644161
(void)form("%240s",""); /* Preallocate temp - for immediate signals. */
4165-
#ifdef PERL_DONT_CREATE_GVSV
41664162
(void)gv_SVadd(PL_errgv);
4167-
#endif
41684163
sv_grow(ERRSV, 240); /* Preallocate - for immediate signals. */
41694164
CLEAR_ERRSV();
41704165
CopSTASH_set(&PL_compiling, PL_defstash);

perl.h

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1556,14 +1556,6 @@ Use L</UV> to declare variables of the maximum usable size on this platform.
15561556
#define PERL_MULTICONCAT_HEADER_SIZE 8 /* The number of fields of a
15571557
multiconcat header */
15581558

1559-
/* We no longer default to creating a new SV for GvSV.
1560-
Do this before embed. */
1561-
#ifndef PERL_CREATE_GVSV
1562-
# ifndef PERL_DONT_CREATE_GVSV
1563-
# define PERL_DONT_CREATE_GVSV
1564-
# endif
1565-
#endif
1566-
15671559
#if !defined(HAS_WAITPID) && !defined(HAS_WAIT4) || defined(HAS_WAITPID_RUNTIME)
15681560
#define PERL_USES_PL_PIDSTATUS
15691561
#endif

pod/perldelta.pod

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,12 @@ then run it on the target machine, and then pass the values it outputs
355355
to F<Configure> on the other machine. F<Porting/Glossary> has examples.
356356
[GH #22992]
357357

358+
=item *
359+
360+
The C<PERL_CREATE_GVSV> configuration macro has been removed. It was almost
361+
undocumented and it has been disabled by default since Perl 5.10.0. Its purpose
362+
was to force all GVs to initialize their SV slot on creation. [GH #24177]
363+
358364
=back
359365

360366
=head1 Testing

pp.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1009,9 +1009,6 @@ PP(pp_undef)
10091009
gp_free(MUTABLE_GV(sv));
10101010
Newxz(gp, 1, GP);
10111011
GvGP_set(sv, gp_ref(gp));
1012-
#ifndef PERL_DONT_CREATE_GVSV
1013-
GvSV(sv) = newSV_type(SVt_NULL);
1014-
#endif
10151012
GvLINE(sv) = CopLINE(PL_curcop);
10161013
GvEGV(sv) = MUTABLE_GV(sv);
10171014
GvMULTI_on(sv);

proto.h

Lines changed: 5 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)