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

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

        at  02f64805148d57970519dffd1aabdc28c403d77c (commit)

- Log -----------------------------------------------------------------
commit 02f64805148d57970519dffd1aabdc28c403d77c
Author: Karl Williamson <[email protected]>
Date:   Fri Jul 12 15:11:26 2013 -0600

    later

M       embed.fnc
M       embed.h
M       inline_invlist.c
M       proto.h
M       regcomp.c
M       sv.h

commit 5a0f11c2726fb8d2a169c26f246d610e47510dbe
Author: Karl Williamson <[email protected]>
Date:   Fri Jul 12 14:07:49 2013 -0600

    Add parameter to internal function
    
    The function invlist_set_len() has to be called after the offset header
    field in an inversion list has been set.  To make sure that future
    maintainers don't forget to do this, add the parameter for the 'offset'
    to its call, so it can't be called without having this value.

M       embed.fnc
M       embed.h
M       proto.h
M       regcomp.c

commit db50ea0f6a170c2308e2646efe70d26c4f5508a6
Author: Karl Williamson <[email protected]>
Date:   Fri Jul 12 11:30:16 2013 -0600

    regcomp.c: Rmv now redundant setting
    
    SvCUR is now properly set in invlist_set_len().  There is no need to do
    it outside that function.

M       regcomp.c

commit c7bfb2d3b213ba2caf4d822bf3a05acbb0c9e77e
Author: Karl Williamson <[email protected]>
Date:   Thu Jul 11 21:56:46 2013 -0600

    Fix off-by-one error in inversion lists.
    
    The first commit of this topic branch added a dummy 0 element to the end
    of certain inversion lists to work around an off-by-one error.  This
    commit makes the necessary changes to stop that error, and to remove
    the dummy element.  SvCUR() and invlist_len() now are kept in sync.

M       charclass_invlists.h
M       regcomp.c
M       regen/mk_invlists.pl

commit fe7b6a8b36adf03d57273e43502e7d8c94a45383
Author: Karl Williamson <[email protected]>
Date:   Thu Jul 11 19:44:56 2013 -0600

    regcomp.c: Reorder a couple of function calls
    
    A future commit with require that the offset be known before the length
    gets set.  This prepares for that.

M       regcomp.c

commit a857082b4eb545b52e8fa508da685a58f59d844a
Author: Karl Williamson <[email protected]>
Date:   Thu Jul 11 19:38:53 2013 -0600

    regcomp.c: Remove now useless initialization
    
    This code was designed to cause a segfault by initializing an offset
    into an address to a very large value.  But now, it is stored as a bool,
    so there is not point in doing this.  We also remove an assert that it
    is a bool, because it always has to be.

M       regcomp.c

commit f378da456bb7fca50864ceb152fd28fe96fe354d
Author: Karl Williamson <[email protected]>
Date:   Thu Jul 11 19:16:55 2013 -0600

    regcomp.c:  Only White-space, comments, name of variable change

M       regcomp.c

commit 4d5bd3a3cf1228b1f01037d23dc225fac9b26adf
Author: Karl Williamson <[email protected]>
Date:   Sat Jul 6 15:33:57 2013 -0600

    Reinstate "Use new Svt_INVLIST for inversion lists."
    
    This reverts commit 2e0b8fbeab3502bee36f25825c3cdd0d075c4fd3, which
    reverted e0ce103ae532f9576f54a5938a24d1ee98dfb928, thus reinstating the
    latter commit.  It turns out that the error being chased down was not
    due to this commit.
    
    Its original message was:
    
    This converts inversion lists to use their own scalar type.

M       embed.fnc
M       inline_invlist.c
M       perl.h
M       proto.h
M       regcomp.c
M       sv.c
M       sv.h

commit 84a29185fdb5d937d8fb3167cffcac5e8c7ce64a
Author: Karl Williamson <[email protected]>
Date:   Sat Jul 6 15:29:11 2013 -0600

    Reinstate "Create SVt_INVLIST"
    
    This reverts commit 49cf1d6641a6dfd301302f616e4f25595dcc65d4, which
    reverted e045dbedc7da04e20cc8cfccec8a2e3ccc62cc8b, thus reinstating the
    latter commit.  It turns out that the error being chased down was not
    due to this commit.
    
    Its original message was:
    
    This reshuffles the svtype enum to remove the dummy slot created in a
    previous commit, and add the new SVt_INVLIST type in its proper order.
    It still is unused, but since it is an extension of SVt_PV, it must be
    greater than that type's enum value.  Since it can't be upgraded to any
    other PV type, it comes right after SVt_PV.
    
     Affected tables in the core are updated.

M       dist/Storable/Storable.xs
M       dump.c
M       ext/B/B.xs
M       perl.h
M       sv.c
M       sv.h

commit 15cf3eb653d070ab71b1c21eba705177cbc58321
Author: Karl Williamson <[email protected]>
Date:   Sat Jul 6 15:10:14 2013 -0600

    Reinstate "regcomp.c: Move some #defines to only file that uses them"
    
    This reverts commit 247f9b19318882fd9a52fe49aa31fc8d3d3db4f7, which
    reverted 05944450e0fc82eb8fc1fb5a4bf63f23785262a0, thus reinstating the
    latter commit.  It turns out that the error being chased down was not
    due to this commit.
    
    Its original message was:
    
    These were used in a header file to provide synchronization between
    files.  However, the only other file that would need them is a .pl file
    which doesn't have access to them.  So simplify things so that the
    variables are either removed entirely if only used in a single place, or
    are #defined in the area where they are used

M       inline_invlist.c
M       regcomp.c

commit 0be110050baf6b9a08b75c53b4608bab9d55b109
Author: Karl Williamson <[email protected]>
Date:   Sat Jul 6 14:56:39 2013 -0600

    Reinstate "regcomp.c: Make C-array inversion lists const"
    
    This reverts commit 18505f093a44607b687ae5fe644872f835f66313, which
    reverted 241136e0ed70738cccd6c4b20ce12b26231f30e5, thus reinstating the
    latter commit.  It turns out that the error being chased down was not
    due to this commit.
    
    Its original message was:
    
    The inversion lists that are compiled into a C header are now const.

M       charclass_invlists.h
M       embed.fnc
M       inline_invlist.c
M       proto.h
M       regcomp.c
M       regen/mk_invlists.pl

commit fc68415cb128597bbc13cc9c0caacb084bd3e2a3
Author: Karl Williamson <[email protected]>
Date:   Sat Jul 6 14:44:32 2013 -0600

    Reinstate "regcomp.c: Move inversion list hdr field to SV hdr"
    
    This reverts commit 2eb2feb9f4a226d0fe0fd3d66e2ce341296f0072, which
    reverted d913fb457b732da4c31d0d1b8c085989a7ecd12d, thus reinstating the
    latter commit.  It turns out that the error being chased down was not
    due to this commit.
    
    Its original message was:
    
    This moves the final field that can vary from the inversion list data
    structure into the header of the SV that contains it.  With this commit,
    the body of an inversion list is now const.
    
    The field is converted to a U8, to correspond with the header field in
    the SV type that we currently use to hold inversion lists.

M       embed.fnc
M       inline_invlist.c
M       proto.h
M       regcomp.c

commit a0f8cae5bad76c6fc2fcb38e5c0f1372d8b434d8
Author: Karl Williamson <[email protected]>
Date:   Sat Jul 6 14:29:35 2013 -0600

    Reinstate  "regcomp.c: Change, variable, fcn name"
    
    This reverts commit 0b58015e05b2ab93b080b7c49a70bf82435363c0, which
    reverted 875c4e2c5193b5245da578b222e9c93aad31d93b, thus reinstating the
    latter commit.  It turns out that the error being chased down was not
    due to this commit.
    
    Its original message was (slightly revised for clarity):
    
    These have always been slightly misnamed, but a recent commit made them
    more so.  The old name contained "zero", but now there is a new element
    which always has zero.  The renamed element indicates whether the
    inversion list is offset, that is if the beginning is the zero element,
    or if the beginning is the next element beyond the zero element.

M       embed.fnc
M       embed.h
M       inline_invlist.c
M       proto.h
M       regcomp.c

commit 833b48324713ff354e3870f8897cd981e7cb35df
Author: Karl Williamson <[email protected]>
Date:   Sat Jul 6 14:13:35 2013 -0600

    Reinstate "regcomp.c: Move 2 hdr inversion fields to SV hdr"
    
    This reverts commit 67434bafe4f2406e7c92e69013aecd446c896a9a, which
    reverted 4fdeca7844470c929f35857f49078db1fd124dbc, thus reinstating the
    latter commit.  It turns out that the error being chased down was not
    due to this commit.
    
    Its original message was:
    
    This commit continues the process of separating the header area of
    inversion lists from the body.  2 more fields are moved out of the
    header portion of the inversion list, and into the header portion of the
    SV that contains it.

M       charclass_invlists.h
M       embed.fnc
M       inline_invlist.c
M       proto.h
M       regcomp.c
M       regen/mk_invlists.pl

commit 9c7e1fa3d82682150a977526a828faa9e94f3792
Author: Karl Williamson <[email protected]>
Date:   Sat Jul 6 13:58:55 2013 -0600

    Reinstate "regcomp.c: Remove unused data structure field"
    
    This reverts commit c7995b20ccfbb4248b23aeae9fd1eab838852fcc, which
    reverted 4b98096221966ea01c046f4f61b2dc4f60b534b9, thus reinstating
    the latter commit.  It turns out that the error being chased down was
    not due to this commit.
    
    Its original message was:
    
    This removes a field that is set in the inversion list data structure
    and examined just once.  And that sole examiner is the function that
    calls the function that does the set.  In other words X calls Y passing
    it data D.  Y puts D into a structure.  Upon return from Y, X looks for
    D in the structure.  No one else looks at D.  X might just as well have
    looked at D directly, without involving Y, and without the structure
    needing a space for D.

M       embed.fnc
M       embed.h
M       proto.h
M       regcomp.c

commit b59909f3a23e599c2f071826187bf10a5484ab5a
Author: Karl Williamson <[email protected]>
Date:   Sat Jul 6 12:39:22 2013 -0600

    Reinstate "regcomp.c: Make inversion lists SVt_PVLV"
    
    This reverts commit ac7a6f5849b5fd57b2e837f4ddbc18c992610e9c which
    reverted 2c3365de8c1168f115576a4976d067e3b911c490, thus reinstating the
    latter commit.  It turns out that the error being chased down was not
    due to this commit.
    
    This commit additionally changes some now-obsolete wording in a pod.
    This change was not in 2c3365de8c1168f115576a4976d067e3b911c490.
    
    The original message for commit 2c3365de8c1168f115576a4976d067e3b911c490
    was:
    
    This is the 2nd step in separating the inversion list body from header.
    This commit gives inversion lists the header from a SVt_PVLV, and
    repurposes one of its fields into being the length of the inversion
    list.
    
    This is a temporary measure, in case binary compatibility is an issue.
    Future commits will create a new SV type just for inversion lists.  This
    SV type was chosen because it has a sufficient number of fields to
    accommodate all the header fields from inversion lists.

M       embed.fnc
M       inline_invlist.c
M       pod/perlguts.pod
M       proto.h
M       regcomp.c

commit c9ccdee1a146017776fb14c63c8d90cf43aed9bd
Author: Karl Williamson <[email protected]>
Date:   Sat Jul 6 12:26:43 2013 -0600

    Reinstate + fix "Revert "regcomp.c: Add a constant 0 element before 
inversion lists" "
    
    This reverts commit de353015643cf10b437d714d3483c1209e079916 which
    reverted 533c4e2f08b42d977e5004e823d4849f7473d2d0, thus reinstating it,
    plus this commit adds a fix to get it to pass under Address Sanitizer.
    
    The root cause of the problem is that there are two measures of the
    length of an inversion list.  One is SvCUR(), and the other is
    invlist_len().  The original commit caused these to get off-by-one in
    some cases.  The ultimate solution is to only store one value, and
    return the other one based off that.  Rather than redo the whole branch,
    I've taken an easier way out, which is to add a dummy element at the end
    of some inversion lists, so that they aren't off-by-one.  Then the other
    patches from the original branch will be applied.  Each will be
    tested with Address Sanitizer.  Then the work to fix the underlying
    problem will be done.
    
    The original commit's message was:
    
    This commit is the first step to separating the header from the body of
    inversion lists.  Doing so will allow the compiled-in inversion lists to
    be fully read-only.
    
    To invert an inversion list, one simply unshifts a 0 to the front of it
    if one is not there, and shifts off the 0 if it does have one.
    
    The current data structure reserves an element at the beginning of each
    inversion list that is either 0 or 1.  If 0, it means the inversion list
    begins there; if 1, it means the inversion list starts at the next
    element.  Inverting involves flipping this bit.
    
    This commit changes the structure so that there is an additional element
    just after the element that flips.  This new element is always 0, and
    the flipping element now says whether the inversion list begins at the
    constant 0 element, or the one after that.
    
    Doing this allows the flipping element to be separated in later commits
    from the body of the inversion list, which will always begin with the
    constant 0 element.  That means that the body of the inversion list can
    be const.

M       charclass_invlists.h
M       embed.fnc
M       inline_invlist.c
M       proto.h
M       regcomp.c
M       regen/mk_invlists.pl
-----------------------------------------------------------------------

--
Perl5 Master Repository

Reply via email to