diff options
author | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-05-29 13:58:45 +0000 |
---|---|---|
committer | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-05-29 13:58:45 +0000 |
commit | 267d34c6e885501ca0684b4668c2ae29779acd65 (patch) | |
tree | 27977e012b765d4b0f1b59dda0dd82192b3d19b3 | |
parent | 9ff5f9c0713b5c3cc6bfe068645cb643cf7777cb (diff) |
* regexec.c (ONIGENC_IS_MBC_ASCII_WORD): redefine optimized one.
WORD of Ruby's ascii compatible encoding is always [a-zA-Z0-9_].
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55203 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | regexec.c | 12 |
2 files changed, 17 insertions, 0 deletions
@@ -1,3 +1,8 @@ +Sun May 29 22:58:19 2016 NARUSE, Yui <naruse@ruby-lang.org> + + * regexec.c (ONIGENC_IS_MBC_ASCII_WORD): redefine optimized one. + WORD of Ruby's ascii compatible encoding is always [a-zA-Z0-9_]. + Sun May 29 22:44:19 2016 NARUSE, Yui <naruse@ruby-lang.org> * regexec.c (match_at): make compilers optimize harder. @@ -40,6 +40,18 @@ # endif #endif +#define ENC_DUMMY_FLAG (1<<24) +static inline int +rb_enc_asciicompat(OnigEncoding enc) +{ + return ONIGENC_MBC_MINLEN(enc)==1 && !((enc)->ruby_encoding_index & ENC_DUMMY_FLAG); +} +#undef ONIGENC_IS_MBC_ASCII_WORD +#define ONIGENC_IS_MBC_ASCII_WORD(enc,s,end) \ + (rb_enc_asciicompat(enc) ? (ISALNUM(*s) || *s=='_') : \ + onigenc_ascii_is_code_ctype( \ + ONIGENC_MBC_TO_CODE(enc,s,end),ONIGENC_CTYPE_WORD,enc)) + #ifdef USE_CRNL_AS_LINE_TERMINATOR #define ONIGENC_IS_MBC_CRNL(enc,p,end) \ (ONIGENC_MBC_TO_CODE(enc,p,end) == 13 && \ |