diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/regex.c | 18 | ||||
| -rw-r--r-- | src/syntax.h | 14 |
2 files changed, 23 insertions, 9 deletions
diff --git a/src/regex.c b/src/regex.c index dcf286454b3..4e00fd15dc9 100644 --- a/src/regex.c +++ b/src/regex.c | |||
| @@ -5945,12 +5945,12 @@ re_match_2_internal (struct re_pattern_buffer *bufp, const_re_char *string1, | |||
| 5945 | #ifdef emacs | 5945 | #ifdef emacs |
| 5946 | ssize_t offset = PTR_TO_OFFSET (d - 1); | 5946 | ssize_t offset = PTR_TO_OFFSET (d - 1); |
| 5947 | ssize_t charpos = SYNTAX_TABLE_BYTE_TO_CHAR (offset); | 5947 | ssize_t charpos = SYNTAX_TABLE_BYTE_TO_CHAR (offset); |
| 5948 | UPDATE_SYNTAX_TABLE (charpos); | 5948 | UPDATE_SYNTAX_TABLE_FAST (charpos); |
| 5949 | #endif | 5949 | #endif |
| 5950 | GET_CHAR_BEFORE_2 (c1, d, string1, end1, string2, end2); | 5950 | GET_CHAR_BEFORE_2 (c1, d, string1, end1, string2, end2); |
| 5951 | s1 = SYNTAX (c1); | 5951 | s1 = SYNTAX (c1); |
| 5952 | #ifdef emacs | 5952 | #ifdef emacs |
| 5953 | UPDATE_SYNTAX_TABLE_FORWARD (charpos + 1); | 5953 | UPDATE_SYNTAX_TABLE_FORWARD_FAST (charpos + 1); |
| 5954 | #endif | 5954 | #endif |
| 5955 | PREFETCH_NOLIMIT (); | 5955 | PREFETCH_NOLIMIT (); |
| 5956 | GET_CHAR_AFTER (c2, d, dummy); | 5956 | GET_CHAR_AFTER (c2, d, dummy); |
| @@ -5987,7 +5987,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp, const_re_char *string1, | |||
| 5987 | #ifdef emacs | 5987 | #ifdef emacs |
| 5988 | ssize_t offset = PTR_TO_OFFSET (d); | 5988 | ssize_t offset = PTR_TO_OFFSET (d); |
| 5989 | ssize_t charpos = SYNTAX_TABLE_BYTE_TO_CHAR (offset); | 5989 | ssize_t charpos = SYNTAX_TABLE_BYTE_TO_CHAR (offset); |
| 5990 | UPDATE_SYNTAX_TABLE (charpos); | 5990 | UPDATE_SYNTAX_TABLE_FAST (charpos); |
| 5991 | #endif | 5991 | #endif |
| 5992 | PREFETCH (); | 5992 | PREFETCH (); |
| 5993 | GET_CHAR_AFTER (c2, d, dummy); | 5993 | GET_CHAR_AFTER (c2, d, dummy); |
| @@ -6032,7 +6032,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp, const_re_char *string1, | |||
| 6032 | #ifdef emacs | 6032 | #ifdef emacs |
| 6033 | ssize_t offset = PTR_TO_OFFSET (d) - 1; | 6033 | ssize_t offset = PTR_TO_OFFSET (d) - 1; |
| 6034 | ssize_t charpos = SYNTAX_TABLE_BYTE_TO_CHAR (offset); | 6034 | ssize_t charpos = SYNTAX_TABLE_BYTE_TO_CHAR (offset); |
| 6035 | UPDATE_SYNTAX_TABLE (charpos); | 6035 | UPDATE_SYNTAX_TABLE_FAST (charpos); |
| 6036 | #endif | 6036 | #endif |
| 6037 | GET_CHAR_BEFORE_2 (c1, d, string1, end1, string2, end2); | 6037 | GET_CHAR_BEFORE_2 (c1, d, string1, end1, string2, end2); |
| 6038 | s1 = SYNTAX (c1); | 6038 | s1 = SYNTAX (c1); |
| @@ -6047,7 +6047,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp, const_re_char *string1, | |||
| 6047 | PREFETCH_NOLIMIT (); | 6047 | PREFETCH_NOLIMIT (); |
| 6048 | GET_CHAR_AFTER (c2, d, dummy); | 6048 | GET_CHAR_AFTER (c2, d, dummy); |
| 6049 | #ifdef emacs | 6049 | #ifdef emacs |
| 6050 | UPDATE_SYNTAX_TABLE_FORWARD (charpos); | 6050 | UPDATE_SYNTAX_TABLE_FORWARD_FAST (charpos); |
| 6051 | #endif | 6051 | #endif |
| 6052 | s2 = SYNTAX (c2); | 6052 | s2 = SYNTAX (c2); |
| 6053 | 6053 | ||
| @@ -6076,7 +6076,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp, const_re_char *string1, | |||
| 6076 | #ifdef emacs | 6076 | #ifdef emacs |
| 6077 | ssize_t offset = PTR_TO_OFFSET (d); | 6077 | ssize_t offset = PTR_TO_OFFSET (d); |
| 6078 | ssize_t charpos = SYNTAX_TABLE_BYTE_TO_CHAR (offset); | 6078 | ssize_t charpos = SYNTAX_TABLE_BYTE_TO_CHAR (offset); |
| 6079 | UPDATE_SYNTAX_TABLE (charpos); | 6079 | UPDATE_SYNTAX_TABLE_FAST (charpos); |
| 6080 | #endif | 6080 | #endif |
| 6081 | PREFETCH (); | 6081 | PREFETCH (); |
| 6082 | c2 = RE_STRING_CHAR (d, target_multibyte); | 6082 | c2 = RE_STRING_CHAR (d, target_multibyte); |
| @@ -6119,7 +6119,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp, const_re_char *string1, | |||
| 6119 | #ifdef emacs | 6119 | #ifdef emacs |
| 6120 | ssize_t offset = PTR_TO_OFFSET (d) - 1; | 6120 | ssize_t offset = PTR_TO_OFFSET (d) - 1; |
| 6121 | ssize_t charpos = SYNTAX_TABLE_BYTE_TO_CHAR (offset); | 6121 | ssize_t charpos = SYNTAX_TABLE_BYTE_TO_CHAR (offset); |
| 6122 | UPDATE_SYNTAX_TABLE (charpos); | 6122 | UPDATE_SYNTAX_TABLE_FAST (charpos); |
| 6123 | #endif | 6123 | #endif |
| 6124 | GET_CHAR_BEFORE_2 (c1, d, string1, end1, string2, end2); | 6124 | GET_CHAR_BEFORE_2 (c1, d, string1, end1, string2, end2); |
| 6125 | s1 = SYNTAX (c1); | 6125 | s1 = SYNTAX (c1); |
| @@ -6134,7 +6134,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp, const_re_char *string1, | |||
| 6134 | PREFETCH_NOLIMIT (); | 6134 | PREFETCH_NOLIMIT (); |
| 6135 | c2 = RE_STRING_CHAR (d, target_multibyte); | 6135 | c2 = RE_STRING_CHAR (d, target_multibyte); |
| 6136 | #ifdef emacs | 6136 | #ifdef emacs |
| 6137 | UPDATE_SYNTAX_TABLE_FORWARD (charpos + 1); | 6137 | UPDATE_SYNTAX_TABLE_FORWARD_FAST (charpos + 1); |
| 6138 | #endif | 6138 | #endif |
| 6139 | s2 = SYNTAX (c2); | 6139 | s2 = SYNTAX (c2); |
| 6140 | 6140 | ||
| @@ -6157,7 +6157,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp, const_re_char *string1, | |||
| 6157 | { | 6157 | { |
| 6158 | ssize_t offset = PTR_TO_OFFSET (d); | 6158 | ssize_t offset = PTR_TO_OFFSET (d); |
| 6159 | ssize_t pos1 = SYNTAX_TABLE_BYTE_TO_CHAR (offset); | 6159 | ssize_t pos1 = SYNTAX_TABLE_BYTE_TO_CHAR (offset); |
| 6160 | UPDATE_SYNTAX_TABLE (pos1); | 6160 | UPDATE_SYNTAX_TABLE_FAST (pos1); |
| 6161 | } | 6161 | } |
| 6162 | #endif | 6162 | #endif |
| 6163 | { | 6163 | { |
diff --git a/src/syntax.h b/src/syntax.h index 06ce0ec55df..eb154e088c9 100644 --- a/src/syntax.h +++ b/src/syntax.h | |||
| @@ -186,6 +186,13 @@ UPDATE_SYNTAX_TABLE_FORWARD (ptrdiff_t charpos) | |||
| 186 | false, gl_state.object); | 186 | false, gl_state.object); |
| 187 | } | 187 | } |
| 188 | 188 | ||
| 189 | INLINE void | ||
| 190 | UPDATE_SYNTAX_TABLE_FORWARD_FAST (ptrdiff_t charpos) | ||
| 191 | { | ||
| 192 | if (parse_sexp_lookup_properties && charpos >= gl_state.e_property) | ||
| 193 | update_syntax_table (charpos + gl_state.offset, 1, false, gl_state.object); | ||
| 194 | } | ||
| 195 | |||
| 189 | /* Make syntax table state (gl_state) good for CHARPOS, assuming it is | 196 | /* Make syntax table state (gl_state) good for CHARPOS, assuming it is |
| 190 | currently good for a position after CHARPOS. */ | 197 | currently good for a position after CHARPOS. */ |
| 191 | 198 | ||
| @@ -205,6 +212,13 @@ UPDATE_SYNTAX_TABLE (ptrdiff_t charpos) | |||
| 205 | UPDATE_SYNTAX_TABLE_FORWARD (charpos); | 212 | UPDATE_SYNTAX_TABLE_FORWARD (charpos); |
| 206 | } | 213 | } |
| 207 | 214 | ||
| 215 | INLINE void | ||
| 216 | UPDATE_SYNTAX_TABLE_FAST (ptrdiff_t charpos) | ||
| 217 | { | ||
| 218 | UPDATE_SYNTAX_TABLE_BACKWARD (charpos); | ||
| 219 | UPDATE_SYNTAX_TABLE_FORWARD_FAST (charpos); | ||
| 220 | } | ||
| 221 | |||
| 208 | /* Set up the buffer-global syntax table. */ | 222 | /* Set up the buffer-global syntax table. */ |
| 209 | 223 | ||
| 210 | INLINE void | 224 | INLINE void |