ruby-changes:51298
From: k0kubun <ko1@a...>
Date: Sun, 27 May 2018 14:47:50 +0900 (JST)
Subject: [ruby-changes:51298] k0kubun:r63504 (trunk): jit_support.rb: cahce JIT support check
k0kubun 2018-05-27 14:47:43 +0900 (Sun, 27 May 2018) New Revision: 63504 https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=63504 Log: 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. Modified files: trunk/test/lib/jit_support.rb Index: test/lib/jit_support.rb =================================================================== --- test/lib/jit_support.rb (revision 63503) +++ test/lib/jit_support.rb (revision 63504) @@ -6,18 +6,7 @@ module JITSupport https://github.com/ruby/ruby/blob/trunk/test/lib/jit_support.rb#L6 'clang', ] - 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? + def self.check_support # Experimental. If you want to ensure JIT is working with this test, please set this for now. if ENV.key?('RUBY_FORCE_TEST_JIT') return true @@ -34,6 +23,26 @@ module JITSupport https://github.com/ruby/ruby/blob/trunk/test/lib/jit_support.rb#L23 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) if RubyVM::MJIT.enabled? stderr.gsub(/^MJIT warning: Skipped to compile unsupported instruction: \w+\n/m, '') -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/