1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

jit_support.rb: cahce JIT support check

* Before
make test-all -C .ruby-svn TESTS="../test/ruby/test_jit.rb"  22.40s user 5.38s system 91% cpu 30.196 total

* After
make test-all -C .ruby-svn TESTS="../test/ruby/test_jit.rb"  12.91s user 3.33s system 91% cpu 17.648 total

Also, this makes it easier to check if JIT is actually tested, by
showing warning on stderr.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63504 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
k0kubun 2018-05-27 05:47:43 +00:00
parent 506512c028
commit 6d38935605

View file

@ -6,18 +6,7 @@ module JITSupport
'clang', 'clang',
] ]
module_function def self.check_support
def eval_with_jit(env = nil, script, verbose: 0, min_calls: 5, save_temps: false, timeout: JIT_TIMEOUT)
args = ['--disable-gems', '--jit-wait', "--jit-verbose=#{verbose}", "--jit-min-calls=#{min_calls}"]
args << '--jit-save-temps' if save_temps
args << '-e' << script
args.unshift(env) if env
EnvUtil.invoke_ruby(args,
'', true, true, timeout: timeout,
)
end
def supported?
# Experimental. If you want to ensure JIT is working with this test, please set this for now. # Experimental. If you want to ensure JIT is working with this test, please set this for now.
if ENV.key?('RUBY_FORCE_TEST_JIT') if ENV.key?('RUBY_FORCE_TEST_JIT')
return true return true
@ -34,6 +23,26 @@ module JITSupport
end end
end end
module_function
def eval_with_jit(env = nil, script, verbose: 0, min_calls: 5, save_temps: false, timeout: JIT_TIMEOUT)
args = ['--disable-gems', '--jit-wait', "--jit-verbose=#{verbose}", "--jit-min-calls=#{min_calls}"]
args << '--jit-save-temps' if save_temps
args << '-e' << script
args.unshift(env) if env
EnvUtil.invoke_ruby(args,
'', true, true, timeout: timeout,
)
end
def supported?
return @supported if defined?(@supported)
@supported = JITSupport.check_support.tap do |supported|
unless supported
warn "JIT tests are skiped since JIT seems not working. Set RUBY_FORCE_TEST_JIT=1 to let it fail.", uplevel: 1
end
end
end
def remove_mjit_logs(stderr) def remove_mjit_logs(stderr)
if RubyVM::MJIT.enabled? if RubyVM::MJIT.enabled?
stderr.gsub(/^MJIT warning: Skipped to compile unsupported instruction: \w+\n/m, '') stderr.gsub(/^MJIT warning: Skipped to compile unsupported instruction: \w+\n/m, '')