1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/tool
Takashi Kokubun 310ef9f40b
Make vm_call_cfunc_with_frame a fastpath (#3027)
when there's no need to call CALLER_SETUP_ARG and CALLER_REMOVE_EMPTY_KW_SPLAT
(i.e. !rb_splat_or_kwargs_p(ci) && !calling->kw_splat).

Micro benchmark:
```
$ benchmark-driver -v --rbenv 'before;after' benchmark/vm_send_cfunc.yml --repeat-count=4
before: ruby 2.8.0dev (2020-04-13T23:45:05Z master b9d3ceee8f) [x86_64-linux]
after: ruby 2.8.0dev (2020-04-14T00:48:52Z no-splat-fastpath 418d363722) [x86_64-linux]
Calculating -------------------------------------
                         before       after
       vm_send_cfunc    69.585M     88.724M i/s -    100.000M times in 1.437097s 1.127096s

Comparison:
                    vm_send_cfunc
               after:  88723605.2 i/s
              before:  69584737.1 i/s - 1.28x  slower
```

Optcarrot:
```
$ benchmark-driver -v --rbenv 'before;after' benchmark.yml --repeat-count=12 --output=all
before: ruby 2.8.0dev (2020-04-13T23:45:05Z master b9d3ceee8f) [x86_64-linux]
after: ruby 2.8.0dev (2020-04-14T00:48:52Z no-splat-fastpath 418d363722) [x86_64-linux]
Calculating -------------------------------------
                                       before                 after
Optcarrot Lan_Master.nes    50.76119601545175     42.73858236484051 fps
                            50.76388649761503     51.04211379912850
                            50.80930672252514     51.39455790755538
                            50.90236000778749     51.75656936556145
                            51.01744746340430     51.86875277356489
                            51.06495279015112     51.88692482485558
                            51.07785337168974     51.93429603190578
                            51.20163525187862     51.95768145071314
                            51.34671771913112     52.45577266040274
                            51.35918340835583     52.53163888762858
                            51.46641337418146     52.62172484121034
                            51.50835463462257     52.85064021113239
```
2020-04-13 20:32:59 -07:00
..
lib Migrate {assert,refute}_patch_exits for compatibility with Minitest5 2020-03-30 21:32:26 +09:00
m4 Merge pull request #2991 from shyouhei/ruby.h 2020-04-08 13:28:13 +09:00
ruby_vm Make vm_call_cfunc_with_frame a fastpath (#3027) 2020-04-13 20:32:59 -07:00
test
actions-commit-info.sh
asm_parse.rb
bisect.sh
build-transcode
checksum.rb
colors
darwin-cc
downloader.rb
enc-emoji-citrus-gen.rb
enc-emoji4unicode.rb
enc-unicode.rb
eval.rb
expand-config.rb
extlibs.rb
fake.rb
fetch-bundled_gems.rb
file2lastrev.rb
format-release
gem-unpack.rb
gen-mailmap.rb
gen_dummy_probes.rb
gen_ruby_tapset.rb
generic_erb.rb
git-refresh
gperf.sed
id2token.rb
ifchange
insns2vm.rb
install-sh
leaked-globals
make-snapshot Revert "Moved aclocal.m4 to macro directory" 2020-04-05 11:53:07 +09:00
make_hgraph.rb
mdoc2man.rb
merger.rb
mjit_archflag.sh
mjit_tabs.rb
mk_builtin_binary.rb
mk_builtin_loader.rb Also scan rescue clauses 2020-04-04 12:38:00 +09:00
mk_call_iseq_optimized.rb
mkconfig.rb [DOC] Updated module name [ci skip] 2020-03-30 15:53:55 +09:00
mkrunnable.rb
node_name.rb
parse.rb
prereq.status
probes_to_wiki.rb
pure_parser.rb
rbinstall.rb
rbuninstall.rb
redmine-backporter.rb
release.sh
rmdirs
run-gcov.rb
run-lcov.rb
runruby.rb
strip-rdoc.rb
sync_default_gems.rb Fixed to initialize ruby-core repository when it has no master branch 2020-04-09 18:23:49 +09:00
test-bundled-gems.rb
test-coverage.rb
transcode-tblgen.rb
transform_mjit_header.rb
travis_retry.sh
update-deps
vtlh.rb
ytab.sed