summaryrefslogtreecommitdiff
path: root/tool
AgeCommit message (Collapse)Author
2020-06-22Compile opt_send for opt_* only when cc has ISeqTakashi Kokubun
because opt_nil/opt_not/opt_eq populates cc even when it doesn't fallback to opt_send_without_block because of vm_method_cfunc_is. ``` $ benchmark-driver -v --rbenv 'before --jit;after --jit' benchmark/mjit_opt_cc_insns.yml --repeat-count=4 before --jit: ruby 2.8.0dev (2020-06-22T08:11:24Z master d231b8f95b) +JIT [x86_64-linux] after --jit: ruby 2.8.0dev (2020-06-22T08:53:27Z master e1125879ed) +JIT [x86_64-linux] last_commit=Compile opt_send for opt_* only when cc has ISeq Calculating ------------------------------------- before --jit after --jit mjit_nil?(1) 54.106M 73.693M i/s - 40.000M times in 0.739288s 0.542795s mjit_not(1) 53.398M 74.477M i/s - 40.000M times in 0.749090s 0.537075s mjit_eq(1, nil) 7.427M 6.497M i/s - 8.000M times in 1.077136s 1.231326s Comparison: mjit_nil?(1) after --jit: 73692594.3 i/s before --jit: 54106108.4 i/s - 1.36x slower mjit_not(1) after --jit: 74477487.9 i/s before --jit: 53398125.0 i/s - 1.39x slower mjit_eq(1, nil) before --jit: 7427105.9 i/s after --jit: 6497063.0 i/s - 1.14x slower ``` Actually opt_eq becomes slower by this. Maybe it's indeed using opt_send_without_block, but I'll approach that one in another commit.
2020-06-21Verify builtin inline annotation with VM_CHECK_MODE (#3244)Takashi Kokubun
* Verify builtin inline annotation with VM_CHECK_MODE * Remove static to fix the link issue on MJIT Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
2020-06-21Prefer ruby_install_name as runnerNobuyoshi Nakada
`Gem::Commands::EnvironmentCommand` expects that `Gem.ruby` has the transformed basename.
2020-06-20Introduce Primitive.attr! to annotate 'inline' (#3242)Takashi Kokubun
[Feature #15589] Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
2020-06-19[Feature #16254] Allow `Primitive.func` styleNobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/3165
2020-06-19[Feature #16254] Allow `__builtin.func` styleNobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/3165
2020-06-19Removed sdbm entries from toolchaninsHiroshi SHIBATA
Notes: Merged: https://github.com/ruby/ruby/pull/3234
2020-06-17Remove obsoleted opt_call_c_function insn (#3232)Takashi Kokubun
* Remove obsoleted opt_call_c_function insn * Keep opt_call_c_function with DEFINE_INSN_IF Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
2020-06-15Prefer String#each_byte when using a blockNobuyoshi Nakada
2020-06-15tool/lib/minitest/unit.rb: Reproducible shuffle of test suitesYusuke Endoh
... based on CRC32 of names of the test suites. Formerly, `make test-all` randomized the order of the test suites by using `Array#shuffle`. It also shows `--seed N` to reproduce the order, but it was not reproducible when a suite set is different. This change sorts the suites by CRC32 hash of the suite names with a salt generated by the seed.
2020-06-15A help message to `tool/sync_default_gems.rb`David Rodríguez
Notes: Merged: https://github.com/ruby/ruby/pull/3223
2020-06-14Support arguments of singleton methodNobuyoshi Nakada
2020-06-14Fixed up rest, keywords, keyword rest and block argumentsNobuyoshi Nakada
2020-06-13Make __builtin_cexpr! and __builtin_cstmt! work againTakashi Kokubun
with Ripper. a3e6f52c17061f012c4e638b3343b57752ed7603 introduced __builtin_cexpr! and __builtin_cstmt!, but nobody has used them and then they broke on 79292b30884ebcd8be028a7f3c9ccafd7759f2ae by undefined `params`. This patch fixes the undefined `params`, but still we're not using them yet.
2020-06-13Added install-dbgNobuyoshi Nakada
Scripts to run the interpreter via debugger.
2020-06-05[rubygems/rubygems] Test against compact_index 0.13.0David Rodríguez
https://github.com/rubygems/rubygems/commit/9f15b595ab Notes: Merged: https://github.com/ruby/ruby/pull/3184
2020-06-05[rubygems/rubygems] Bump compact_index to 0.12.1David Rodríguez
https://github.com/rubygems/rubygems/commit/08374d0e4a Notes: Merged: https://github.com/ruby/ruby/pull/3184
2020-06-04Update leaked-globals [Bug #16934]Nobuyoshi Nakada
* match uppercase types which would be global, other than [BDT] * ignore `RUBY_` prefixed symbols
2020-06-03Fixed up 56ca006784dNobuyoshi Nakada
Run lldb just before sending ABRT or KILL signal. Some tests terminate child processes by TERM signal intentionally.
2020-06-02run lldb to investigate the stuck process.Koichi Sasada
Before sending signals (ABRT, KILL), use lldb to show the backtrace of a stuck process. This commit also reverts recent changes for terminate().
2020-06-01add more 2 sec.Koichi Sasada
After sending SEGV signal, but no response. Try to add 2 more seconds. If we can not have a detailed log, we need to use gdb/lldb to show the backtrace.
2020-06-01send SEGV to show backtrace.Koichi Sasada
send SEGV to terminate the remaining process before sending ABRT and KILL to show the backtrace.
2020-05-30runnable.rb: ignore broken symlink error on Windows [ci skip]Nobuyoshi Nakada
2020-05-28Add a debug_counter for JIT cancel on leaveTakashi Kokubun
2020-05-28Remove Ruby <2.2 support from tool/lib/vcs.rbJeremy Evans
BASERUBY now requires at least Ruby 2.2, so there is no point trying to support older ruby versions here. Notes: Merged: https://github.com/ruby/ruby/pull/2947
2020-05-28Use Module#name instead of #inspectYusuke Endoh
Coverage measurement had failed since 7d5da30c9e9c572f6ef0aaccc1ca0e724966e2ee https://github.com/ruby/actions/runs/708557030?check_suite_focus=true
2020-05-27Don't convert bundler man pages from mdoc to manJeremy Evans
These man pages are already in man format and assuming they are mdoc format breaks things. Fixes [Bug #16823] Notes: Merged: https://github.com/ruby/ruby/pull/3147
2020-05-27test/drb/test_drbssl.rb: skip LeakChecker as openssl keeps /dev/randomYusuke Endoh
and /dev/urandom intentionally. OpenSSL::PKey::RSA.new opens the two random generators and keeps the file descriptors. https://github.com/openssl/openssl/blob/93f99b681ab5a1cf7062053323e09b0cad5ff854/crypto/rand/rand_unix.c#L674 They are detected by the LeakChecker as fd leak, but it is intentional. http://rubyci.s3.amazonaws.com/graviton2/ruby-master/log/20200526T160005Z.log.html.gz ``` [ 597/20199] DRbTests::TestDRbSSLAry#test_01 = 0.29 s Leaked file descriptor: DRbTests::TestDRbSSLAry#test_01: 8 #<File::Stat dev=0x6, ino=11, mode=020666, nlink=1, uid=0, gid=0, rdev=0x109, size=0, blksize=4096, blocks=0, atime=2020-05-23 14:45:13.751999995 +0000, mtime=2020-05-23 14:45:13.751999995 +0000, ctime=2020-05-23 14:45:13.751999995 +0000> Leaked file descriptor: DRbTests::TestDRbSSLAry#test_01: 9 #<File::Stat dev=0x6, ino=10, mode=020666, nlink=1, uid=0, gid=0, rdev=0x108, size=0, blksize=4096, blocks=0, atime=2020-05-23 14:45:13.755999995 +0000, mtime=2020-05-23 14:45:13.755999995 +0000, ctime=2020-05-23 14:45:13.755999995 +0000> ```
2020-05-27fiddle: need to update configure after updating config toolsNobuyoshi Nakada
2020-05-23extlibs.rb: make symlink only if the target existsNobuyoshi Nakada
2020-05-23Fixed wrong usage rm_rf for cleanup the default gems in sync toolHiroshi SHIBATA
2020-05-20pure_parser.rb: get rid of an error at localed messagesNobuyoshi Nakada
2020-05-19Make builtin loader sources by RipperNobuyoshi Nakada
2020-05-17Reduce code size for rb_class_ofTakashi Kokubun
by inlining only hot path. === mame/optcarrot === $ benchmark-driver -v --rbenv 'before --jit;after --jit' benchmark.yml --repeat-count=24 --output=all before --jit: ruby 2.8.0dev (2020-05-18T05:21:31Z master 0e5a58b6bf) +JIT [x86_64-linux] after --jit: ruby 2.8.0dev (2020-05-18T06:12:04Z master 0e3d71a8d1) +JIT [x86_64-linux] last_commit=Reduce code size for rb_class_of Calculating ------------------------------------- before --jit after --jit Optcarrot Lan_Master.nes 71.62880463568773 70.95730063273503 fps 71.73973684273152 71.98447841929851 75.03923801841310 75.54262519509039 75.16300287174957 77.64029272984344 75.16834828625935 78.67861469580785 75.17670723726911 78.81879353707393 75.67637908020630 79.18188850392886 76.19843953215396 79.66484891814478 77.28166716118808 79.80278072861037 77.38509903325165 80.05859292679696 78.12693418455953 80.34624804808006 78.73654441746730 80.66326571254345 79.25387513454415 80.69760605740196 79.44137881689524 81.32053489212245 79.50497657368358 81.50250852553751 79.62401328582868 82.27544931834611 79.79178811723664 82.67455264522741 81.20275352937418 82.93857260493297 81.57027048640776 83.15019118788184 81.63373188649095 83.20728816044721 81.93420437766426 83.25027576772972 82.05716136357167 83.27072145898173 82.21070805525066 83.36008265822194 82.56924063784872 83.36112268888493 === benchmark-driver/sinatra === [rps] before: 13143.49 rps after: 13505.70 rps [inlined rb_class_of size] before: 11.5K after: 3.8K (calculated by `dwarftree --die inlined_subroutine --flat --merge --show-size`)
2020-05-17Mark some JIT-ed functions as COLDFUNCTakashi Kokubun
Put some functions which are unlikely to be called on JIT in .text.unlikely section to improve hot code's locality.
2020-05-17Added --test-order=nosort optionNobuyoshi Nakada
Run tests in the order given in the command line.
2020-05-16leakchecker.rb: show test nameNobuyoshi Nakada
When multiple autoclose IO objects are leaked too.
2020-05-14extlibs.rb: fixed Downloader.cache_file call and return valueNobuyoshi Nakada
`cache_dir` is an optinal argument but not a keyword argument, and the return value is a `Pathname`.
2020-05-12Stop always inlining not-optimized get/setivarTakashi Kokubun
As we have the optimization in _mjit_compile_ivar.erb, we don't use these functions if we successfully optimize ivars. Therefore it's consuming code size where we can't optimize it well. To decrease code size, we'd better avoid inlining them. ``` $ benchmark-driver -v --rbenv 'before --jit;after --jit' benchmark.yml --repeat-count=12 --output=all before --jit: ruby 2.8.0dev (2020-05-13T04:49:21Z master 61d451d6ce) +JIT [x86_64-linux] after --jit: ruby 2.8.0dev (2020-05-13T05:46:59Z master a072d323db) +JIT [x86_64-linux] Calculating ------------------------------------- before --jit after --jit Optcarrot Lan_Master.nes 69.8567095356444 73.0360609399857 fps 70.3283101279035 74.6106251902062 72.9135395729567 75.2797344839106 76.6944690546044 77.5705757485036 77.0027971817715 78.2269524040059 78.5069033659736 78.4457471014131 80.1873218604913 80.1273811685818 81.3079566400696 81.7148593303302 81.7285827817226 81.7637234555871 81.7657097839637 82.4520295422720 81.8310114206406 82.7532354379759 81.9886488857863 82.8358739858206 ```
2020-05-13Added test_gems.rb for setup dependenciesHiroshi SHIBATA
Notes: Merged: https://github.com/ruby/ruby/pull/3086
2020-05-12extlibs.rb: links in extracted directoryNobuyoshi Nakada
Allow to create symbolic links (if available) to share same or updated files. Notes: Merged: https://github.com/ruby/ruby/pull/3102
2020-05-12extlibs.rb: added variable referencesNobuyoshi Nakada
Reduce duplicate parts such as package name and version numbers. Notes: Merged: https://github.com/ruby/ruby/pull/3102
2020-05-10delete mk_builtin_binary.rb卜部昌平
To generate what is necessary via generic_erb.rb instead. Notes: Merged: https://github.com/ruby/ruby/pull/3097
2020-05-10delete mk_call_iseq_optimized.rb卜部昌平
To generate what is necessary via generic_erb.rb instead. Notes: Merged: https://github.com/ruby/ruby/pull/3097
2020-05-09rbuninstall.rb: show paths without destdir as well as rbinstall.rbNobuyoshi Nakada
2020-05-09rbuninstall.rb: get rid of errors when prefix ends with "/."Nobuyoshi Nakada
2020-05-09rbuninstall.rb: print output record separator instead of $\Nobuyoshi Nakada
2020-05-09rbinstall.rb: get rid of installing duplicate filesNobuyoshi Nakada
Should not overwrite ext/rubyvm/lib/forwardable/impl.rb by lib/forwardable/impl.rb.
2020-05-09rbinstall.rb: record bundled gem filesNobuyoshi Nakada
2020-05-08Workaround for Minitest5Hiroshi SHIBATA
Notes: Merged: https://github.com/ruby/ruby/pull/3087