This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
dont create *{"_<$filename"} globs for perl lang debugging of XSUBs
authorDaniel Dragan <bulk88@hotmail.com>
Thu, 30 Jul 2015 06:00:07 +0000 (02:00 -0400)
committerTony Cook <tony@develop-help.com>
Wed, 12 Aug 2015 04:49:55 +0000 (14:49 +1000)
commit9b669ea1e2997fbb78558e1fc0a7ecae3aa23af0
treed48eb3f5011d45122e6976a92177c6a118651405
parent9728ed0a4dcaca9d7fddf6ce9c5736ed3aacd487
dont create *{"_<$filename"} globs for perl lang debugging of XSUBs

1st problem, *{"_<$filename"} globs aren't created for PP code unless
PERLDB_LINE || PERLDB_SAVESRC are on (see Perl_yylex ). Creating XSUBs
unconditionally created the *{"_<$filename"} globs for XSUB, even if PP
subs were not getting the debugging globs created. This is probably an
oversight, from commit b195d4879f which tried to deprecate using
the *{"_<$filename"} GVs for storing the originating filename of the CV
which was partially reverted 2 months later in commit 57843af05b with
CvFILE becoming a char * instead of GV *. To speed up XSUB registration
time, and decrease memory when not in Perl lang debugging mode dont create
the debugging globs for XSUBs unless in Perl lang debugging mode.

see also
http://www.nntp.perl.org/group/perl.perl5.porters/2000/06/msg13832.html

2nd problem, since the perl debugger can't step into C code, nor set
breakpoints in it, there is no reason to create *{"_<$filename"} globs
for .c files. Since someone maybe one day might try to implement that
feature, comment out the code instead of deleting it. This will slightly
reduce the size of perl binary, and speed up XSUB registration time, and
decrease memory usage when using the Perl debugger.

see also (no responses)
http://www.nntp.perl.org/group/perl.perl5.porters/2015/06/msg229014.html

perl has a number of core perma-XSUBs
(UNIVERSAL/PerlIO/DynaLoader/Internals/mro/misc const subs/etc). Each of
these previously got a "_<foo.c" glob. I counted 7 .c debugging globs on
my perl. This commit, before on WinXP, running threaded perl with
-e"system 'pause'" as a sample script, "Private Bytes" (all process
unique memory, IE not shared, not mmaped) was 488 KB, after this commit
it was 484 KB, which means that enough malloc memory was saved plus a
little bit of chance, to cross one 4 KB page of memory. IDK the exact
amount of saved memory is over or under 4KB.
gv.c
op.c
pod/perldelta.pod
util.c