Bug #14892


r63763 breaks -DMJIT_FORCE_ENABLE=1

Added by normalperson (Eric Wong) about 4 years ago. Updated almost 4 years ago.

Target version:


r63763 ("give up insn attr handles_frame") breaks -DMJIT_FORCE_ENABLE=1

(commit 6b534134a78e3e43c344682c3585e1abab015216 in git)
Related [Bug #14809] [Bug #14834]

Is this being worked on? I mentioned it in [ruby-core:87674],
"make test" fails in test_insns.rb for me on Debian 9 (x86 and amd64).
Not sure what's wrong.

Reverting that commit allows even "make exam" to pass for me.


r63763-fail.log (37 KB) r63763-fail.log normalperson (Eric Wong), 07/03/2018 09:51 AM

Updated by k0kubun (Takashi Kokubun) about 4 years ago

  • Assignee set to k0kubun (Takashi Kokubun)

I recognize that. I'm currently taking time for RubyBench project but planning to take a look after that. Please ignore the -DMJIT_FORCE_ENABLE=1 until I fix it.

Updated by wanabe (_ wanabe) about 4 years ago

A mini reproductive command is here.

ruby --jit-wait --disable=gems -e '1000.times { a, b = nil }'

Updated by wanabe (_ wanabe) about 4 years ago

And another one.

ruby --jit-wait --disable-gems -e '1000.times { break if /a/ =~ "ab" && !$~[0] }'

Updated by wanabe (_ wanabe) about 4 years ago

Many cases (including a, b = nil) go well after r63863.
Now I found that there remain 2 issues at least.

  1. pc is set to next_pos when insn is opt_xxx and body->catch_except_p is falsy.
    • ex. 1000.times { break if /a/ =~ "ab" && !$~[0] }
  2. opt_aref_with / opt_aset_with push rb_str_resurrect(key) when MJIT execution is cancelled, but it is unexpected for VM's opt_aref_with / opt_aset_with.
    • ex. 1000.times { Thread.current["a"] = {} }
Actions #5

Updated by k0kubun (Takashi Kokubun) almost 4 years ago

  • Status changed from Open to Closed

Applied in changeset trunk|r63875.

insns.def: stop pushing unnecessary keys for MJIT

[Bug #14892]


Also available in: Atom PDF