зеркало из https://github.com/github/ruby.git
insns.def: opt_regexpmatch1 is not a leaf insn
Given `str`, if `str_coderange(str)` is `ENC_CODERANGE_BROKEN`, it calls `rb_raise`. And it calls `rb_funcallv` from `rb_exc_new3`. http://ci.rvm.jp/results/trunk-vm-asserts@silicon-docker/1673244 Maybe we can have a function to directly call `exc_initialize` for this purpose, but it may not be worth having such a function for keeping the instruction leaf. We may even want to delete the insn https://github.com/ruby/ruby/pull/1959. I'm not sure whether compile.c could generate opt_regexpmatch2 for invalid coderange string. Let's monitor that for a while. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66982 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
232f31ca12
Коммит
1f34da3709
|
@ -1421,7 +1421,7 @@ opt_regexpmatch1
|
|||
(VALUE recv)
|
||||
(VALUE obj)
|
||||
(VALUE val)
|
||||
// attr bool leaf = BASIC_OP_UNREDEFINED_P(BOP_MATCH, REGEXP_REDEFINED_OP_FLAG);
|
||||
// attr bool leaf = false; /* rb_reg_prepare_enc() may rb_raise() that calls rb_funcallv() */
|
||||
{
|
||||
val = vm_opt_regexpmatch1(recv, obj);
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче