mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
mjit.c: disable compaction on empty queue w/ --jit-wait
When --jit-wait is specified, `unit_queue.length` is always 0 and it's not a good metric. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64097 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
c5a5563dbe
commit
82bd2a9cc0
2 changed files with 8 additions and 4 deletions
3
mjit.c
3
mjit.c
|
@ -1219,7 +1219,8 @@ worker(void)
|
|||
|
||||
#ifndef _MSC_VER
|
||||
/* Combine .o files to one .so and reload all jit_func to improve memory locality */
|
||||
if ((unit_queue.length == 0 && active_units.length > 1) || active_units.length == mjit_opts.max_cache_size) {
|
||||
if ((!mjit_opts.wait && unit_queue.length == 0 && active_units.length > 1)
|
||||
|| active_units.length == mjit_opts.max_cache_size) {
|
||||
compact_all_jit_code();
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -9,7 +9,6 @@ class TestJIT < Test::Unit::TestCase
|
|||
|
||||
IGNORABLE_PATTERNS = [
|
||||
/\ASuccessful MJIT finish\n\z/,
|
||||
/\AJIT compaction \(\d+\.\dms\): Compacted \d+ methods ->/,
|
||||
]
|
||||
|
||||
# trace_* insns are not compiled for now...
|
||||
|
@ -549,8 +548,8 @@ class TestJIT < Test::Unit::TestCase
|
|||
end
|
||||
end;
|
||||
assert_equal('0123456789', out)
|
||||
errs = err.lines.reject do |l|
|
||||
IGNORABLE_PATTERNS.any? { |pat| pat.match?(l) }
|
||||
compactions, errs = err.lines.partition do |l|
|
||||
l.match?(/\AJIT compaction \(\d+\.\dms\): Compacted \d+ methods ->/)
|
||||
end
|
||||
assert_match(/\A#{JIT_SUCCESS_PREFIX}: block in <main>@-e:/, errs[0])
|
||||
9.times do |i|
|
||||
|
@ -559,6 +558,10 @@ class TestJIT < Test::Unit::TestCase
|
|||
assert_equal("Too many JIT code -- 1 units unloaded\n", errs[10])
|
||||
assert_match(/\A#{JIT_SUCCESS_PREFIX}: mjit9@\(eval\):/, errs[11])
|
||||
|
||||
# On --jit-wait, when the number of JIT-ed code reaches --jit-max-cache,
|
||||
# it should trigger compaction.
|
||||
assert_equal(2, compactions.size)
|
||||
|
||||
# verify .o files are deleted on unload_units
|
||||
assert_send([Dir, :empty?, dir])
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue