aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Cosmetic changeKazuki Tsujimoto2020-06-271-1/+2
|
* Suppress "assigned but unused variable" warningsKazuki Tsujimoto2020-06-271-4/+4
|
* Add #deconstruct cache to find patternVladimir Dementyev2020-06-272-59/+74
|
* Optimize array pattern matching by caching #deconstruct valueVladimir Dementyev2020-06-272-16/+143
|
* Add pattern matching with arrays benchmarkVladimir Dementyev2020-06-271-0/+19
|
* * 2020-06-27 [ci skip]git2020-06-271-1/+1
|
* Removed no longer used flagsNobuyoshi Nakada2020-06-271-2/+0
|
* Not to rewrite node while compilingNobuyoshi Nakada2020-06-271-9/+4
| | | | | | Moved this hack mark to an argument to `compile_hash`. > Bad Hack: temporarily mark hash node with flag so > compile_hash can compile call differently.
* Avoid duplicated "when"s [ci skip]Takashi Kokubun2020-06-261-2/+2
|
* Add a NEWS placeholder for disposable cc [ci skip]Takashi Kokubun2020-06-261-0/+5
| | | | asked by ko1 to put this.
* Add NEWS entries about JIT optimizationsTakashi Kokubun2020-06-261-0/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | and a related VM improvement. JIT related commits: * Code size reduction * Deduplicate functions on JIT compaction 818d6d33368a396d9cd3d1a34a84015a9e76c5c8 * Avoid always inlining cold paths of ivar fcd257629063a345c48ff2d8057fa8ab910881f2 * Inline only fast path of rb_class_of b16a2aa938d091c387a7437d94dac7f7bb829ba2 * Eliminate a call instruction on deopt 61b14bb32b7e62760225cb2207df5fe87e5339ab * Cold path partitioning * Mark method call slow paths as COLDFUNC 0e5a58b6bf6aae72b6290a8d68e0a1b6d9eb4f79 * Mark vm_stackoverflow as NOINLINE COLDFUNC 9d71373c237876038cbac63bb0132907a78288a2 * Create mjit_exec_slowpath and mark it as NOINLINE COLDFUNC 083a17a82ad4c1f80cfb9e84cfb1bff5586470b1 * Primitive.attr! 'inline' / Integer#zero? 7561db8c009bb79a75024fa4ed0350bfb3d0626c * Kernel#class 946e5cc668f66a4a0b79461047d3fcba8b71eef0 * (more to come...) * Properly generate opt_send for cfunc cc 7982dc1dfd5df000b7361ccb7bc820da4f3547b8 * Optimize exivar access b736ea63bd4ce4e2fc81dfa73938b39fa70f659c * Make JIT-ed leave leaf 151f8be40d385ada2ebf7feb84210ed7db7ef4df * Inline vm_call_cfunc b9d3ceee8f8e4fade1eddc0c18abee59f9c1eee7 VM: * Enable fastpath on invokesuper 5c2768181382bf84137759efea66f3aaf212665d * History: https://speakerdeck.com/k0kubun/ruby-3-samituto?slide=40 (in Japanese)
* [ruby/fiddle] Fixed typosNobuyoshi Nakada2020-06-262-4/+24
| | | | | | https://github.com/ruby/fiddle/commit/a09e66adf4 https://github.com/ruby/fiddle/commit/6cab9b45d6 https://github.com/ruby/fiddle/commit/ab72b19bed
* Show what's inlined first in "JIT inline" logTakashi Kokubun2020-06-252-3/+6
| | | | and add a debug log
* Decide JIT-ed insn based on cached cfuncTakashi Kokubun2020-06-254-9/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | for opt_* insns. opt_eq handles rb_obj_equal inside opt_eq, and all other cfunc is handled by opt_send_without_block. Therefore we can't decide which insn should be generated by checking whether it's cfunc cc or not. ``` $ 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-26T05:21:43Z master 9dbc2294a6) +JIT [x86_64-linux] after --jit: ruby 2.8.0dev (2020-06-26T06:30:18Z master 75cece1b0b) +JIT [x86_64-linux] last_commit=Decide JIT-ed insn based on cached cfunc Calculating ------------------------------------- before --jit after --jit mjit_nil?(1) 73.878M 74.021M i/s - 40.000M times in 0.541432s 0.540391s mjit_not(1) 72.635M 74.601M i/s - 40.000M times in 0.550702s 0.536187s mjit_eq(1, nil) 7.331M 7.445M i/s - 8.000M times in 1.091211s 1.074596s mjit_eq(nil, 1) 49.450M 64.711M i/s - 8.000M times in 0.161781s 0.123627s Comparison: mjit_nil?(1) after --jit: 74020528.4 i/s before --jit: 73878185.9 i/s - 1.00x slower mjit_not(1) after --jit: 74600882.0 i/s before --jit: 72634507.6 i/s - 1.03x slower mjit_eq(1, nil) after --jit: 7444657.4 i/s before --jit: 7331304.3 i/s - 1.02x slower mjit_eq(nil, 1) after --jit: 64710790.6 i/s before --jit: 49449507.4 i/s - 1.31x slower ```
* Collect insns from a child processTakashi Kokubun2020-06-251-1/+4
| | | | | | | | | | to make sure :opt_invokebuiltin_delegate_leave doesn't become :(trace_)opt_invokebuiltin_delegate. This is to prevent a warning like > /tmp/ruby/v3/src/trunk-test/test/ruby/test_jit.rb:618: warning: 'opt_invokebuiltin_delegate_leave' insn is not included in the script. Actual insns are: opt_invokebuiltin_delegate leave
* test/ruby/test_settracefunc.rb: Suppress a warningYusuke Endoh2020-06-261-1/+1
| | | | | | | http://rubyci.s3.amazonaws.com/ubuntu2004/ruby-master/log/20200626T033003Z.log.html.gz ``` /home/chkbuild/chkbuild/tmp/build/20200626T033003Z/ruby/test/ruby/test_settracefunc.rb:2299: warning: ambiguous first argument; put parentheses or a space even after `/' operator ```
* Try increasing read timeout of rinda testsTakashi Kokubun2020-06-251-2/+8
| | | | | To prevent random failure with --jit-wait like http://ci.rvm.jp/results/trunk-mjit-wait@silicon-docker/3026615
* fix return event and opt_invokebuiltin_delegate_leave (#3256)Koichi Sasada2020-06-262-8/+10
| | | | | | | | | If :return event is specified for a opt_invokebuiltin_delegate_leave and leave combination, the instructions should be opt_invokebuiltin_delegate trace_return instructions. To make it, opt_invokebuiltin_delegate_leave instruction will be changed to opt_invokebuiltin_delegate even if it is not an event target instruction.
* * 2020-06-26 [ci skip]git2020-06-261-1/+1
|
* Add require to Delegator examplesRichard Schneeman2020-06-251-0/+4
| | | In Ruby 2.7.1 SimpeDelegator cannot be used without requiring `delegate` this PR adds the require to the first example for each class so that devs don't have to hunt for what require to use.
* Removed duplicate targetNobuyoshi Nakada2020-06-251-1/+1
| | | | | | | While `spec/bundler` and `spec/bundler/` are treated different targets by GNU make 4, the same target by GNU make 3. The latter target, ending with a slash, was to run `test-bundler-parallel`, instead of `spec/bundler/%`.
* Removed nonsense `rubygems_version` in input gemspec filesNobuyoshi Nakada2020-06-255-5/+0
| | | | | As it is ignored and set at building packages automatically, it is just nonsense to set in gemspec file for input.
* [flori/json] add metadatanoraj2020-06-251-0/+8
| | | | https://github.com/flori/json/commit/9f430a7bba
* [flori/json] Gem::Specification#date is set automatically by RubyGems.org.Hiroshi SHIBATA2020-06-251-1/+0
| | | | https://github.com/flori/json/commit/1920653013
* [flori/json] keyword argument is provided after Ruby 2.0+Hiroshi SHIBATA2020-06-251-1/+1
| | | | https://github.com/flori/json/commit/78ec5e2bd3
* Do not JIT inline builtin methodsTakashi Kokubun2020-06-242-0/+5
| | | | | It's probably not worth it because there's nothing we can optimize in such builtin methods. It's worth JIT only when inlined.
* Run a TracePoint test in an insolated processTakashi Kokubun2020-06-241-8/+10
| | | | | to prevent a random failure like http://ci.rvm.jp/results/trunk-random2@phosphorus-docker/3024287
* [ci skip] Enhanced RDoc for Array (#3252)Burdette Lamar2020-06-241-73/+132
| | | | | | | | | | Methods: map/collect map!/collect! values_at select/filter select!/filter!
* Drop token info for endless method definitionNobuyoshi Nakada2020-06-253-9/+45
| | | | Because it does not have closing `end`.
* [ripper] added endless method definition event testsNobuyoshi Nakada2020-06-251-0/+10
|
* * 2020-06-25 [ci skip]git2020-06-251-1/+1
|
* AST.of needs SCRIPT_LINES__ filled with a newlineNobuyoshi Nakada2020-06-251-1/+1
|
* [ripper] fix mismatched indentations warning [Bug #16981]Nobuyoshi Nakada2020-06-242-4/+11
| | | | | The scanner location has to be set from `lex.ptok` before it is flushed by dispatching the scanner event.
* [ripper] fail unless got warning as expectedNobuyoshi Nakada2020-06-241-0/+2
|
* Fix a random test failure by TracePointTakashi Kokubun2020-06-241-2/+4
| | | | | | | A test worker process may already be enabling TracePoint, which results in changing the insn name in this test. http://ci.rvm.jp/results/trunk-random0@phosphorus-docker/3022750
* Add another missing castTakashi Kokubun2020-06-231-1/+1
|
* Include workflow name in a notification of CompilationsTakashi Kokubun2020-06-231-1/+1
|
* Add missing castTakashi Kokubun2020-06-231-1/+1
|
* Annotate Kernel#class as inline (#3250)Takashi Kokubun2020-06-235-24/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | ``` $ benchmark-driver -v --rbenv 'before;after;before --jit;after --jit' benchmark/mjit_class.yml --repeat-count=4 before: ruby 2.8.0dev (2020-06-23T07:09:54Z master 37a2e48d76) [x86_64-linux] after: ruby 2.8.0dev (2020-06-23T17:29:56Z inline-class 0ff147c007) [x86_64-linux] before --jit: ruby 2.8.0dev (2020-06-23T07:09:54Z master 37a2e48d76) +JIT [x86_64-linux] after --jit: ruby 2.8.0dev (2020-06-23T17:29:56Z inline-class 0ff147c007) +JIT [x86_64-linux] Calculating ------------------------------------- before after before --jit after --jit mjit_class(self) 39.219M 40.060M 53.502M 69.202M i/s - 40.000M times in 1.019915s 0.998495s 0.747631s 0.578021s mjit_class(1) 39.567M 41.242M 52.100M 68.895M i/s - 40.000M times in 1.010935s 0.969885s 0.767749s 0.580591s Comparison: mjit_class(self) after --jit: 69201690.7 i/s before --jit: 53502336.4 i/s - 1.29x slower after: 40060289.1 i/s - 1.73x slower before: 39218939.2 i/s - 1.76x slower mjit_class(1) after --jit: 68895358.6 i/s before --jit: 52100353.0 i/s - 1.32x slower after: 41241993.6 i/s - 1.67x slower before: 39567314.0 i/s - 1.74x slower ```
* Trace :return of builtin methodsTakashi Kokubun2020-06-233-2/+20
| | | | | | using opt_invokebuiltin_delegate_leave insn. Since Ruby 2.7, :return of methods using builtin have not been traced properly.
* * 2020-06-24 [ci skip]git2020-06-241-1/+1
|
* Fix RubyVM::AbstractSyntaxTree documentMasataka Pocke Kuwabara2020-06-241-2/+2
| | | | RubyVM::AbstractSyntaxTree is a module actually, but the document says "class".
* [ci skip] Enhanced RDoc for Array (#3237)Burdette Lamar2020-06-231-107/+272
| | | | | | | | | | | Methods: #rotate! #rotate #sort! #sort #bsearch #bsearch_index
* Avoid generating opt_send with cfunc cc with JITTakashi Kokubun2020-06-233-7/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | only for opt_nil_p and opt_not. While vm_method_cfunc_is is used for opt_eq too, many fast paths of it don't call it. So if it's populated, it should generate opt_send, regardless of cfunc or not. And again, opt_neq isn't relevant due to the difference in operands. So opt_nil_p and opt_not are the only variants using vm_method_cfunc_is like they use. ``` $ benchmark-driver -v --rbenv 'before2 --jit::ruby --jit;before --jit;after --jit' benchmark/mjit_opt_cc_insns.yml --repeat-count=4 before2 --jit: ruby 2.8.0dev (2020-06-22T08:37:37Z master 3238641750) +JIT [x86_64-linux] before --jit: ruby 2.8.0dev (2020-06-23T01:01:24Z master 9ce2066209) +JIT [x86_64-linux] after --jit: ruby 2.8.0dev (2020-06-23T06:58:37Z master 17e9df3157) +JIT [x86_64-linux] last_commit=Avoid generating opt_send with cfunc cc with JIT Calculating ------------------------------------- before2 --jit before --jit after --jit mjit_nil?(1) 54.204M 75.536M 75.031M i/s - 40.000M times in 0.737947s 0.529548s 0.533110s mjit_not(1) 53.822M 70.921M 71.920M i/s - 40.000M times in 0.743195s 0.564007s 0.556171s mjit_eq(1, nil) 7.367M 6.496M 7.331M i/s - 8.000M times in 1.085882s 1.231470s 1.091327s Comparison: mjit_nil?(1) before --jit: 75536059.3 i/s after --jit: 75031409.4 i/s - 1.01x slower before2 --jit: 54204431.6 i/s - 1.39x slower mjit_not(1) after --jit: 71920324.1 i/s before --jit: 70921063.1 i/s - 1.01x slower before2 --jit: 53821697.6 i/s - 1.34x slower mjit_eq(1, nil) before2 --jit: 7367280.0 i/s after --jit: 7330527.4 i/s - 1.01x slower before --jit: 6496302.8 i/s - 1.13x slower ```
* lldb_cruby.py: show the sign of Bignum [ci skip]Nobuyoshi Nakada2020-06-231-2/+3
|
* [ruby/psych] Fixup 05d7e818a6abe3ee1c56b6be92f086647d73141cHiroshi SHIBATA2020-06-231-1/+1
| | | | https://github.com/ruby/psych/commit/4e7794fc2c
* [ruby/psych] Bump version strings for header fileHiroshi SHIBATA2020-06-231-5/+5
| | | | https://github.com/ruby/psych/commit/68da645c7e
* [ruby/psych] Bump libyaml version to 0.2.5Hiroshi SHIBATA2020-06-239-192/+433
| | | | https://github.com/ruby/psych/commit/39996192cc
* [ruby/psych] Fix anchor lookup with symbolized namesJean Boussier2020-06-232-7/+17
| | | | https://github.com/ruby/psych/commit/ef74fc01e2
* Match the output without encoding for localized compilersNobuyoshi Nakada2020-06-231-1/+1
|