From 666cafbeffbb8d9db27b9c4041d9edcc4e745770 Mon Sep 17 00:00:00 2001 From: k0kubun Date: Thu, 22 Feb 2018 15:11:12 +0000 Subject: test_rubyoptions.rb: don't test --jit if not supported test/lib/jit_support.rb: carved out JITSupport test/ruby/test_jit.rb: ditto git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62533 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/lib/jit_support.rb | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 test/lib/jit_support.rb (limited to 'test/lib/jit_support.rb') diff --git a/test/lib/jit_support.rb b/test/lib/jit_support.rb new file mode 100644 index 0000000000..a6c22165be --- /dev/null +++ b/test/lib/jit_support.rb @@ -0,0 +1,33 @@ +module JITSupport + JIT_TIMEOUT = 600 # 10min for each... + JIT_SUCCESS_PREFIX = 'JIT success \(\d+\.\dms\)' + SUPPORTED_COMPILERS = [ + 'gcc', + 'clang', + ] + + module_function + def eval_with_jit(script, verbose: 0, min_calls: 5, timeout: JIT_TIMEOUT) + EnvUtil.invoke_ruby( + ['--disable-gems', '--jit-wait', "--jit-verbose=#{verbose}", "--jit-min-calls=#{min_calls}", '-e', script], + '', true, true, timeout: timeout, + ) + end + + def supported? + # 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 + end + + # Very pessimistic check. With this check, we can't ensure JIT is working. + begin + _, err = JITSupport.eval_with_jit('proc {}.call', verbose: 1, min_calls: 1, timeout: 10) + rescue Timeout::Error + $stderr.puts "TestJIT: #jit_supported? check timed out" + false + else + err.match?(JIT_SUCCESS_PREFIX) + end + end +end -- cgit v1.2.3