From e1fee7f949cb6719122672fa1081c60984a5339f Mon Sep 17 00:00:00 2001 From: Takashi Kokubun Date: Wed, 13 Jan 2021 22:36:45 -0800 Subject: Rename RubyVM::MJIT to RubyVM::JIT because the name "MJIT" is an internal code name, it's inconsistent with --jit while they are related to each other, and I want to discourage future JIT implementation-specific (e.g. MJIT-specific) APIs by this rename. [Feature #17490] --- NEWS.md | 2 + benchmark/lib/benchmark_driver/runner/mjit.rb | 8 +- benchmark/lib/benchmark_driver/runner/mjit_exec.rb | 6 +- bootstraptest/runner.rb | 2 +- spec/ruby/core/io/flush_spec.rb | 2 +- spec/ruby/core/io/shared/write.rb | 2 +- template/fake.rb.in | 2 +- test/-ext-/bug_reporter/test_bug_reporter.rb | 2 +- test/csv/parse/test_general.rb | 2 +- test/drb/drbtest.rb | 2 +- test/lib/jit_support.rb | 2 +- test/net/ftp/test_ftp.rb | 34 ++++---- test/net/http/test_httpresponse.rb | 2 +- test/net/smtp/test_smtp.rb | 2 +- test/reline/test_within_pipe.rb | 2 +- test/rinda/test_rinda.rb | 4 +- test/ruby/test_fiber.rb | 2 +- test/ruby/test_io.rb | 6 +- test/ruby/test_jit.rb | 2 +- test/ruby/test_optimization.rb | 2 +- test/ruby/test_process.rb | 2 +- test/ruby/test_rubyoptions.rb | 8 +- test/ruby/test_rubyvm_jit.rb | 91 ++++++++++++++++++++++ test/ruby/test_rubyvm_mjit.rb | 91 ---------------------- test/ruby/test_settracefunc.rb | 2 +- test/ruby/test_thread.rb | 4 +- test/rubygems/test_gem_stream_ui.rb | 2 +- test/socket/test_socket.rb | 2 +- tool/lib/minitest/unit.rb | 2 +- tool/lib/test/unit/core_assertions.rb | 2 +- tool/test/testunit/test_hideskip.rb | 2 +- tool/test/testunit/test_parallel.rb | 2 +- tool/test/webrick/test_httpserver.rb | 2 +- tool/test/webrick/test_server.rb | 2 +- vm.c | 21 ++--- 35 files changed, 164 insertions(+), 159 deletions(-) create mode 100644 test/ruby/test_rubyvm_jit.rb delete mode 100644 test/ruby/test_rubyvm_mjit.rb diff --git a/NEWS.md b/NEWS.md index 604be60ce4..1e3202c235 100644 --- a/NEWS.md +++ b/NEWS.md @@ -37,6 +37,8 @@ Excluding feature bug fixes. ### JIT +* `RubyVM::MJIT` is renamed to `RubyVM::JIT`. + ## Static analysis ### RBS diff --git a/benchmark/lib/benchmark_driver/runner/mjit.rb b/benchmark/lib/benchmark_driver/runner/mjit.rb index 1d4693e8be..abefa463b3 100644 --- a/benchmark/lib/benchmark_driver/runner/mjit.rb +++ b/benchmark/lib/benchmark_driver/runner/mjit.rb @@ -14,17 +14,17 @@ class BenchmarkDriver::Runner::Mjit < BenchmarkDriver::Runner::Ips jobs.map do |job| job = job.dup job.prelude = "#{job.prelude}\n#{<<~EOS}" - if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? + if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? __bmdv_ruby_i = 0 while __bmdv_ruby_i < 10000 # jit_min_calls #{job.script} __bmdv_ruby_i += 1 end - RubyVM::MJIT.pause # compile + RubyVM::JIT.pause # compile #{job.script} - RubyVM::MJIT.resume; RubyVM::MJIT.pause # recompile + RubyVM::JIT.resume; RubyVM::JIT.pause # recompile #{job.script} - RubyVM::MJIT.resume; RubyVM::MJIT.pause # recompile 2 + RubyVM::JIT.resume; RubyVM::JIT.pause # recompile 2 end EOS job diff --git a/benchmark/lib/benchmark_driver/runner/mjit_exec.rb b/benchmark/lib/benchmark_driver/runner/mjit_exec.rb index eac3dfba84..46e662bc7c 100644 --- a/benchmark/lib/benchmark_driver/runner/mjit_exec.rb +++ b/benchmark/lib/benchmark_driver/runner/mjit_exec.rb @@ -135,7 +135,7 @@ class BenchmarkDriver::Runner::MjitExec nil end % end - RubyVM::MJIT.pause if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? + RubyVM::JIT.pause if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? def vm t = Process.clock_gettime(Process::CLOCK_MONOTONIC) @@ -172,7 +172,7 @@ class BenchmarkDriver::Runner::MjitExec a<%= i %> a<%= i %> # --jit-min-calls=2 % end - RubyVM::MJIT.pause if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? + RubyVM::JIT.pause if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? def vm t = Process.clock_gettime(Process::CLOCK_MONOTONIC) @@ -228,7 +228,7 @@ class BenchmarkDriver::Runner::MjitExec jit jit - RubyVM::MJIT.pause if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? + RubyVM::JIT.pause if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? File.write(<%= result.dump %>, jit) EOS end diff --git a/bootstraptest/runner.rb b/bootstraptest/runner.rb index 2cd91ffd07..11d5a6c17e 100755 --- a/bootstraptest/runner.rb +++ b/bootstraptest/runner.rb @@ -383,7 +383,7 @@ def assert_normal_exit(testsrc, *rest, timeout: nil, **opt) end def assert_finish(timeout_seconds, testsrc, message = '') - if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # for --jit-wait + if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # for --jit-wait timeout_seconds *= 3 end newtest diff --git a/spec/ruby/core/io/flush_spec.rb b/spec/ruby/core/io/flush_spec.rb index 34cf42c425..8de373a0bd 100644 --- a/spec/ruby/core/io/flush_spec.rb +++ b/spec/ruby/core/io/flush_spec.rb @@ -23,7 +23,7 @@ describe "IO#flush" do # For instance, MJIT creates a worker before @r.close with fork(), @r.close happens, # and the MJIT worker keeps the pipe open until the worker execve(). # TODO: consider acquiring GVL from MJIT worker. - guard_not -> { defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? } do + guard_not -> { defined?(RubyVM::JIT) && RubyVM::JIT.enabled? } do it "raises Errno::EPIPE if sync=false and the read end is closed" do @w.sync = false @w.write "foo" diff --git a/spec/ruby/core/io/shared/write.rb b/spec/ruby/core/io/shared/write.rb index 270b84ac39..5e53d981c5 100644 --- a/spec/ruby/core/io/shared/write.rb +++ b/spec/ruby/core/io/shared/write.rb @@ -99,7 +99,7 @@ describe :io_write, shared: true do # For instance, MJIT creates a worker before @r.close with fork(), @r.close happens, # and the MJIT worker keeps the pipe open until the worker execve(). # TODO: consider acquiring GVL from MJIT worker. - guard_not -> { defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? } do + guard_not -> { defined?(RubyVM::JIT) && RubyVM::JIT.enabled? } do it "raises Errno::EPIPE if the read end is closed and does not die from SIGPIPE" do @r.close -> { @w.send(@method, "foo") }.should raise_error(Errno::EPIPE, /Broken pipe/) diff --git a/template/fake.rb.in b/template/fake.rb.in index f1da719ecb..25053d3dbf 100644 --- a/template/fake.rb.in +++ b/template/fake.rb.in @@ -32,7 +32,7 @@ class Object CROSS_COMPILING = RUBY_PLATFORM constants.grep(/^RUBY_/) {|n| remove_const n} % arg['versions'].each {|n, v| - <%=n%> = <%if n=='RUBY_DESCRIPTION' %>RubyVM.const_defined?(:MJIT) && RubyVM::MJIT.enabled? ? + <%=n%> = <%if n=='RUBY_DESCRIPTION' %>RubyVM.const_defined?(:JIT) && RubyVM::JIT.enabled? ? <%=arg['RUBY_DESCRIPTION_WITH_JIT'].inspect%> : <%end%><%=v.inspect%> % } diff --git a/test/-ext-/bug_reporter/test_bug_reporter.rb b/test/-ext-/bug_reporter/test_bug_reporter.rb index 6b8e1754a7..ac6d92bb67 100644 --- a/test/-ext-/bug_reporter/test_bug_reporter.rb +++ b/test/-ext-/bug_reporter/test_bug_reporter.rb @@ -7,7 +7,7 @@ class TestBugReporter < Test::Unit::TestCase skip if ENV['RUBY_ON_BUG'] description = RUBY_DESCRIPTION - description = description.sub(/\+JIT /, '') if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? + description = description.sub(/\+JIT /, '') if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? expected_stderr = [ :*, /\[BUG\]\sSegmentation\sfault.*\n/, diff --git a/test/csv/parse/test_general.rb b/test/csv/parse/test_general.rb index 52b0cab000..14903d462c 100644 --- a/test/csv/parse/test_general.rb +++ b/test/csv/parse/test_general.rb @@ -247,7 +247,7 @@ line,5,jkl def assert_parse_errors_out(data, **options) assert_raise(CSV::MalformedCSVError) do timeout = 0.2 - if defined?(RubyVM::MJIT.enabled?) and RubyVM::MJIT.enabled? + if defined?(RubyVM::JIT.enabled?) and RubyVM::JIT.enabled? timeout = 5 # for --jit-wait end Timeout.timeout(timeout) do diff --git a/test/drb/drbtest.rb b/test/drb/drbtest.rb index 16ffec904b..acef380ad6 100644 --- a/test/drb/drbtest.rb +++ b/test/drb/drbtest.rb @@ -216,7 +216,7 @@ module DRbCore def test_06_timeout skip if RUBY_PLATFORM.include?("armv7l-linux") skip if RUBY_PLATFORM.include?("sparc-solaris2.10") - skip if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # expecting a certain delay is difficult for --jit-wait CI + skip if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # expecting a certain delay is difficult for --jit-wait CI Timeout.timeout(60) do ten = Onecky.new(10) assert_raise(Timeout::Error) do diff --git a/test/lib/jit_support.rb b/test/lib/jit_support.rb index 2f6d637ec9..3bca63a549 100644 --- a/test/lib/jit_support.rb +++ b/test/lib/jit_support.rb @@ -74,7 +74,7 @@ module JITSupport end def remove_mjit_logs(stderr) - if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # utility for -DFORCE_MJIT_ENABLE + if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # utility for -DFORCE_MJIT_ENABLE stderr.gsub(/^MJIT warning: Skipped to compile unsupported instruction: \w+\n/m, '') else stderr diff --git a/test/net/ftp/test_ftp.rb b/test/net/ftp/test_ftp.rb index 023e79435a..6cd32add90 100644 --- a/test/net/ftp/test_ftp.rb +++ b/test/net/ftp/test_ftp.rb @@ -762,7 +762,7 @@ class FTPTest < Test::Unit::TestCase begin begin ftp = Net::FTP.new - ftp.read_timeout *= 5 if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # for --jit-wait + ftp.read_timeout *= 5 if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # for --jit-wait ftp.connect(SERVER_ADDR, server.port) ftp.login assert_match(/\AUSER /, commands.shift) @@ -807,7 +807,7 @@ class FTPTest < Test::Unit::TestCase begin begin ftp = Net::FTP.new - ftp.read_timeout *= 5 if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # for --jit-wait + ftp.read_timeout *= 5 if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # for --jit-wait ftp.connect(SERVER_ADDR, server.port) ftp.login assert_match(/\AUSER /, commands.shift) @@ -1545,7 +1545,7 @@ EOF begin begin ftp = Net::FTP.new - ftp.read_timeout *= 5 if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # for --jit-wait + ftp.read_timeout *= 5 if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # for --jit-wait ftp.connect(SERVER_ADDR, server.port) assert_equal(['LANG EN*', 'UTF8'], ftp.features) assert_equal("FEAT\r\n", commands.shift) @@ -1568,7 +1568,7 @@ EOF begin begin ftp = Net::FTP.new - ftp.read_timeout *= 5 if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # for --jit-wait + ftp.read_timeout *= 5 if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # for --jit-wait ftp.connect(SERVER_ADDR, server.port) assert_raise(Net::FTPPermError) do ftp.features @@ -1594,7 +1594,7 @@ EOF begin begin ftp = Net::FTP.new - ftp.read_timeout *= 5 if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # for --jit-wait + ftp.read_timeout *= 5 if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # for --jit-wait ftp.connect(SERVER_ADDR, server.port) ftp.option("UTF8", "ON") assert_equal("OPTS UTF8 ON\r\n", commands.shift) @@ -1653,7 +1653,7 @@ EOF begin begin ftp = Net::FTP.new - ftp.read_timeout *= 5 if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # for --jit-wait + ftp.read_timeout *= 5 if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # for --jit-wait ftp.connect(SERVER_ADDR, server.port) entry = ftp.mlst("foo") assert_equal("/foo", entry.pathname) @@ -1740,7 +1740,7 @@ EOF begin begin ftp = Net::FTP.new - ftp.read_timeout *= 5 if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # for --jit-wait + ftp.read_timeout *= 5 if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # for --jit-wait ftp.connect(SERVER_ADDR, server.port) ftp.login assert_match(/\AUSER /, commands.shift) @@ -1779,7 +1779,7 @@ EOF def test_parse257 ftp = Net::FTP.new - ftp.read_timeout *= 5 if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # for --jit-wait + ftp.read_timeout *= 5 if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # for --jit-wait assert_equal('/foo/bar', ftp.send(:parse257, '257 "/foo/bar" directory created')) assert_equal('/foo/bar"baz', @@ -1918,7 +1918,7 @@ EOF port: port, ssl: { ca_file: CA_FILE }, passive: false) - ftp.read_timeout *= 5 if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # for --jit-wait + ftp.read_timeout *= 5 if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # for --jit-wait begin assert_equal("AUTH TLS\r\n", commands.shift) assert_equal("PBSZ 0\r\n", commands.shift) @@ -2003,7 +2003,7 @@ EOF port: port, ssl: { ca_file: CA_FILE }, passive: true) - ftp.read_timeout *= 5 if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # for --jit-wait + ftp.read_timeout *= 5 if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # for --jit-wait begin assert_equal("AUTH TLS\r\n", commands.shift) assert_equal("PBSZ 0\r\n", commands.shift) @@ -2079,7 +2079,7 @@ EOF ssl: { ca_file: CA_FILE }, private_data_connection: false, passive: false) - ftp.read_timeout *= 5 if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # for --jit-wait + ftp.read_timeout *= 5 if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # for --jit-wait begin assert_equal("AUTH TLS\r\n", commands.shift) ftp.login @@ -2149,7 +2149,7 @@ EOF ssl: { ca_file: CA_FILE }, private_data_connection: false, passive: true) - ftp.read_timeout *= 5 if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # for --jit-wait + ftp.read_timeout *= 5 if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # for --jit-wait begin assert_equal("AUTH TLS\r\n", commands.shift) ftp.login @@ -2230,7 +2230,7 @@ EOF ftp = Net::FTP.new(SERVER_NAME, port: server.port, ssl: { ca_file: CA_FILE }) - ftp.read_timeout *= 5 if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # for --jit-wait + ftp.read_timeout *= 5 if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # for --jit-wait assert_equal("AUTH TLS\r\n", commands.shift) assert_equal("PBSZ 0\r\n", commands.shift) assert_equal("PROT P\r\n", commands.shift) @@ -2283,7 +2283,7 @@ EOF begin ftp = Net::FTP.new ftp.resume = resume - ftp.read_timeout = (defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled?) ? 300 : 0.2 # use large timeout for --jit-wait + ftp.read_timeout = (defined?(RubyVM::JIT) && RubyVM::JIT.enabled?) ? 300 : 0.2 # use large timeout for --jit-wait ftp.connect(SERVER_ADDR, server.port) ftp.login assert_match(/\AUSER /, commands.shift) @@ -2342,7 +2342,7 @@ EOF chdir_to_tmpdir do begin ftp = Net::FTP.new - ftp.read_timeout *= 5 if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # for --jit-wait + ftp.read_timeout *= 5 if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # for --jit-wait ftp.connect(SERVER_ADDR, server.port) ftp.login assert_match(/\AUSER /, commands.shift) @@ -2393,7 +2393,7 @@ EOF File.binwrite("./|echo hello", binary_data) begin ftp = Net::FTP.new - ftp.read_timeout = RubyVM::MJIT.enabled? ? 300 : 0.2 # use large timeout for --jit-wait + ftp.read_timeout = RubyVM::JIT.enabled? ? 300 : 0.2 # use large timeout for --jit-wait ftp.connect(SERVER_ADDR, server.port) ftp.login assert_match(/\AUSER /, commands.shift) @@ -2448,7 +2448,7 @@ EOF end begin ftp = Net::FTP.new - ftp.read_timeout *= 5 if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # for --jit-wait + ftp.read_timeout *= 5 if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # for --jit-wait ftp.connect(SERVER_ADDR, server.port) ftp.login assert_match(/\AUSER /, commands.shift) diff --git a/test/net/http/test_httpresponse.rb b/test/net/http/test_httpresponse.rb index a70a9bce34..5063384569 100644 --- a/test/net/http/test_httpresponse.rb +++ b/test/net/http/test_httpresponse.rb @@ -78,7 +78,7 @@ EOS def test_read_body_block_mod # http://ci.rvm.jp/results/trunk-mjit-wait@silicon-docker/3019353 - skip 'too unstable with --jit-wait, and extending read_timeout did not help it' if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? + skip 'too unstable with --jit-wait, and extending read_timeout did not help it' if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? IO.pipe do |r, w| buf = 'x' * 1024 buf.freeze diff --git a/test/net/smtp/test_smtp.rb b/test/net/smtp/test_smtp.rb index e909909dec..9b044ec1a2 100644 --- a/test/net/smtp/test_smtp.rb +++ b/test/net/smtp/test_smtp.rb @@ -31,7 +31,7 @@ module Net def setup # Avoid hanging at fake_server_start's IO.select on --jit-wait CI like http://ci.rvm.jp/results/trunk-mjit-wait@phosphorus-docker/3302796 # Unfortunately there's no way to configure read_timeout for Net::SMTP.start. - if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? + if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? Net::SMTP.prepend Module.new { def initialize(*) super diff --git a/test/reline/test_within_pipe.rb b/test/reline/test_within_pipe.rb index 70a0e0a5de..4a46c9c9f1 100644 --- a/test/reline/test_within_pipe.rb +++ b/test/reline/test_within_pipe.rb @@ -8,7 +8,7 @@ class Reline::WithinPipeTest < Reline::TestCase @reader, @output_writer = IO.pipe((RELINE_TEST_ENCODING rescue Encoding.default_external)) @output = Reline.output = @output_writer @config = Reline.send(:core).config - @config.keyseq_timeout *= 600 if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # for --jit-wait CI + @config.keyseq_timeout *= 600 if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # for --jit-wait CI @line_editor = Reline.send(:core).line_editor end diff --git a/test/rinda/test_rinda.rb b/test/rinda/test_rinda.rb index 00e1ba7877..f155e88de1 100644 --- a/test/rinda/test_rinda.rb +++ b/test/rinda/test_rinda.rb @@ -402,7 +402,7 @@ module TupleSpaceTestModule end def test_cancel_02 - skip 'this test is unstable with --jit-wait' if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? + skip 'this test is unstable with --jit-wait' if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? entry = @ts.write([:removeme, 1]) assert_equal([[:removeme, 1]], @ts.read_all([nil, nil])) entry.cancel @@ -662,7 +662,7 @@ class TestRingServer < Test::Unit::TestCase end def test_do_reply_local - skip 'timeout-based test becomes unstable with --jit-wait' if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? + skip 'timeout-based test becomes unstable with --jit-wait' if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? with_timeout(30) {_test_do_reply_local} end diff --git a/test/ruby/test_fiber.rb b/test/ruby/test_fiber.rb index ff4658a20b..a5e35c0fd6 100644 --- a/test/ruby/test_fiber.rb +++ b/test/ruby/test_fiber.rb @@ -34,7 +34,7 @@ class TestFiber < Test::Unit::TestCase end def test_many_fibers - skip 'This is unstable on GitHub Actions --jit-wait. TODO: debug it' if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? + skip 'This is unstable on GitHub Actions --jit-wait. TODO: debug it' if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? max = 10_000 assert_equal(max, max.times{ Fiber.new{} diff --git a/test/ruby/test_io.rb b/test/ruby/test_io.rb index 9f9318eaf7..42149ac32a 100644 --- a/test/ruby/test_io.rb +++ b/test/ruby/test_io.rb @@ -607,7 +607,7 @@ class TestIO < Test::Unit::TestCase if have_nonblock? def test_copy_stream_no_busy_wait - skip "MJIT has busy wait on GC. This sometimes fails with --jit." if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? + skip "MJIT has busy wait on GC. This sometimes fails with --jit." if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? skip "multiple threads already active" if Thread.list.size > 1 msg = 'r58534 [ruby-core:80969] [Backport #13533]' @@ -1562,7 +1562,7 @@ class TestIO < Test::Unit::TestCase end if have_nonblock? def test_read_nonblock_no_exceptions - skip '[ruby-core:90895] MJIT worker may leave fd open in a forked child' if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # TODO: consider acquiring GVL from MJIT worker. + skip '[ruby-core:90895] MJIT worker may leave fd open in a forked child' if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # TODO: consider acquiring GVL from MJIT worker. with_pipe {|r, w| assert_equal :wait_readable, r.read_nonblock(4096, exception: false) w.puts "HI!" @@ -2210,7 +2210,7 @@ class TestIO < Test::Unit::TestCase def test_autoclose_true_closed_by_finalizer # http://ci.rvm.jp/results/trunk-mjit@silicon-docker/1465760 # http://ci.rvm.jp/results/trunk-mjit@silicon-docker/1469765 - skip 'this randomly fails with MJIT' if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? + skip 'this randomly fails with MJIT' if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? feature2250 = '[ruby-core:26222]' pre = 'ft2250' diff --git a/test/ruby/test_jit.rb b/test/ruby/test_jit.rb index 3bc4a871a1..54f9698afa 100644 --- a/test/ruby/test_jit.rb +++ b/test/ruby/test_jit.rb @@ -1085,7 +1085,7 @@ class TestJIT < Test::Unit::TestCase def test_mjit_pause_wait assert_eval_with_jit("#{<<~"begin;"}\n#{<<~"end;"}", stdout: '', success_count: 0, min_calls: 1) begin; - RubyVM::MJIT.pause + RubyVM::JIT.pause proc {}.call end; end diff --git a/test/ruby/test_optimization.rb b/test/ruby/test_optimization.rb index d0790c7463..b0090d654a 100644 --- a/test/ruby/test_optimization.rb +++ b/test/ruby/test_optimization.rb @@ -452,7 +452,7 @@ class TestRubyOptimization < Test::Unit::TestCase end def test_tailcall_not_to_grow_stack - skip 'currently JIT-ed code always creates a new stack frame' if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? + skip 'currently JIT-ed code always creates a new stack frame' if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? bug16161 = '[ruby-core:94881]' tailcall("#{<<-"begin;"}\n#{<<~"end;"}") diff --git a/test/ruby/test_process.rb b/test/ruby/test_process.rb index d1b9d8a478..33144aa62f 100644 --- a/test/ruby/test_process.rb +++ b/test/ruby/test_process.rb @@ -1706,7 +1706,7 @@ class TestProcess < Test::Unit::TestCase Process.wait pid assert_send [sig_r, :wait_readable, 5], 'self-pipe not readable' end - if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # checking -DMJIT_FORCE_ENABLE. It may trigger extra SIGCHLD. + if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # checking -DMJIT_FORCE_ENABLE. It may trigger extra SIGCHLD. assert_equal [true], signal_received.uniq, "[ruby-core:19744]" else assert_equal [true], signal_received, "[ruby-core:19744]" diff --git a/test/ruby/test_rubyoptions.rb b/test/ruby/test_rubyoptions.rb index b7831948f0..d860bf4a15 100644 --- a/test/ruby/test_rubyoptions.rb +++ b/test/ruby/test_rubyoptions.rb @@ -8,7 +8,7 @@ require_relative '../lib/jit_support' class TestRubyOptions < Test::Unit::TestCase NO_JIT_DESCRIPTION = - if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # checking -DMJIT_FORCE_ENABLE + if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # checking -DMJIT_FORCE_ENABLE RUBY_DESCRIPTION.sub(/\+JIT /, '') else RUBY_DESCRIPTION @@ -128,7 +128,7 @@ class TestRubyOptions < Test::Unit::TestCase def test_verbose assert_in_out_err(["-vve", ""]) do |r, e| assert_match(VERSION_PATTERN, r[0]) - if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? && !mjit_force_enabled? # checking -DMJIT_FORCE_ENABLE + if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? && !mjit_force_enabled? # checking -DMJIT_FORCE_ENABLE assert_equal(NO_JIT_DESCRIPTION, r[0]) else assert_equal(RUBY_DESCRIPTION, r[0]) @@ -191,7 +191,7 @@ class TestRubyOptions < Test::Unit::TestCase def test_version assert_in_out_err(%w(--version)) do |r, e| assert_match(VERSION_PATTERN, r[0]) - if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # checking -DMJIT_FORCE_ENABLE + if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # checking -DMJIT_FORCE_ENABLE assert_equal(EnvUtil.invoke_ruby(['-e', 'print RUBY_DESCRIPTION'], '', true).first, r[0]) else assert_equal(RUBY_DESCRIPTION, r[0]) @@ -221,7 +221,7 @@ class TestRubyOptions < Test::Unit::TestCase ].each do |args| assert_in_out_err(args) do |r, e| assert_match(VERSION_PATTERN_WITH_JIT, r[0]) - if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # checking -DMJIT_FORCE_ENABLE + if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # checking -DMJIT_FORCE_ENABLE assert_equal(RUBY_DESCRIPTION, r[0]) else assert_equal(EnvUtil.invoke_ruby(['--jit', '-e', 'print RUBY_DESCRIPTION'], '', true).first, r[0]) diff --git a/test/ruby/test_rubyvm_jit.rb b/test/ruby/test_rubyvm_jit.rb new file mode 100644 index 0000000000..2104ce3d18 --- /dev/null +++ b/test/ruby/test_rubyvm_jit.rb @@ -0,0 +1,91 @@ +# frozen_string_literal: true +require 'test/unit' +require_relative '../lib/jit_support' + +return if RbConfig::CONFIG["MJIT_SUPPORT"] == 'no' + +class TestRubyVMJIT < Test::Unit::TestCase + include JITSupport + + def setup + unless JITSupport.supported? + skip 'JIT seems not supported on this platform' + end + end + + def test_pause + out, err = eval_with_jit(<<~'EOS', verbose: 1, min_calls: 1, wait: false) + i = 0 + while i < 5 + eval("def mjit#{i}; end; mjit#{i}") + i += 1 + end + print RubyVM::JIT.pause + print RubyVM::JIT.pause + while i < 10 + eval("def mjit#{i}; end; mjit#{i}") + i += 1 + end + print RubyVM::JIT.pause # no JIT here + EOS + assert_equal('truefalsefalse', out) + assert_equal( + 5, err.scan(/#{JITSupport::JIT_SUCCESS_PREFIX}/).size, + "unexpected stdout:\n```\n#{out}```\n\nstderr:\n```\n#{err}```", + ) + end + + def test_pause_waits_until_compaction + out, err = eval_with_jit(<<~'EOS', verbose: 1, min_calls: 1, wait: false) + def a() end; a + def b() end; b + RubyVM::JIT.pause + EOS + assert_equal( + 2, err.scan(/#{JITSupport::JIT_SUCCESS_PREFIX}/).size, + "unexpected stdout:\n```\n#{out}```\n\nstderr:\n```\n#{err}```", + ) + assert_equal( + 1, err.scan(/#{JITSupport::JIT_COMPACTION_PREFIX}/).size, + "unexpected stdout:\n```\n#{out}```\n\nstderr:\n```\n#{err}```", + ) unless RUBY_PLATFORM.match?(/mswin|mingw/) # compaction is not supported on Windows yet + end + + def test_pause_does_not_hang_on_full_units + out, _ = eval_with_jit(<<~'EOS', verbose: 1, min_calls: 1, max_cache: 10, wait: false) + i = 0 + while i < 11 + eval("def mjit#{i}; end; mjit#{i}") + i += 1 + end + print RubyVM::JIT.pause + EOS + assert_equal('true', out) + end + + def test_pause_wait_false + out, err = eval_with_jit(<<~'EOS', verbose: 1, min_calls: 1, wait: false) + i = 0 + while i < 10 + eval("def mjit#{i}; end; mjit#{i}") + i += 1 + end + print RubyVM::JIT.pause(wait: false) + print RubyVM::JIT.pause(wait: false) + EOS + assert_equal('truefalse', out) + assert_equal(true, err.scan(/#{JITSupport::JIT_SUCCESS_PREFIX}/).size < 10) + end + + def test_resume + out, err = eval_with_jit(<<~'EOS', verbose: 1, min_calls: 1, wait: false) + print RubyVM::JIT.resume + print RubyVM::JIT.pause + print RubyVM::JIT.resume + print RubyVM::JIT.resume + print RubyVM::JIT.pause + EOS + assert_equal('falsetruetruefalsetrue', out) + assert_equal(0, err.scan(/#{JITSupport::JIT_SUCCESS_PREFIX}/).size) + end +end diff --git a/test/ruby/test_rubyvm_mjit.rb b/test/ruby/test_rubyvm_mjit.rb deleted file mode 100644 index ef7475670c..0000000000 --- a/test/ruby/test_rubyvm_mjit.rb +++ /dev/null @@ -1,91 +0,0 @@ -# frozen_string_literal: true -require 'test/unit' -require_relative '../lib/jit_support' - -return if RbConfig::CONFIG["MJIT_SUPPORT"] == 'no' - -class TestRubyVMMJIT < Test::Unit::TestCase - include JITSupport - - def setup - unless JITSupport.supported? - skip 'JIT seems not supported on this platform' - end - end - - def test_pause - out, err = eval_with_jit(<<~'EOS', verbose: 1, min_calls: 1, wait: false) - i = 0 - while i < 5 - eval("def mjit#{i}; end; mjit#{i}") - i += 1 - end - print RubyVM::MJIT.pause - print RubyVM::MJIT.pause - while i < 10 - eval("def mjit#{i}; end; mjit#{i}") - i += 1 - end - print RubyVM::MJIT.pause # no JIT here - EOS - assert_equal('truefalsefalse', out) - assert_equal( - 5, err.scan(/#{JITSupport::JIT_SUCCESS_PREFIX}/).size, - "unexpected stdout:\n```\n#{out}```\n\nstderr:\n```\n#{err}```", - ) - end - - def test_pause_waits_until_compaction - out, err = eval_with_jit(<<~'EOS', verbose: 1, min_calls: 1, wait: false) - def a() end; a - def b() end; b - RubyVM::MJIT.pause - EOS - assert_equal( - 2, err.scan(/#{JITSupport::JIT_SUCCESS_PREFIX}/).size, - "unexpected stdout:\n```\n#{out}```\n\nstderr:\n```\n#{err}```", - ) - assert_equal( - 1, err.scan(/#{JITSupport::JIT_COMPACTION_PREFIX}/).size, - "unexpected stdout:\n```\n#{out}```\n\nstderr:\n```\n#{err}```", - ) unless RUBY_PLATFORM.match?(/mswin|mingw/) # compaction is not supported on Windows yet - end - - def test_pause_does_not_hang_on_full_units - out, _ = eval_with_jit(<<~'EOS', verbose: 1, min_calls: 1, max_cache: 10, wait: false) - i = 0 - while i < 11 - eval("def mjit#{i}; end; mjit#{i}") - i += 1 - end - print RubyVM::MJIT.pause - EOS - assert_equal('true', out) - end - - def test_pause_wait_false - out, err = eval_with_jit(<<~'EOS', verbose: 1, min_calls: 1, wait: false) - i = 0 - while i < 10 - eval("def mjit#{i}; end; mjit#{i}") - i += 1 - end - print RubyVM::MJIT.pause(wait: false) - print RubyVM::MJIT.pause(wait: false) - EOS - assert_equal('truefalse', out) - assert_equal(true, err.scan(/#{JITSupport::JIT_SUCCESS_PREFIX}/).size < 10) - end - - def test_resume - out, err = eval_with_jit(<<~'EOS', verbose: 1, min_calls: 1, wait: false) - print RubyVM::MJIT.resume - print RubyVM::MJIT.pause - print RubyVM::MJIT.resume - print RubyVM::MJIT.resume - print RubyVM::MJIT.pause - EOS - assert_equal('falsetruetruefalsetrue', out) - assert_equal(0, err.scan(/#{JITSupport::JIT_SUCCESS_PREFIX}/).size) - end -end diff --git a/test/ruby/test_settracefunc.rb b/test/ruby/test_settracefunc.rb index 7821a221dc..1d16b2e154 100644 --- a/test/ruby/test_settracefunc.rb +++ b/test/ruby/test_settracefunc.rb @@ -1963,7 +1963,7 @@ class TestSetTraceFunc < Test::Unit::TestCase Thread.pass until t.status == 'sleep' # When MJIT thread exists, t.status becomes 'sleep' even if it does not reach m2t_q.pop. # This sleep forces it to reach m2t_q.pop for --jit-wait. - sleep 1 if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? + sleep 1 if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? t.add_trace_func proc{|ev, file, line, *args| if file == __FILE__ diff --git a/test/ruby/test_thread.rb b/test/ruby/test_thread.rb index 3852cb7020..6005e5b001 100644 --- a/test/ruby/test_thread.rb +++ b/test/ruby/test_thread.rb @@ -309,7 +309,7 @@ class TestThread < Test::Unit::TestCase s += 1 end Thread.pass until t.stop? - sleep 1 if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # t.stop? behaves unexpectedly with --jit-wait + sleep 1 if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # t.stop? behaves unexpectedly with --jit-wait assert_equal(1, s) t.wakeup Thread.pass while t.alive? @@ -1338,7 +1338,7 @@ q.pop opts = { timeout: 5, timeout_error: nil } # prevent SIGABRT from slow shutdown with MJIT - opts[:reprieve] = 3 if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? + opts[:reprieve] = 3 if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? assert_normal_exit(<<-_end, '[Bug #8996]', **opts) Thread.report_on_exception = false diff --git a/test/rubygems/test_gem_stream_ui.rb b/test/rubygems/test_gem_stream_ui.rb index ca6dbc6a8b..e154a723c9 100644 --- a/test/rubygems/test_gem_stream_ui.rb +++ b/test/rubygems/test_gem_stream_ui.rb @@ -5,7 +5,7 @@ require 'timeout' class TestGemStreamUI < Gem::TestCase # increase timeout with MJIT for --jit-wait testing - mjit_enabled = defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? + mjit_enabled = defined?(RubyVM::JIT) && RubyVM::JIT.enabled? SHORT_TIMEOUT = (RUBY_ENGINE == "ruby" && !mjit_enabled) ? 0.1 : 1.0 module IsTty diff --git a/test/socket/test_socket.rb b/test/socket/test_socket.rb index 49587dc244..9cef9f0d6f 100644 --- a/test/socket/test_socket.rb +++ b/test/socket/test_socket.rb @@ -478,7 +478,7 @@ class TestSocket < Test::Unit::TestCase end while IO.select([r], nil, nil, 0.1).nil? n end - timeout = (defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? ? 120 : 30) # for --jit-wait + timeout = (defined?(RubyVM::JIT) && RubyVM::JIT.enabled? ? 120 : 30) # for --jit-wait assert_equal([[s1],[],[]], IO.select([s1], nil, nil, timeout)) msg, _, _, stamp = s1.recvmsg assert_equal("a", msg) diff --git a/tool/lib/minitest/unit.rb b/tool/lib/minitest/unit.rb index f70762e5d5..ddd7cfe74d 100644 --- a/tool/lib/minitest/unit.rb +++ b/tool/lib/minitest/unit.rb @@ -973,7 +973,7 @@ module MiniTest puts if @verbose $stdout.flush - unless defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # compiler process is wrongly considered as leak + unless defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # compiler process is wrongly considered as leak leakchecker.check("#{inst.class}\##{inst.__name__}") end diff --git a/tool/lib/test/unit/core_assertions.rb b/tool/lib/test/unit/core_assertions.rb index abd0e45035..118c0d111b 100644 --- a/tool/lib/test/unit/core_assertions.rb +++ b/tool/lib/test/unit/core_assertions.rb @@ -115,7 +115,7 @@ module Test def assert_no_memory_leak(args, prepare, code, message=nil, limit: 2.0, rss: false, **opt) # TODO: consider choosing some appropriate limit for MJIT and stop skipping this once it does not randomly fail - pend 'assert_no_memory_leak may consider MJIT memory usage as leak' if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? + pend 'assert_no_memory_leak may consider MJIT memory usage as leak' if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? require_relative '../../memory_status' raise MiniTest::Skip, "unsupported platform" unless defined?(Memory::Status) diff --git a/tool/test/testunit/test_hideskip.rb b/tool/test/testunit/test_hideskip.rb index 13d887189e..e90be5da32 100644 --- a/tool/test/testunit/test_hideskip.rb +++ b/tool/test/testunit/test_hideskip.rb @@ -6,7 +6,7 @@ class TestHideSkip < Test::Unit::TestCase assert_not_match(/^ *1\) Skipped/, hideskip) assert_match(/^ *1\) Skipped/, hideskip("--show-skip")) output = hideskip("--hide-skip") - output.gsub!(/Successful MJIT finish\n/, '') if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? + output.gsub!(/Successful MJIT finish\n/, '') if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? assert_match(/assertions\/s.\n+1 tests, 0 assertions, 0 failures, 0 errors, 1 skips/, output) end diff --git a/tool/test/testunit/test_parallel.rb b/tool/test/testunit/test_parallel.rb index 44e9eb18d8..fa87ca53ab 100644 --- a/tool/test/testunit/test_parallel.rb +++ b/tool/test/testunit/test_parallel.rb @@ -6,7 +6,7 @@ module TestParallel PARALLEL_RB = "#{File.dirname(__FILE__)}/../../lib/test/unit/parallel.rb" TESTS = "#{File.dirname(__FILE__)}/tests_for_parallel" # use large timeout for --jit-wait - TIMEOUT = EnvUtil.apply_timeout_scale(defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? ? 100 : 30) + TIMEOUT = EnvUtil.apply_timeout_scale(defined?(RubyVM::JIT) && RubyVM::JIT.enabled? ? 100 : 30) class TestParallelWorker < Test::Unit::TestCase def setup diff --git a/tool/test/webrick/test_httpserver.rb b/tool/test/webrick/test_httpserver.rb index 4133be85ad..f905ff04e8 100644 --- a/tool/test/webrick/test_httpserver.rb +++ b/tool/test/webrick/test_httpserver.rb @@ -253,7 +253,7 @@ class TestWEBrickHTTPServer < Test::Unit::TestCase server.virtual_host(WEBrick::HTTPServer.new(vhost_config)) Thread.pass while server.status != :Running - sleep 1 if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # server.status behaves unexpectedly with --jit-wait + sleep 1 if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # server.status behaves unexpectedly with --jit-wait assert_equal(1, started, log.call) assert_equal(0, stopped, log.call) assert_equal(0, accepted, log.call) diff --git a/tool/test/webrick/test_server.rb b/tool/test/webrick/test_server.rb index 815cc3ce39..0fd3f3b63b 100644 --- a/tool/test/webrick/test_server.rb +++ b/tool/test/webrick/test_server.rb @@ -65,7 +65,7 @@ class TestWEBrickServer < Test::Unit::TestCase } TestWEBrick.start_server(Echo, config){|server, addr, port, log| true while server.status != :Running - sleep 1 if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # server.status behaves unexpectedly with --jit-wait + sleep 1 if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # server.status behaves unexpectedly with --jit-wait assert_equal(1, started, log.call) assert_equal(0, stopped, log.call) assert_equal(0, accepted, log.call) diff --git a/vm.c b/vm.c index faea6885a8..5beb6d0df4 100644 --- a/vm.c +++ b/vm.c @@ -3198,13 +3198,13 @@ core_hash_merge_kwd(VALUE hash, VALUE kw) /* Returns true if JIT is enabled */ static VALUE -mjit_enabled_p(VALUE _) +jit_enabled_p(VALUE _) { return mjit_enabled ? Qtrue : Qfalse; } static VALUE -mjit_pause_m(int argc, VALUE *argv, RB_UNUSED_VAR(VALUE self)) +jit_pause_m(int argc, VALUE *argv, RB_UNUSED_VAR(VALUE self)) { VALUE options = Qnil; VALUE wait = Qtrue; @@ -3221,7 +3221,7 @@ mjit_pause_m(int argc, VALUE *argv, RB_UNUSED_VAR(VALUE self)) } static VALUE -mjit_resume_m(VALUE _) +jit_resume_m(VALUE _) { return mjit_resume(); } @@ -3317,7 +3317,7 @@ Init_VM(void) VALUE opts; VALUE klass; VALUE fcore; - VALUE mjit; + VALUE jit; /* * Document-class: RubyVM @@ -3362,14 +3362,17 @@ Init_VM(void) rb_gc_register_mark_object(fcore); rb_mRubyVMFrozenCore = fcore; - /* ::RubyVM::MJIT + /* ::RubyVM::JIT * Provides access to the Method JIT compiler of MRI. * Of course, this module is MRI specific. */ - mjit = rb_define_module_under(rb_cRubyVM, "MJIT"); - rb_define_singleton_method(mjit, "enabled?", mjit_enabled_p, 0); - rb_define_singleton_method(mjit, "pause", mjit_pause_m, -1); - rb_define_singleton_method(mjit, "resume", mjit_resume_m, 0); + jit = rb_define_module_under(rb_cRubyVM, "JIT"); + rb_define_singleton_method(jit, "enabled?", jit_enabled_p, 0); + rb_define_singleton_method(jit, "pause", jit_pause_m, -1); + rb_define_singleton_method(jit, "resume", jit_resume_m, 0); + /* RubyVM::MJIT for short-term backward compatibility */ + rb_const_set(rb_cRubyVM, rb_intern("MJIT"), jit); + rb_deprecate_constant(rb_cRubyVM, "MJIT"); /* * Document-class: Thread -- cgit v1.2.3