Commit graph

44 commits

Author SHA1 Message Date
Takashi Kokubun
e1fee7f949
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]
2021-01-13 22:46:51 -08:00
Benoit Daloze
b4ec4a41c2 Guard all accesses to RubyVM::MJIT with defined?(RubyVM::MJIT) &&
* Otherwise those tests, etc cannot run on alternative Ruby implementations.
2020-12-04 16:45:54 +01:00
Yusuke Endoh
2e7d886311 test/lib/jit_support.rb: Let JIT tests skip on centos8
It has the same issue as RHEL 8.  k0kubun said he will fix later
2020-05-12 17:48:31 +09:00
Takashi Kokubun
9aa5fe1bf8
Split compile and link for MinGW support
MinGW test_jit fails with no error message. Perhaps linker flags should
not be passed when compilation is happening.

Anyway splitting these stages doesn't matter for performance. So let me
just split it to fix the issue. Probably this helps Solaris's issue too.
2020-05-03 16:41:25 -07:00
Takashi Kokubun
0776198486
Debug Solaris's MJIT failure
using -Winvalid-pch

20200501T170004Z.fail.html.gz
2020-05-03 15:49:51 -07:00
Takashi Kokubun
a218cbdf31
Skip pdb corruption on Visual Studio 2015 as well
It turned out that the pdb corruption happens on Visual Studio 2015 as
well.
32602953/job/3gj43q18wqeiy729
2020-05-03 00:41:28 -07:00
Takashi Kokubun
72c0612c40
Skip Solaris RubyCI TestJIT for now
to be investigated later
20200501T160004Z.fail.html.gz
2020-05-01 10:40:44 -07:00
Takashi Kokubun
41bbdd7806
Skip MinGW TestJIT* and macOS TestJITDebug failures
caused by 818d6d3336, for now.

I'll take a look at them tomorrow.
2020-05-01 03:08:51 -07:00
Yusuke Endoh
847e25975c Skip JIT tests on riscv64 due to SEGV of cc1 2020-04-20 22:48:10 +09:00
Takashi Kokubun
2832ba80d6
The pdb header error is printed at stdout
32278754/job/90jmky2jq2k0wjv8
2020-04-18 18:40:01 -07:00
Takashi Kokubun
f8b79ef567
Compilation error does not impact exit status
We failed to ignore
32245902/job/xcfxw67uexxysvni
2020-04-17 10:11:47 -07:00
Takashi Kokubun
f888626552
Fix logic to detect vs120
MJIT_CC seems not defined
32161572/job/u5sw8yn4in87heki
2020-04-13 23:48:40 -07:00
Takashi Kokubun
e667750364
Add missing call in 70b7304f03 2020-04-13 23:11:51 -07:00
Takashi Kokubun
70b7304f03
Ignore AppVeyor vs120's pdb corruption
We tried to fix this like https://github.com/ruby/ruby/pull/3029, but it
didn't work. The failure has never been helpful for developing MJIT, and
currently it's not prioritized to be fixed. Until we try to figure out
the root cause on AppVeyor vs120, let's optionally disable testing when
the random corruption happens.
2020-04-13 23:08:25 -07:00
Takashi Kokubun
b736ea63bd
Optimize exivar access on JIT-ed getivar
JIT support of dd723771c1.

$ benchmark-driver -v --rbenv 'before;before --jit;after --jit' benchmark/mjit_exivar.yml --repeat-count=4
before: ruby 2.8.0dev (2020-03-30T12:32:26Z master e5db3da9d3) [x86_64-linux]
before --jit: ruby 2.8.0dev (2020-03-30T12:32:26Z master e5db3da9d3) +JIT [x86_64-linux]
after --jit: ruby 2.8.0dev (2020-03-31T05:57:24Z mjit-exivar 128625baec) +JIT [x86_64-linux]
Calculating -------------------------------------
                         before  before --jit  after --jit
         mjit_exivar    57.944M       53.579M      54.471M i/s -    200.000M times in 3.451588s 3.732772s 3.671687s

Comparison:
                      mjit_exivar
              before:  57944345.1 i/s
         after --jit:  54470876.7 i/s - 1.06x  slower
        before --jit:  53579483.4 i/s - 1.08x  slower
2020-03-30 23:16:35 -07:00
Takashi Kokubun
9745e90197
Propagate JIT skip to all tests 2020-03-06 20:19:56 -08:00
Yusuke Endoh
16415fefc1 test/lib/jit_support.rb: The path to icc was changed 2020-03-04 12:31:55 +09:00
Yusuke Endoh
6477d98e49 test/lib/jit_support.rb: Update the regexp for icc
MJIT_CC is always an absolute path.
2019-12-05 23:46:42 +09:00
Takashi Kokubun
5fbb4555b4
Prefer using MJIT_CC for JIT support check
because Solaris might have CC=cc and we'd like to check full path
MJIT_CC=/opt/developerstudio12.5/bin/cc instead.
2019-12-04 22:16:08 -08:00
Takashi Kokubun
b3ea0980db
Check MJIT support in one place
to fix test failure on trunk-no-mjit
https://gist.github.com/ko1/32ab982ffd7555988818773c08f97123
2019-12-01 10:53:59 -08:00
Takashi Kokubun
4ccb49bad3
Enforce --jit-debug test by another way 2019-10-15 22:47:20 -07:00
Takashi Kokubun
5d8f112505
RubyVM::MJIT.pause(wait: true) should wait
for all compilations and compaction.

Prior to this commit, the last-compiled code has not been used because
MJIT worker is stopped before setting the code, and compaction has also
been skipped.

But it was not intentional and `wait: true` pause should wait until
those two things by its feature.
2019-09-26 16:28:34 +09:00
Takashi Kokubun
cda5745c1b
Automatically detect missing symbols
which are usually optimized away by -O3.

This CI can detect missing exports like
ea84a68075 which was needed for
761346a960.
2019-09-01 16:31:15 +09:00
Hiroshi SHIBATA
f9a2440866
Restore support library for only test files. 2019-07-09 21:04:07 +09:00
Hiroshi SHIBATA
c3c0e3f5c9 Move to tool/lib from test/lib. 2019-07-02 07:59:54 +09:00
k0kubun
d31cbd4ff9 test_jit.rb: change format of test error output
to avoid breaking redmine quote like
https://bugs.ruby-lang.org/issues/15522

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66781 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-01-10 14:55:24 +00:00
k0kubun
fa3fda1c62 jit_support.rb: deal with -std=c99 flag
CC is changed from "icc" to "icc -std=c99" by r66605.

20181228T130003Z.fail.html.gz

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66615 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-28 14:12:42 +00:00
k0kubun
45918161a8 jit_support.rb: skip testing MJIT on oracle developer studio
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66590 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-27 14:53:02 +00:00
nobu
f837601cdb mjit_build_dir: separate MJIT_BUILD_DIR
* Makefile.in (mjit_build_dir.so): separate MJIT_BUILD_DIR to
  eliminate the feature for test-all after installation.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65587 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-07 02:49:26 +00:00
nobu
b11b804f8f Revert "mjit_build_dir: separate MJIT_BUILD_DIR"
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65566 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-06 05:14:36 +00:00
nobu
a39080f59c mjit_build_dir: separate MJIT_BUILD_DIR
* Makefile.in (mjit_build_dir.so): separate MJIT_BUILD_DIR to
  eliminate the feature for test-all after installation.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65563 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-06 04:13:48 +00:00
k0kubun
e38a0b4606 revisit more MJIT test skips
r65308 passed both trunk-mjit and trunk-mjit-wait CIs. MJIT copy job
looks working fine. Then this commit skips 5 more tests. Some of them
were skipped in a very early stage and may still need to be skipped, but
I want to confirm them since they haven't been changed for a long time.

And this prefers having inline information on `RubyVM::MJIT.enabled?`.
This commit makes it easier to confirm whether there's suspicious test
skip by RubyVM::MJIT.enabled? or not.

After this commit, tentatively we're not skipping tests for MJIT other
than `assert_no_memory_leak` ones.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65311 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-10-22 15:49:22 +00:00
ko1
7eecc7b8b4 require 'rbconifg' earlier.
* test/lib/jit_support.rb: require rbconfig here.

* test/ruby/test_jit.rb: rbconfig should be required before.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65219 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-10-20 08:47:26 +00:00
k0kubun
1a7249bc03 test/lib/jit_support.rb: continue to skip test_jit
for icc since it's not supported yet but running on rubyci.

This reverts some part of r65175, r65176 and r65177.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65178 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-10-19 14:26:29 +00:00
k0kubun
2baf760cc2 test/lib/jit_support.rb: fire test_jit everywhere
That was a workaround to make rubyci green for a short term after the
MJIT merge. As we've done many portability fixes for MJIT, let's try
running test_jit on all rubyci platforms.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65175 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-10-19 14:03:37 +00:00
k0kubun
510cd06c78 mjit.c: add :wait option to RubyVM::MJIT.pause
and wait until JIT queue is flushed when wait option is not passed or
`wait: true` is passed.

vm.c: ditto

test/ruby/test_rubyvm_mjit.rb: added test for pause/resume

test/lib/jit_support.rb: allow retrying MJIT on JITSupport level
test/ruby/test_jit.rb: ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64250 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-08-09 09:58:07 +00:00
k0kubun
11974fc010 mjit.c: allow using MJIT header in build directory
when $MJIT_SEARCH_BUILD_DIR is set.

If prefix path is owned by root, `make install` needs to be run by root.
But in general we don't want to run `make test-all`, and also running
`make test-all` currently fails due to permission tests of rdoc and rubygems.
Thus, prior to this commit, specifying a prefix like "/usr/local" could
mean there was no way to pass test-all.

So we should not depend on `make install` for `make test-all`. Thus I
reverted r64104 and r64103, and applied this workaround to pass `make
test-all` without `make install`.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64143 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-07-31 12:43:06 +00:00
k0kubun
51f948727d test_jit.rb: test unload_units
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64072 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-07-27 05:52:01 +00:00
normal
6df880c862 test/lib/jit_support.rb: spelling: s/skiped/skipped/
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63584 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-06-05 22:32:41 +00:00
k0kubun
f13b0fd8f3 jit_support.rb: debug check_support stderr
rubyci freebsd11zfs doesn't pass this check. I want to know the stderr.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63507 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-27 07:33:18 +00:00
k0kubun
6d38935605 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.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63504 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-27 05:47:43 +00:00
k0kubun
d025f64a9f test_open3.rb: let test_popen2 work with --jit
test/lib/jit_support.rb: add .remove_mjit_logs to normalize stderr

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63289 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-04-28 09:22:07 +00:00
nobu
fa7fa92870 mjit.c: clean so file on Windows
* mjit.c (dlclose): use FreeLibrary to manage the reference count
  on the loaded module properly.

* mjit.c (clean_so_file): clean shared object file after unloaded,
  in-use files cannot be removed on Windows.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63273 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-04-27 07:39:00 +00:00
k0kubun
666cafbeff 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
2018-02-22 15:11:12 +00:00