In perl.git, the branch sprout/cvgv has been created
<http://perl5.git.perl.org/perl.git/commitdiff/dad05ea801dfb471d309f61340520c2a10bb904f?hp=0000000000000000000000000000000000000000>
at dad05ea801dfb471d309f61340520c2a10bb904f (commit)
- Log -----------------------------------------------------------------
commit dad05ea801dfb471d309f61340520c2a10bb904f
Author: Father Chrysostomos <[email protected]>
Date: Fri Sep 5 22:01:44 2014 -0700
fix-ups
Some tests still fail.
M gv.c
M op.c
M t/uni/gv.t
M t/uni/parser.t
commit ca215a19cb243c5307004a51767dfe8fcb731ce1
Author: Father Chrysostomos <[email protected]>
Date: Sun Aug 31 18:05:49 2014 -0700
sv.h: Expand comment about potential SVf_UTF8 conflict
M sv.h
commit 2c72363c96a8b1db46f4f158dfd3cf17c390369c
Author: Father Chrysostomos <[email protected]>
Date: Sun Aug 31 20:13:21 2014 -0700
Avoid creating GVs when subs are declared
This patch changes âsub foo {...}â declarations to store subroutine
references in the stash, to save memory.
Typeglobs still notionally exist. Accessing CvGV(cv) will reify them.
Hence, currently the savings are lost when a sub call is compiled.
This optimisation is skipped if the subroutine declaration contains a
package separator.
$ ./miniperl -e 'sub foo{} BEGIN { warn $::{foo} } foo(); BEGIN { warn
$::{foo} }'
CODE(0x7f8ef082ad98) at -e line 1.
*main::foo at -e line 1.
Concerning the changes in caller.t, this code:
sub foo { print +(caller(0))[3],"\n" }
my $fooref = delete $::{foo};
$fooref -> ();
used to crash in 5.7.3 or thereabouts. It was fixed by 16658 (aka
07b8c804e8) to produce â(unknown)â instead. Then in 5.13.3 it was
changed (by 803f274) to produce âmain::__ANON__â instead. So the
tests are really checking that we donât get a crash. I think it is
acceptable that it has now changed to âmain::fooâ.
M embed.fnc
M gv.c
M op.c
M pp.c
M pp_hot.c
M proto.h
M t/op/caller.t
M t/op/gv.t
M t/uni/gv.t
M toke.c
commit 706a8a0a68168b9a716f485ef7a222784aa9f092
Author: Father Chrysostomos <[email protected]>
Date: Sat Aug 30 10:26:58 2014 -0700
op.c: Calculate hash for CvNAME_HEK
I assumed when I wrote that code that share_hek would calculate the
hash, like most hash functions; but this internal function assumes
the caller does it.
Hence, CVs were not sharing their heks with other types of thingies
that have heks. A CV named foo and a GV named foo would cause two
heks of the same name to be present in the shared string table.
M op.c
M pad.c
commit b8f28fcd66fd9adcdbf65c7566ad7d7e62d70f77
Author: Father Chrysostomos <[email protected]>
Date: Thu Aug 28 18:26:36 2014 -0700
For lexical subs, reify CvGV from CvSTASH and CvNAME_HEK
From now on, the presence of a name hek implies a GV. Any access to
CvGV will cause that implicit GV to be reified.
M cv.h
M embed.fnc
M ext/B/t/b.t
M gv.c
M inline.h
M op.c
M pp_hot.c
M proto.h
commit 89b34b210872251131c338e8c47e6ffb85e43e2a
Author: Father Chrysostomos <[email protected]>
Date: Thu Aug 28 17:40:23 2014 -0700
Increase $XS::APItest::VERSION to 0.64
M ext/XS-APItest/APItest.pm
commit 73119bd68ec0d85092c2dadc70bc324015f01da1
Author: Father Chrysostomos <[email protected]>
Date: Thu Aug 28 17:39:48 2014 -0700
Test cv_name
M MANIFEST
M ext/XS-APItest/APItest.xs
A ext/XS-APItest/t/cv_name.t
commit 5c7f103142504401fda21301c0838818018a4eb9
Author: Father Chrysostomos <[email protected]>
Date: Thu Aug 28 16:03:22 2014 -0700
pad.c: Document cv_name
M pad.c
commit 7360e32be65974421ebe5e55160074fc2453fbb9
Author: Father Chrysostomos <[email protected]>
Date: Thu Aug 28 15:59:05 2014 -0700
sv_cathek
This macro, intended for internal use, simplifies the code in
a couple of places.
M pad.c
M sv.h
M util.c
commit bf1bccf332e0b77ac214ad9d7b918c0adcd0dfc5
Author: Father Chrysostomos <[email protected]>
Date: Thu Aug 28 15:56:30 2014 -0700
cv_name
An API function for getting the name of a CV. Docs to follow.
M embed.fnc
M embed.h
M pad.c
M proto.h
commit 8805c9694f104e9c988ddc62cba0f2e7b7c18f68
Author: Father Chrysostomos <[email protected]>
Date: Thu Aug 28 17:37:55 2014 -0700
Turn on CVf_LEXICAL for lexical subs
This flag will signify that lexical subs should not have package names
associated with them in error messages, etc.
M gv.c
M op.c
M pad.c
M scope.c
commit d2315fc74da531f27cfa5735ed12f4fbc744ae28
Author: Father Chrysostomos <[email protected]>
Date: Thu Aug 28 12:55:56 2014 -0700
Add CVf_LEXICAL flag
Lexical subs will use this instead of CvNAMED to indicate that the
name should not include the package.
M cv.h
-----------------------------------------------------------------------
--
Perl5 Master Repository