In perl.git, the branch smoke-me/cvgv has been created
<http://perl5.git.perl.org/perl.git/commitdiff/37be2378d3520036f590906b92f38f8a152bc195?hp=0000000000000000000000000000000000000000>
at 37be2378d3520036f590906b92f38f8a152bc195 (commit)
- Log -----------------------------------------------------------------
commit 37be2378d3520036f590906b92f38f8a152bc195
Author: Father Chrysostomos <[email protected]>
Date: Fri Sep 12 20:26:04 2014 -0700
concise-xs.t needs to know about B::safename
M ext/B/t/concise-xs.t
commit f3b4de7b88de33d3e581601012b1ae17d20657cd
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 ae5ea3f630da5ae36e02905b91ebf8c7c5d5d770
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 9006455a04eb3602a367c890b6227c157e46645b
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 0ce7a89c5481d83c94582cb2290a2f9448fe8517
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 156e3dcc3fd65aedc8b2c0a1e8243a4b1e574f02
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 d57a4ecf885bf1f3df37da43545231dc7e2e782c
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 6b575ffd0a4fe03d53c3fb805eb84e481bcc5d05
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 8883c745f717fe19cffa14e6adcb5d14314f171c
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 dd3d37bd7b1ff8e50ec5e05d2bff31a7093911c0
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 0b67df92ccc09c654413dab231b8e3331374f916
Author: Father Chrysostomos <[email protected]>
Date: Thu Sep 11 22:49:44 2014 -0700
Teach dump.c about CVf_LEXICAL
M dump.c
commit 2b45f8976940129aca2fadd5d6a29997e1028858
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 894f86a0963130e10b5820dd3207869419b3a681
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 2401d6ae982cff7dbfc100162b88c42c52ae38a5
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 8844d3ea161247e0b7f86dc72b4308b8cf0bddfa
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 f8ee68b9db23d0f1a79ef849867acb075a488ece
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 25a03448ef142c17e8762ad5f7e8874d702870b4
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 e58ee0ee7412e851c3867827fad8e85d1ca6172e
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.
This makes it possible for OP_GVs to point to things other than GVs,
and these things are stored in the pad under threads. Hence, pad_tidy
could turn on PADTMP, and then IS_PADGV becomes true when it is
upgraded to a glob, so refgen will fail assertions. There is actually
no need to turn on PADTMP in pad_tidy, since it will already be on for
op targets. (We need to get rid of IS_PADGV one of these days. It
doesnât actually do anything.)
M op.c
M pad.c
commit adbc5bb2c51d7885ac01f9862506e92c4ff2054f
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 d354924f01a038e3f282f99a811a91442a891987
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 3658fcd32a87719591ea068de0d1528b50b953a5
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 ed89d74663c684bb1c8580e5a20c577ffc54674a
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 5bd4f15cf1c52212e9060ce4cb0aba3e933c5dea
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 ced61d63cb7c8f04f29ceb89ca026c2fd3aea3fe
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
M universal.c
commit 1b9122f015a4b094b98cecce86868e01d6f5682a
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 e73c3566c5718eaa32dc6c055ac2a7f29a87630f
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
M universal.c
commit e53e87430b108d1dce795eaf0472c6ba7d245880
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 5e41e06f358d6040522f261bd5e7de2b9299e394
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 df7d24f818e33ee8b8aae50ddfbfd9563c2bc07d
Author: Father Chrysostomos <[email protected]>
Date: Thu Aug 28 16:03:22 2014 -0700
pad.c: Document cv_name
M pad.c
commit babb3f47b5f6b068398b47e8408ec174a9bc6741
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 bf2871ca15e26c13e77407365cdf6974d63cc945
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 41cc5befd5ac9541220d6ebc422c126f30fa48e7
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 70268c8a09d6e759564aecbc60a9ceffa5b09e1f
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