In perl.git, the branch smoke-me/cvgv has been created
<http://perl5.git.perl.org/perl.git/commitdiff/9c560c988c6ee71109369e2cda8a8b10303c683d?hp=0000000000000000000000000000000000000000>
at 9c560c988c6ee71109369e2cda8a8b10303c683d (commit)
- Log -----------------------------------------------------------------
commit 9c560c988c6ee71109369e2cda8a8b10303c683d
Author: Father Chrysostomos <[email protected]>
Date: Fri Sep 12 20:19:28 2014 -0700
fixup for âAvoid creating GVsâ
M universal.c
commit 4eeb8e59dfc84b110c42e34f0d494bf4cdbc0f34
Author: Father Chrysostomos <[email protected]>
Date: Fri Sep 12 20:18:09 2014 -0700
fixup for âAvoid creating GVsâ
M universal.c
commit 9510854a2c1afe164cf7384e33d2c23e3d20db6c
Author: Father Chrysostomos <[email protected]>
Date: Fri Sep 12 20:16:08 2014 -0700
fixup for lexical CvGV
M universal.c
commit 386d11ea771590426c05969db2ffbf3e26b2c3b5
Author: Father Chrysostomos <[email protected]>
Date: Fri Sep 12 14:14:07 2014 -0700
Tweak Peek.t again
M ext/Devel-Peek/t/Peek.t
commit 2902f82638f5b75b72bc404e6d4fefc61d6d38ea
Author: Father Chrysostomos <[email protected]>
Date: Fri Sep 12 13:40:41 2014 -0700
dump.c: Missing comma from CVf_HASEVAL output
M dump.c
commit daed8c3bd63334b261083f540441eb1172f96d4e
Author: Father Chrysostomos <[email protected]>
Date: Fri Sep 12 13:38:42 2014 -0700
Increase $B::Deparse::VERSION to 1.28
M lib/B/Deparse.pm
commit fe664da3b27b4a887fab4c5a03266d34e0142389
Author: Father Chrysostomos <[email protected]>
Date: Fri Sep 12 13:38:23 2014 -0700
Teach Deparse about coderefs in stashes
M lib/B/Deparse.pm
commit eef2aefbd205ea6eeb439ba7a4c690cd9f305af0
Author: Father Chrysostomos <[email protected]>
Date: Fri Sep 12 13:33:55 2014 -0700
Increase $B::VERSION to 1.51
M ext/B/B.pm
commit 6d2390b83206c5bbfb6a9f906bb946448d252f1f
Author: Father Chrysostomos <[email protected]>
Date: Fri Sep 12 13:33:29 2014 -0700
Add safename() func to B
M ext/B/B.pm
M ext/B/t/b.t
commit 249ab7ecf2d9bf4f3fb13ab21caca229a5f25a01
Author: Father Chrysostomos <[email protected]>
Date: Thu Sep 11 23:53:36 2014 -0700
Remove no-longer-used op.c:S_gv_ename
M embed.fnc
M embed.h
M op.c
M proto.h
commit cfdffe802b958458630007d6da05bdf4b27027be
Author: Father Chrysostomos <[email protected]>
Date: Thu Sep 11 23:52:41 2014 -0700
Teach ck_entersub_args_proto about non-GV names
Now ck_subr no longer needs to vivify GVs:
$ ./miniperl -e 'sub foo{} BEGIN { warn $::{foo} } foo(); BEGIN { warn
$::{foo} }'
CODE(0x7fc98282ad98) at -e line 1.
CODE(0x7fc98282ad98) at -e line 1.
Previously it was like this:
$ ./miniperl -e 'sub foo{} BEGIN { warn $::{foo} } foo(); BEGIN { warn
$::{foo} }'
CODE(0x7f8ef082ad98) at -e line 1.
*main::foo at -e line 1.
M op.c
M t/op/symbolcache.t
commit d287b225572916fa05751c9d624e24201fcdc5f1
Author: Father Chrysostomos <[email protected]>
Date: Thu Sep 11 23:44:45 2014 -0700
Inline op.c:too_many_arguments_sv into its only caller
Iâm about to change this code anyway, and itâs easier in one spot.
M embed.fnc
M embed.h
M op.c
M proto.h
commit 498bc12b97ca086714e4761d9dc091eba97b2fb0
Author: Father Chrysostomos <[email protected]>
Date: Thu Sep 11 23:42:45 2014 -0700
Inline op.c:too_few_arguments_sv into its only caller
Iâm about to change this code anyway, and itâs easier in one spot.
M embed.fnc
M embed.h
M op.c
M proto.h
commit c9db20cb7c5d2441a26e516169b8bf8e99fd3caf
Author: Father Chrysostomos <[email protected]>
Date: Thu Sep 11 22:49:44 2014 -0700
Teach dump.c about CVf_LEXICAL
M dump.c
commit 6a54c14ad1c045c9f0f67bb876fed7703200f371
Author: Father Chrysostomos <[email protected]>
Date: Thu Sep 11 22:49:18 2014 -0700
Teach dump.c about CVf_NAMED
I should have added this in perl 5.18.
M dump.c
commit 5f9d13057dffe95ee1f782bb1983a4eb49e24f40
Author: Father Chrysostomos <[email protected]>
Date: Thu Sep 11 17:59:11 2014 -0700
op.c:ck_subr: reify GVs based on call checker
Instead of faking up a GV to pass to the call checker if we have a
lexical sub, just get the GV from CvGV (since that will reify the GV,
even for lexical subs), unless the call checker has not specifically
requested GVs.
For now, we assume the default call checker cannot handle non-GV sub
names, as indeed it cannot. An imminent commit will rectify that.
The code in scope.c was getting the name hek from the proto CV (stowed
in magic on the pad name) if the CV in the pad had lost it. Now, the
proto CV can lose it at compile time via CvGV, so that does not work
anymore. Instead, just get it from the GV.
M op.c
M op.h
M scope.c
commit 3f5a39d160a0456703192102ce8d662da6725a9d
Author: Father Chrysostomos <[email protected]>
Date: Thu Sep 11 22:53:42 2014 -0700
Use cv_name in pp_hot.c:sub_crush_depth
The next commit will allow lexical subs with GVs to reach this code
path, so use cv_name, since it knows how to handle those.
M pp_hot.c
commit 498ee0212ff48b2895570eed82f9a687c0ea15b8
Author: Father Chrysostomos <[email protected]>
Date: Thu Sep 11 13:37:15 2014 -0700
Add cv_set_call_checker_flags
This is like cv_set_call_checker, except that it allows the caller to
decide whether the call checker needs a GV.
Currently the GV flag is recorded, but ck_subr does not do anything
with it yet.
M cv.h
M embed.fnc
M embed.h
M mg.h
M op.c
M proto.h
commit 0d21f8ad703074db28f49226af12f694a71d52b7
Author: Father Chrysostomos <[email protected]>
Date: Wed Sep 10 22:06:10 2014 -0700
pad.c: Avoid struct name followed by colon
Some old clang++ versions have trouble with this. See ticket #112786.
M pad.c
commit 943d3940b190b9fb50393ea4ba9356aba4eddd22
Author: Father Chrysostomos <[email protected]>
Date: Wed Sep 10 22:01:15 2014 -0700
pad.c:cv_name: Reword docs for future extensibility
M pad.c
commit 4be2af8ed7951824c4b5152c3a71a8a6a43c5bfb
Author: Father Chrysostomos <[email protected]>
Date: Wed Sep 10 20:29:19 2014 -0700
Avoid reifying GVs in rv2cv
\&foo no longer reifies GVs in the stash:
$ ./miniperl -e 'sub foo{} warn $::{foo}; \&foo; warn $::{foo}'
CODE(0x7fab6282ad98) at -e line 1.
CODE(0x7fab6282ad98) at -e line 1.
Sub calls still reify them though, because of the way ck_subr cur-
rently works.
Constant proxies are still upgraded to full GVs for now, just to mini-
mise the churn per patch.
M op.c
commit d1b13001b7569d3a93b1857bac5ab6520be049bb
Author: Father Chrysostomos <[email protected]>
Date: Wed Sep 10 14:23:53 2014 -0700
op.c: ck_rvconst: Inline the noexpand var
It is only used once now, and its name is about to become confusing,
as GV_NOEXPAND will be used for all CVs.
M op.c
commit 8d34b0dd8657ccf0a73c97374c48fd259837423d
Author: Father Chrysostomos <[email protected]>
Date: Sat Sep 6 22:59:36 2014 -0700
Increase $Attribute::Handlers::VERSION to 0.97
M dist/Attribute-Handlers/lib/Attribute/Handlers.pm
commit 7cf4e22d88fce3643e980a7b5b3b768de22c29c1
Author: Father Chrysostomos <[email protected]>
Date: Sat Sep 6 16:22:53 2014 -0700
Tweak Peek.t
beab08741 introduced XSUB constants, but the code it added to
newATTRSUB does not set CvSTASH if there is already a CV stub. It
does set it if there is no sub there at all (because it goes through
newCONSTSUB).
Recent changes have made constant declarations like âsub foo(){}â
put just a constant reference in the stash if possible, the way con-
stant.pm does. When this gets upgraded to a typeglob, the CV is rei-
fied via newCONSTSUB, so it gets a CvSTASH pointer.
CvSTASH on a constant sub really makes no difference in practice.
Itâs mostly cosmetic.
This exercises the two code paths with the oldest perl installa-
tion I have:
$ /opt/bin/perl5.8.8 -MDevel::Peek -e 'BEGIN{\&foo} sub foo(){3} Dump \&foo'
SV = RV(0x9baa18) at 0x98d580
REFCNT = 1
FLAGS = (TEMP,ROK)
RV = 0x9b7398
SV = PVCV(0x9b4810) at 0x9b7398
REFCNT = 2
FLAGS = (POK,pPOK,CONST)
IV = 0
NV = 0
PROTOTYPE = ""
COMP_STASH = 0x98d4a8 "main" <----------
ROOT = 0x0
XSUB = 0x5bb44
XSUBANY = 10018864
GVGV::GV = 0x98df7c "main" :: "foo"
FILE = "-e"
DEPTH = 0
FLAGS = 0x200
OUTSIDE_SEQ = 96
PADLIST = 0x98e228
PADNAME = 0x98e24c(0x0) PAD = 0x98e264(0x22d560)
OUTSIDE = 0x98df34 (UNIQUE)
$ /opt/bin/perl5.8.8 -MDevel::Peek -e 'sub foo(){3} Dump \&foo'
SV = RV(0xc11018) at 0xbe3b80
REFCNT = 1
FLAGS = (TEMP,ROK)
RV = 0xbe4570
SV = PVCV(0xc0ae10) at 0xbe4570
REFCNT = 2
FLAGS = (POK,pPOK,CONST)
IV = 0
NV = 0
PROTOTYPE = ""
COMP_STASH = 0x0 <--------------------------
ROOT = 0x0
XSUB = 0x5bb44
XSUBANY = 12469628
GVGV::GV = 0xbe3c40 "main" :: "foo"
FILE = "-e"
DEPTH = 0
FLAGS = 0x200
OUTSIDE_SEQ = 0
PADLIST = 0x0
OUTSIDE = 0x0 (null)
M ext/Devel-Peek/t/Peek.t
commit daf019df309bf7d9354c520b3815956f9efa3b4b
Author: Father Chrysostomos <[email protected]>
Date: Sat Sep 6 13:09:05 2014 -0700
Fix-ups for Attribute::Handlers
It was making unreliable assumptions about the contents of stashes.
M dist/Attribute-Handlers/lib/Attribute/Handlers.pm
commit a0d7740f8dc5919dc1e8f942b5522b83e750e61b
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 88c65c28aff1543f3db3d231be9d891fabffceef
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.
$ ./miniperl -e 'sub foo{} BEGIN { warn $::{foo} } foo(); BEGIN { warn
$::{foo} }'
CODE(0x7f8ef082ad98) at -e line 1.
*main::foo at -e line 1.
This optimisation is skipped if the subroutine declaration contains a
package separator.
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 proto.h
M t/op/caller.t
M t/op/gv.t
M t/uni/gv.t
M t/uni/parser.t
M toke.c
commit 9de21152616a86edca26e20bb791310022023564
Author: Father Chrysostomos <[email protected]>
Date: Sat Sep 6 22:51:15 2014 -0700
Remove bogus gv-handling code from toke.c
This code was added by 211a4342c, which was actually restoring some
code that f74617600 removed.
Its purpose was to expand a proxy to a real GV after we found out that
we really are going to compile a sub call op.
This code is actually unreachable at present (sub call lookup via
rv2cv ops expands stub declarations, but not references to constants;
references to constants are not compiled to sub calls), which is a
good thing, because (1) it does not take UTF8 names into account and
(2) it does not work with rv2cv hooks or our subs, because it assumes
that the value of PL_tokenbuf is normative and can be used to
reify a glob.
M toke.c
commit 6b86016f41dbbe29440da654ca43ca5bfbd1a181
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 b8633295f5c4f70730a14d3936c29e690de8c071
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 6d7358bfbe05a27303ced955eccc5ab278d01afe
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 0b6e4899c2ecd69a750fbc87bfba963d8afd4a37
Author: Father Chrysostomos <[email protected]>
Date: Thu Aug 28 16:03:22 2014 -0700
pad.c: Document cv_name
M pad.c
commit 7f5df1617ce6aab78b8b57aeb082bef31457d9f8
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 48c249761715bc5fbf14e31a93626beda9bf5d21
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 8613147c36f42d99f27f9e8a37c87447c488728e
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 bc2afdc325835cee3ff98301ed9a75c24c08e3e7
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