[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]