In perl.git, the branch smoke-me/cvgv has been created

<http://perl5.git.perl.org/perl.git/commitdiff/a44c1d12e78aadadfef718facb339f39b88dfe82?hp=0000000000000000000000000000000000000000>

        at  a44c1d12e78aadadfef718facb339f39b88dfe82 (commit)

- Log -----------------------------------------------------------------
commit a44c1d12e78aadadfef718facb339f39b88dfe82
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 c8458218d721952c424ad841ee407127e49903db
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 509be5bf8d4b1b8a711fad7fabbb4607d8df5d60
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 c1f206b485d4de62f7098e0fe96968831fb35f2d
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 1dc15a2906c010bcf5726406f9c97743fd1e2f26
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 9eaaa93064ca54578afcfbf11a9f57ae5cf3908c
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 9a79c192b91321e22b2a4e4df9b513826fd6505e
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 df5ed70ba308d59107f823069ac4ffbdffcaf5a2
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 66c9a265dbe80f8a7fb1c96fd75ca7240c3bc5de
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 9eeea974410e70172473ad2859b09b4f93296f74
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 969380fc2b48fd229c0da3728b408e3427bf1183
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 77b146bd00ac3421aff85058a90183ed507bb56b
Author: Father Chrysostomos <[email protected]>
Date:   Thu Sep 11 22:49:44 2014 -0700

    Teach dump.c about CVf_LEXICAL

M       dump.c

commit 48370563079c023fe9de40042d0199599823a63a
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 3666438e852bec3169c6e76d285b0e3fe7604e29
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 91790f1fccd988a355a2c1c0a93bc98b6d9d9f79
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 0b280710541b126c72ddb5b368fd0c1f0465d8ae
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 8d6cd834f220f27b3bcd9e9bf3c059121d6d9361
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 41560b5fb2164edf4ccf0b7941b7ddaa98c43c7a
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 bdd6afa42dfa2ba0e97644945431d378afec44f7
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 90b56809e257d95b1743dfc37dd92388c0692d15
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 85c6af26c2f296594679ff7334890a530b2f0138
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 4be0943bc46695183e9dc2a5501f1e440f72daed
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 06db503a5adc46285ce3ce700a0a864549b265bd
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 81e855121176411d076d4ccce9e19cff3eedb0bf
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 f3591e260d397ee9c103cfecca0657ba1dc2eec1
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 801724ecc66a1e04b770210abc09beffd2254b04
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 ab56316ab7406bb5a5010b4c2aaac97dac33287d
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
-----------------------------------------------------------------------

--
Perl5 Master Repository

Reply via email to