Prepare for removing RubyVM::JIT (#5262)

This commit is contained in:
Takashi Kokubun 2021-12-13 23:07:46 -08:00 коммит произвёл GitHub
Родитель a2839d7178
Коммит 1a63468831
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
32 изменённых файлов: 64 добавлений и 67 удалений

Просмотреть файл

@ -437,8 +437,6 @@ Excluding feature bug fixes.
* `--mjit-verbose` and `--mjit-warning` output "JIT cancel" when JIT-ed
code is disabled because TracePoint or GC.compact is used.
* `RubyVM::MJIT` is renamed to `RubyVM::JIT`. [[Feature #17490]]
### YJIT: New experimental in-process JIT compiler
New JIT compiler available as an experimental feature. [[Feature #18229]]

Просмотреть файл

@ -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::JIT) && RubyVM::JIT.enabled?
if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled?
__bmdv_ruby_i = 0
while __bmdv_ruby_i < 10000 # jit_min_calls
#{job.script}
__bmdv_ruby_i += 1
end
RubyVM::JIT.pause # compile
RubyVM::MJIT.pause # compile
#{job.script}
RubyVM::JIT.resume; RubyVM::JIT.pause # recompile
RubyVM::MJIT.resume; RubyVM::MJIT.pause # recompile
#{job.script}
RubyVM::JIT.resume; RubyVM::JIT.pause # recompile 2
RubyVM::MJIT.resume; RubyVM::MJIT.pause # recompile 2
end
EOS
job

Просмотреть файл

@ -135,7 +135,7 @@ class BenchmarkDriver::Runner::MjitExec
nil
end
% end
RubyVM::JIT.pause if defined?(RubyVM::JIT) && RubyVM::JIT.enabled?
RubyVM::MJIT.pause if defined?(RubyVM::MJIT) && RubyVM::MJIT.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::JIT.pause if defined?(RubyVM::JIT) && RubyVM::JIT.enabled?
RubyVM::MJIT.pause if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled?
def vm
t = Process.clock_gettime(Process::CLOCK_MONOTONIC)
@ -228,7 +228,7 @@ class BenchmarkDriver::Runner::MjitExec
jit
jit
RubyVM::JIT.pause if defined?(RubyVM::JIT) && RubyVM::JIT.enabled?
RubyVM::MJIT.pause if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled?
File.write(<%= result.dump %>, jit)
EOS
end

Просмотреть файл

@ -383,7 +383,7 @@ def assert_normal_exit(testsrc, *rest, timeout: nil, **opt)
end
def assert_finish(timeout_seconds, testsrc, message = '')
if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # for --jit-wait
if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # for --jit-wait
timeout_seconds *= 3
end
newtest

Просмотреть файл

@ -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::JIT) && RubyVM::JIT.enabled? } do
guard_not -> { defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? } do
it "raises Errno::EPIPE if sync=false and the read end is closed" do
@w.sync = false
@w.write "foo"

Просмотреть файл

@ -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::JIT) && RubyVM::JIT.enabled? } do
guard_not -> { defined?(RubyVM::MJIT) && RubyVM::MJIT.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/)

Просмотреть файл

@ -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?(:JIT) && RubyVM::JIT.enabled? ?
<%=n%> = <%if n=='RUBY_DESCRIPTION' %>RubyVM.const_defined?(:JIT) && RubyVM::MJIT.enabled? ?
<%=arg['RUBY_DESCRIPTION_WITH_JIT'].inspect%> :
<%end%><%=v.inspect%>
% }

Просмотреть файл

@ -7,7 +7,7 @@ class TestBugReporter < Test::Unit::TestCase
skip if ENV['RUBY_ON_BUG']
description = RUBY_DESCRIPTION
description = description.sub(/\+MJIT /, '') if defined?(RubyVM::JIT) && RubyVM::JIT.enabled?
description = description.sub(/\+MJIT /, '') if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled?
description = description.sub(/\+YJIT /, '') if defined?(RubyVM::YJIT.enabled?) && RubyVM::YJIT.enabled?
expected_stderr = [
:*,

Просмотреть файл

@ -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::JIT.enabled?) and RubyVM::JIT.enabled?
if defined?(RubyVM::MJIT.enabled?) and RubyVM::MJIT.enabled?
timeout = 5 # for --jit-wait
end
Timeout.timeout(timeout) do

Просмотреть файл

@ -216,7 +216,7 @@ module DRbCore
def test_06_timeout
omit if RUBY_PLATFORM.include?("armv7l-linux")
omit if RUBY_PLATFORM.include?("sparc-solaris2.10")
omit if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # expecting a certain delay is difficult for --jit-wait CI
omit if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # expecting a certain delay is difficult for --jit-wait CI
Timeout.timeout(60) do
ten = Onecky.new(10)
assert_raise(Timeout::Error) do

Просмотреть файл

@ -75,7 +75,7 @@ module JITSupport
end
def remove_mjit_logs(stderr)
if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # utility for -DFORCE_MJIT_ENABLE
if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # utility for -DFORCE_MJIT_ENABLE
stderr.gsub(/^MJIT warning: Skipped to compile unsupported instruction: \w+\n/m, '')
else
stderr

Просмотреть файл

@ -78,7 +78,7 @@ EOS
def test_read_body_block_mod
# http://ci.rvm.jp/results/trunk-mjit-wait@silicon-docker/3019353
if defined?(RubyVM::JIT) ? RubyVM::JIT.enabled? : defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled?
if defined?(RubyVM::MJIT) ? RubyVM::MJIT.enabled? : defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled?
omit 'too unstable with --jit-wait, and extending read_timeout did not help it'
end
IO.pipe do |r, w|

Просмотреть файл

@ -9,7 +9,7 @@ class Reline::WithinPipeTest < Reline::TestCase
@reader, @output_writer = IO.pipe(@encoding)
@output = Reline.output = @output_writer
@config = Reline.send(:core).config
@config.keyseq_timeout *= 600 if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # for --jit-wait CI
@config.keyseq_timeout *= 600 if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # for --jit-wait CI
@line_editor = Reline.send(:core).line_editor
end

Просмотреть файл

@ -402,7 +402,7 @@ module TupleSpaceTestModule
end
def test_cancel_02
skip 'this test is unstable with --jit-wait' if defined?(RubyVM::JIT) && RubyVM::JIT.enabled?
skip 'this test is unstable with --jit-wait' if defined?(RubyVM::MJIT) && RubyVM::MJIT.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::JIT) && RubyVM::JIT.enabled?
skip 'timeout-based test becomes unstable with --jit-wait' if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled?
with_timeout(30) {_test_do_reply_local}
end

Просмотреть файл

@ -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::JIT) && RubyVM::JIT.enabled?
skip 'This is unstable on GitHub Actions --jit-wait. TODO: debug it' if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled?
max = 1000
assert_equal(max, max.times{
Fiber.new{}

Просмотреть файл

@ -655,7 +655,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::JIT) && RubyVM::JIT.enabled?
skip "MJIT has busy wait on GC. This sometimes fails with --jit." if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled?
skip "multiple threads already active" if Thread.list.size > 1
msg = 'r58534 [ruby-core:80969] [Backport #13533]'
@ -1610,7 +1610,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::JIT) && RubyVM::JIT.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::MJIT) && RubyVM::MJIT.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!"
@ -2258,7 +2258,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::JIT) && RubyVM::JIT.enabled?
skip 'this randomly fails with MJIT' if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled?
feature2250 = '[ruby-core:26222]'
pre = 'ft2250'

Просмотреть файл

@ -1108,7 +1108,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::JIT.pause
RubyVM::MJIT.pause
proc {}.call
end;
end

Просмотреть файл

@ -510,7 +510,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::JIT) && RubyVM::JIT.enabled?
skip 'currently JIT-ed code always creates a new stack frame' if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled?
bug16161 = '[ruby-core:94881]'
tailcall("#{<<-"begin;"}\n#{<<~"end;"}")

Просмотреть файл

@ -1718,7 +1718,7 @@ class TestProcess < Test::Unit::TestCase
Process.wait pid
assert_send [sig_r, :wait_readable, 5], 'self-pipe not readable'
end
if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # checking -DMJIT_FORCE_ENABLE. It may trigger extra SIGCHLD.
if defined?(RubyVM::MJIT) && RubyVM::MJIT.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]"

Просмотреть файл

@ -10,7 +10,7 @@ class TestRubyOptions < Test::Unit::TestCase
def self.yjit_enabled? = defined?(RubyVM::YJIT.enabled?) && RubyVM::YJIT.enabled?
NO_JIT_DESCRIPTION =
if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # checking -DMJIT_FORCE_ENABLE
if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # checking -DMJIT_FORCE_ENABLE
RUBY_DESCRIPTION.sub(/\+MJIT /, '')
elsif yjit_enabled? # checking -DYJIT_FORCE_ENABLE
RUBY_DESCRIPTION.sub(/\+YJIT /, '')
@ -146,7 +146,7 @@ class TestRubyOptions < Test::Unit::TestCase
def test_verbose
assert_in_out_err([{'RUBY_YJIT_ENABLE' => nil}, "-vve", ""]) do |r, e|
assert_match(VERSION_PATTERN, r[0])
if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? && !mjit_force_enabled? # checking -DMJIT_FORCE_ENABLE
if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? && !mjit_force_enabled? # checking -DMJIT_FORCE_ENABLE
assert_equal(NO_JIT_DESCRIPTION, r[0])
elsif self.class.yjit_enabled? && !yjit_force_enabled? # checking -DYJIT_FORCE_ENABLE
assert_equal(NO_JIT_DESCRIPTION, r[0])
@ -214,7 +214,7 @@ class TestRubyOptions < Test::Unit::TestCase
assert_match(VERSION_PATTERN, r[0])
if ENV['RUBY_YJIT_ENABLE'] == '1'
assert_equal(NO_JIT_DESCRIPTION, r[0])
elsif defined?(RubyVM::JIT) && RubyVM::JIT.enabled? || self.class.yjit_enabled? # checking -D(M|Y)JIT_FORCE_ENABLE
elsif defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? || self.class.yjit_enabled? # checking -D(M|Y)JIT_FORCE_ENABLE
assert_equal(EnvUtil.invoke_ruby(['-e', 'print RUBY_DESCRIPTION'], '', true).first, r[0])
else
assert_equal(RUBY_DESCRIPTION, r[0])
@ -255,7 +255,7 @@ class TestRubyOptions < Test::Unit::TestCase
].each do |args|
assert_in_out_err([env] + args) do |r, e|
assert_match(VERSION_PATTERN_WITH_JIT, r[0])
if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # checking -DMJIT_FORCE_ENABLE
if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # checking -DMJIT_FORCE_ENABLE
assert_equal(RUBY_DESCRIPTION, r[0])
else
assert_equal(EnvUtil.invoke_ruby([env, '--mjit', '-e', 'print RUBY_DESCRIPTION'], '', true).first, r[0])

Просмотреть файл

@ -20,13 +20,13 @@ class TestRubyVMJIT < Test::Unit::TestCase
eval("def mjit#{i}; end; mjit#{i}")
i += 1
end
print RubyVM::JIT.pause
print RubyVM::JIT.pause
print RubyVM::MJIT.pause
print RubyVM::MJIT.pause
while i < 10
eval("def mjit#{i}; end; mjit#{i}")
i += 1
end
print RubyVM::JIT.pause # no JIT here
print RubyVM::MJIT.pause # no JIT here
EOS
assert_equal('truefalsefalse', out)
assert_equal(
@ -39,7 +39,7 @@ class TestRubyVMJIT < Test::Unit::TestCase
out, err = eval_with_jit(<<~'EOS', verbose: 1, min_calls: 1, wait: false)
def a() end; a
def b() end; b
RubyVM::JIT.pause
RubyVM::MJIT.pause
EOS
assert_equal(
2, err.scan(/#{JITSupport::JIT_SUCCESS_PREFIX}/).size,
@ -58,7 +58,7 @@ class TestRubyVMJIT < Test::Unit::TestCase
eval("def mjit#{i}; end; mjit#{i}")
i += 1
end
print RubyVM::JIT.pause
print RubyVM::MJIT.pause
EOS
assert_equal('true', out)
end
@ -70,8 +70,8 @@ class TestRubyVMJIT < Test::Unit::TestCase
eval("def mjit#{i}; end; mjit#{i}")
i += 1
end
print RubyVM::JIT.pause(wait: false)
print RubyVM::JIT.pause(wait: false)
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)
@ -79,11 +79,11 @@ class TestRubyVMJIT < Test::Unit::TestCase
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
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)

Просмотреть файл

@ -2106,7 +2106,7 @@ CODE
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::JIT) && RubyVM::JIT.enabled?
sleep 1 if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled?
t.add_trace_func proc{|ev, file, line, *args|
if file == __FILE__

Просмотреть файл

@ -317,7 +317,7 @@ class TestThread < Test::Unit::TestCase
s += 1
end
Thread.pass until t.stop?
sleep 1 if defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # t.stop? behaves unexpectedly with --jit-wait
sleep 1 if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # t.stop? behaves unexpectedly with --jit-wait
assert_equal(1, s)
t.wakeup
Thread.pass while t.alive?
@ -1369,7 +1369,7 @@ q.pop
opts = { timeout: 5, timeout_error: nil }
# prevent SIGABRT from slow shutdown with MJIT
opts[:reprieve] = 3 if defined?(RubyVM::JIT) && RubyVM::JIT.enabled?
opts[:reprieve] = 3 if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled?
assert_normal_exit(<<-_end, '[Bug #8996]', **opts)
Thread.report_on_exception = false

Просмотреть файл

@ -5,7 +5,7 @@ require 'timeout'
class TestGemStreamUI < Gem::TestCase
# increase timeout with MJIT for --jit-wait testing
mjit_enabled = defined?(RubyVM::JIT) ? RubyVM::JIT.enabled? : defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled?
mjit_enabled = defined?(RubyVM::MJIT) ? RubyVM::MJIT.enabled? : defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled?
SHORT_TIMEOUT = (RUBY_ENGINE == "ruby" && !mjit_enabled) ? 0.1 : 1.0
module IsTty

Просмотреть файл

@ -486,7 +486,7 @@ class TestSocket < Test::Unit::TestCase
end while IO.select([r], nil, nil, 0.1).nil?
n
end
timeout = (defined?(RubyVM::JIT) && RubyVM::JIT.enabled? ? 120 : 30) # for --jit-wait
timeout = (defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? ? 120 : 30) # for --jit-wait
assert_equal([[s1],[],[]], IO.select([s1], nil, nil, timeout))
msg, _, _, stamp = s1.recvmsg
assert_equal("a", msg)

Просмотреть файл

@ -108,7 +108,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::JIT) && RubyVM::JIT.enabled?
pend 'assert_no_memory_leak may consider MJIT memory usage as leak' if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled?
require_relative 'memory_status'
raise Test::Unit::PendedError, "unsupported platform" unless defined?(Memory::Status)

Просмотреть файл

@ -1533,7 +1533,7 @@ module Test
puts if @verbose
$stdout.flush
unless defined?(RubyVM::JIT) && RubyVM::JIT.enabled? # compiler process is wrongly considered as leak
unless defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? # compiler process is wrongly considered as leak
leakchecker.check("#{inst.class}\##{inst.__name__}")
end

Просмотреть файл

@ -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::JIT) && RubyVM::JIT.enabled?
output.gsub!(/Successful MJIT finish\n/, '') if defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled?
assert_match(/assertions\/s.\n+1 tests, 0 assertions, 0 failures, 0 errors, 1 skips/, output)
end

Просмотреть файл

@ -6,7 +6,7 @@ module TestParallel
PARALLEL_RB = "#{__dir__}/../../lib/test/unit/parallel.rb"
TESTS = "#{__dir__}/tests_for_parallel"
# use large timeout for --jit-wait
TIMEOUT = EnvUtil.apply_timeout_scale(defined?(RubyVM::JIT) && RubyVM::JIT.enabled? ? 100 : 30)
TIMEOUT = EnvUtil.apply_timeout_scale(defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled? ? 100 : 30)
class TestParallelWorker < Test::Unit::TestCase
def setup

Просмотреть файл

@ -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::JIT) && RubyVM::JIT.enabled? # server.status behaves unexpectedly with --jit-wait
sleep 1 if defined?(RubyVM::MJIT) && RubyVM::MJIT.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)

Просмотреть файл

@ -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::JIT) && RubyVM::JIT.enabled? # server.status behaves unexpectedly with --jit-wait
sleep 1 if defined?(RubyVM::MJIT) && RubyVM::MJIT.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)

23
vm.c
Просмотреть файл

@ -3261,13 +3261,13 @@ core_hash_merge_kwd(VALUE hash, VALUE kw)
/* Returns true if JIT is enabled */
static VALUE
jit_enabled_p(VALUE _)
mjit_enabled_p(VALUE _)
{
return RBOOL(mjit_enabled);
}
static VALUE
jit_pause_m(int argc, VALUE *argv, RB_UNUSED_VAR(VALUE self))
mjit_pause_m(int argc, VALUE *argv, RB_UNUSED_VAR(VALUE self))
{
VALUE options = Qnil;
VALUE wait = Qtrue;
@ -3284,7 +3284,7 @@ jit_pause_m(int argc, VALUE *argv, RB_UNUSED_VAR(VALUE self))
}
static VALUE
jit_resume_m(VALUE _)
mjit_resume_m(VALUE _)
{
return mjit_resume();
}
@ -3421,7 +3421,6 @@ Init_VM(void)
VALUE opts;
VALUE klass;
VALUE fcore;
VALUE jit;
/*
* Document-class: RubyVM
@ -3470,17 +3469,17 @@ Init_VM(void)
rb_gc_register_mark_object(fcore);
rb_mRubyVMFrozenCore = fcore;
/* ::RubyVM::JIT
/* ::RubyVM::MJIT
* Provides access to the Method JIT compiler of MRI.
* Of course, this module is MRI specific.
*/
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");
VALUE 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);
/* RubyVM::JIT for short-term backward compatibility */
rb_const_set(rb_cRubyVM, rb_intern("JIT"), mjit);
rb_deprecate_constant(rb_cRubyVM, "JIT");
/*
* Document-class: Thread