140 Commits

Author SHA1 Message Date
TSUYUSATO Kitsune
70f8e9efda Enable optimization for ANYCHAR_STAR opcodes 2022-11-09 23:21:26 +09:00
TSUYUSATO Kitsune
cbabba9c82 Add index to the latest NULL_CHECK_STACK for fast matching 2022-11-09 23:21:26 +09:00
TSUYUSATO Kitsune
aefb7e5fa5 Add static declaration to new functions 2022-11-09 23:21:26 +09:00
TSUYUSATO Kitsune
d84edce689 Increment num_fail on OP_POP too 2022-11-09 23:21:26 +09:00
TSUYUSATO Kitsune
8c9e4d37a3 Fix look-around like operators and cclass 2022-11-09 23:21:26 +09:00
TSUYUSATO Kitsune
f07dea16e3 Keep cache optimization info to MatchArg for global matching 2022-11-09 23:21:26 +09:00
TSUYUSATO Kitsune
881bf9a0b8 Implement cache optimization for regexp matching 2022-11-09 23:21:26 +09:00
Yusuke Endoh
ffc3b37f96 re.c: Add Regexp.timeout= and Regexp.timeout
[Feature #17837]
2022-03-30 16:50:46 +09:00
Jeremy Evans
6d3f447aec Fix multiplex backreferencs near end of string in regexp match
Idea from Jirka Marsik.

Fixes [Bug #18631]
2022-03-29 15:29:15 -07:00
Yusuke Endoh
9112cf4ae7 regint.h: Reduce the frequency of rb_thread_check_ints
edc8576a65b7082597d45a694434261ec3ac0d9e checks interrupt at every
backtrack, which brought significant overhead.

This change makes the check only once every 128 backtracks.
2022-03-24 09:47:22 +09:00
Jeremy Evans
edc8576a65 Allow interrupting regexps that backtrack
Fixes [Bug #14103]

Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
2022-03-10 11:06:33 -08:00
Nobuyoshi Nakada
40612d55c6
Fixed shorten-64-to-32 errors when USE_COMBINATION_EXPLOSION_CHECK 2021-05-07 20:15:05 +09:00
Lourens Naudé
31cf13060c Only define history_root member of the Oniguruma re_registers struct if USE_CAPTURE_HISTORY is enabled 2019-04-24 00:40:17 +09:00
shyouhei
1f76918a33 label as lvalue is a GCCism
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61558 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-02 06:41:54 +00:00
naruse
51716c331f re-apply r60755
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60969 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-12-01 14:32:12 +00:00
naruse
31796f17d3 Update to Onigmo 6.1.3-669ac9997619954c298da971fcfacccf36909d05.
[Bug #13892]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60966 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-12-01 13:50:13 +00:00
nobu
24d38cc447 regexec.c: invalidate previously matched position
* regexec.c (match_at): invalidate end position not yet matched
  when new start position is pushed, to dispose previously stored
  position.  [ruby-core:83743] [Bug #14101]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60755 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-11-13 05:50:54 +00:00
naruse
6b1c6e0e55 Merge Onigmo 6.1.1
* Support absent operator https://github.com/k-takata/Onigmo/issues/82
* https://github.com/k-takata/Onigmo/blob/Onigmo-6.1.1/HISTORY

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57603 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-02-11 15:08:33 +00:00
naruse
2873edeafb Merge Onigmo 6.0.0
* https://github.com/k-takata/Onigmo/blob/Onigmo-6.0.0/HISTORY
* fix for ruby 2.4: https://github.com/k-takata/Onigmo/pull/78
* suppress warning: https://github.com/k-takata/Onigmo/pull/79
* include/ruby/oniguruma.h: include onigmo.h.
* template/encdb.h.tmpl: ignore duplicated definition of EUC-CN in
  enc/euc_kr.c. It is defined in enc/gb2313.c with CRuby macro.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57045 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-10 17:47:04 +00:00
naruse
e342418e46 * regexec.c (OPCODE_EXEC_HOOK): op is p-1 because p is already
incremented.

* regexec.c (OPCODE_EXEC_HOOK): use the exact end address.

* regexec.c (match_at): don't call OPCODE_EXEC_HOOK in CASE()
  when it comes from goto fail.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56332 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-10-03 21:06:50 +00:00
naruse
267d34c6e8 * 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
2016-05-29 13:58:45 +00:00
naruse
9ff5f9c071 * regexec.c (match_at): make compilers optimize harder.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55202 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-05-29 13:56:38 +00:00
nobu
84f4550341 regexec.c: constify
* regexec.c (match_at): constify oplabels.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54741 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-24 02:10:09 +00:00
nobu
9fb596815d regexec.c: fix build with direct threaded VM
* regexec.c (match_at): move direct threaded VM code to get rid of
  mixed declarations and code, and enable it only for gcc since it
  depends on a gcc extension.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53251 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-22 17:34:38 +00:00
nobu
6e767dd0ac regexec.c: enable direct threaded VM
* regexec.c (USE_DIRECT_THREADED_VM): enable direct threaded VM by
  the default.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53248 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-22 16:58:22 +00:00
svn
4afebfd2c6 * remove trailing spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52757 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-26 08:31:53 +00:00
naruse
9ed1d63f41 * regcomp.c, regenc.c, regexec.c, regint.h, enc/unicode.c:
Merge Onigmo 58fa099ed1a34367de67fb3d06dd48d076839692
  + https://github.com/k-takata/Onigmo/pull/52

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52756 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-26 08:31:27 +00:00
nobu
1db0393eb1 uninitialized variable
* process.c (rb_spawn_process): get rid of usage of uninitialized
  variable.
  reported by Denis Denisov <denji0k AT gmail.com>.
* regexec.c (match_at): ditto.
* ext/win32ole/win32ole.c (ole_wc2mb_alloc, ole_vstr2wc, ole_mb2wc):
  ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49025 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-12-26 06:09:11 +00:00
nobu
d5b81e6844 fix printf format conversion specifiers
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49021 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-12-26 05:33:01 +00:00
naruse
d2a5354255 * reg*.c: Merge Onigmo 5.15.0 38a870960aa7370051a3544
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47598 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-09-15 16:18:41 +00:00
naruse
64c81e40d4 * regcomp.c: Merge Onigmo 5.14.1 25a8a69fc05ae3b56a09.
this includes Support for Unicode 7.0 [Bug #9092].

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46831 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-07-16 03:27:25 +00:00
nobu
046831094b constify rb_encoding and OnigEncoding
* include/ruby/encoding.h: constify `rb_encoding` arguments.
* include/ruby/oniguruma.h: constify `OnigEncoding` arguments.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46309 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-06-01 22:06:11 +00:00
naruse
536a3274c9 * Merge Onigmo 5.13.4 f22cf2e566712cace60d17f84d63119d7c5764ee.
[bug] fix problem with optimization of \z (Issue #16) [Bug #8210]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40276 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-13 11:30:35 +00:00
naruse
407bcb4bc6 * Merge Onigmo d4bad41e16e3eccd97ccce6f1f96712e557c4518.
fix lookbehind assertion fails with /m mode enabled. [Bug #8023]
  fix \Z matches where it shouldn't. [Bug #8001]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39718 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-11 03:46:55 +00:00
naruse
78dbaa1648 * Merge Onigmo 0fe387da2fee089254f6b04990541c731a26757f
v5.13.3 [Bug#7972] [Bug#7974]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39547 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-01 16:36:37 +00:00
naruse
b2cc0976a7 * regcomp.c: Merge Onigmo 3d855b30d574536d3ae600260208c6624ae4791c.
[Bug#6143] [Bug#6144] [Bug#6145]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35097 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-21 10:53:06 +00:00
nobu
0ffc74dece * regcomp.c, regexec.c: fix-up warnings.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34684 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-02-18 15:41:59 +00:00
naruse
0424e152c6 * Merge Onigmo-5.13.1. [ruby-dev:45057] [Feature #5820]
https://github.com/k-takata/Onigmo
  cp reg{comp,enc,error,exec,parse,syntax}.c reg{enc,int,parse}.h
  cp oniguruma.h
  cp tool/enc-unicode.rb
  cp -r enc/

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34663 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-02-17 07:42:23 +00:00
naruse
fb2f540ad7 Fix type of arguments in debug prints.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30945 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-02-23 00:04:55 +00:00
naruse
48de1e292a * addr2line.c: suppressed shorten-64-to-32 warnings.
* regcomp.c: ditto.
* regexec.c: ditto.
* regint.h: ditto.
* regparse.c: ditto.
* regparse.h: ditto.
* time.c: ditto.
* variable.c: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30740 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-01-31 03:44:57 +00:00
naruse
bd98301784 * regcomp.c (print_distance_range): use PRIuSIZE.
* regcomp.c (print_optimize_info): use %ld because the type of
  calcutated value of integers is long.

* regexec.c (onig_print_compiled_byte_code): add prototype.

* regexec.c (match_at): add 2nd argument.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29926 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-25 14:14:44 +00:00
naruse
8e2a1cba36 * regint.h (OnigOpInfoType): constify name.
* regcomp.c (op2name): constify return value.

* regcomp.c (onig_print_compiled_byte_code): use PRIuPTR and
  uintptr_t to clean warnings.

* regcomp.c (print_indent_tree): use PRIxPTR and intptr_t.

* regexec.c (match_at): use PRIdPTR and intptr_t.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29811 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-17 06:21:11 +00:00
naruse
b4608406f1 * regexec.c (onig_search): don't skip non-ANYCHARs when
.* fails to match. This causes to fail matching
  ANYCHAR_STAR with LOOK_BEHIND. This fix is workaround
  and disable the optimization. [ruby-dev:41851]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28648 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-07-15 06:55:42 +00:00
naruse
9ac0263c2f * regexec.c (match_at): add end point to enclen's argument.
This only effect on compilinig with -DONIG_DEBUG_MATCH.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28637 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-07-14 09:22:39 +00:00
matz
db37773e13 * include/ruby/oniguruma.h: updated to follow Oniguruma 5.9.2.
* re.c (make_regexp): use onig_new() instead of onig_alloc_init().

* re.c (rb_reg_to_s): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26791 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-03-01 21:54:59 +00:00
naruse
c80535e50d * regexec.c (match_at): follow enclen's change.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26167 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-12-24 06:21:14 +00:00
nobu
4d786d21e3 * removed spaces just before tabs.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25930 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-26 05:25:08 +00:00
nobu
23a32d6444 * include/ruby/oniguruma.h, include/ruby/re.h, re.c, regcomp.c,
regenc.c, regerror.c, regexec.c, regint.h, regparse.c: use long.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23907 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-06-30 02:08:54 +00:00
nobu
12d2c8ba41 stripped trailing spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22552 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-22 14:23:33 +00:00
akr
478b14ea4f * regexec.c (string_cmp_ic): add text_end argument.
(slow_search): call enclen with real string end.
  (map_search): add text_end argument.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19421 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-18 16:16:45 +00:00