diff options
author | Richard Leach <richardleach@users.noreply.github.com> | 2020-02-25 00:15:32 +0000 |
---|---|---|
committer | Karl Williamson <khw@cpan.org> | 2020-03-11 08:59:23 -0600 |
commit | 2bb68ff13bb0f9b946f40262471a292170252cf6 (patch) | |
tree | 1b1a9ea7eaccab2101da75e43690999de29d033c /regexp.h | |
parent | 8d84f763ec53af119912243b7f699da317bdde34 (diff) | |
download | perl-2bb68ff13bb0f9b946f40262471a292170252cf6.tar.gz |
regexp.h -reorder regexp to close x86-64 alignment holes
Diffstat (limited to 'regexp.h')
-rw-r--r-- | regexp.h | 25 |
1 files changed, 13 insertions, 12 deletions
@@ -118,37 +118,28 @@ typedef struct regexp { */ U32 extflags; /* Flags used both externally and internally */ + U32 nparens; /* number of capture buffers */ SSize_t minlen; /* minimum possible number of chars in string to match */ SSize_t minlenret; /* mininum possible number of chars in $& */ STRLEN gofs; /* chars left of pos that we search from */ /* substring data about strings that must appear in * the final match, used for optimisations */ struct reg_substr_data *substrs; - U32 nparens; /* number of capture buffers */ /* private engine specific data */ - U32 intflags; /* Engine Specific Internal flags */ void *pprivate; /* Data private to the regex engine which * created this object. */ + U32 intflags; /* Engine Specific Internal flags */ /*---------------------------------------------------------------------- * Data about the last/current match. These are modified during matching */ U32 lastparen; /* highest close paren matched ($+) */ - U32 lastcloseparen; /* last close paren matched ($^N) */ regexp_paren_pair *offs; /* Array of offsets for (@-) and (@+) */ char **recurse_locinput; /* used to detect infinite recursion, XXX: move to internal */ - - /*---------------------------------------------------------------------- */ - - char *subbeg; /* saved or original string so \digit works forever. */ - SV_SAVED_COPY /* If non-NULL, SV which is COW from original */ - SSize_t sublen; /* Length of string pointed by subbeg */ - SSize_t suboffset; /* byte offset of subbeg from logical start of str */ - SSize_t subcoffset; /* suboffset equiv, but in chars (for @-/@+) */ - SSize_t maxlen; /* minimum possible number of chars in string to match */ + U32 lastcloseparen; /* last close paren matched ($^N) */ /*---------------------------------------------------------------------- */ @@ -161,6 +152,16 @@ typedef struct regexp { /*---------------------------------------------------------------------- */ + SV_SAVED_COPY /* If non-NULL, SV which is COW from original */ + SSize_t sublen; /* Length of string pointed by subbeg */ + SSize_t suboffset; /* byte offset of subbeg from logical start of str */ + SSize_t subcoffset; /* suboffset equiv, but in chars (for @-/@+) */ + SSize_t maxlen; /* minimum possible number of chars in string to match */ + char *subbeg; /* saved or original string so \digit works forever. */ + + /*---------------------------------------------------------------------- */ + + CV *qr_anoncv; /* the anon sub wrapped round qr/(?{..})/ */ } regexp; |