54643 Commits

Author SHA1 Message Date
k0kubun
b0614decfc Implement single-level basic method inlining in JIT
"Basic" means it does not omit a call frame.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67572 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-16 17:01:05 +00:00
svn
dcf5c19c9f * 2019-04-16
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67569 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-15 23:58:09 +00:00
knu
3f7c6aea3e Mention SNI support in Net::IMAP
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67568 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-15 23:58:06 +00:00
k0kubun
e68495e5f4 Carve out mjit_compile_body
This refactoring is needed for implementing inlining later.
I've had this since long ago and it has conflicted sometimes. So let me
just commit this now.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67566 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-15 14:38:57 +00:00
knu
246723a34c Support SNI (Reapplying r67488)
This fixes connecting using TLS 1.3 to imap.gmail.com

[Fix GH-2077] [Feature #15594]

From: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67563 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-15 10:52:34 +00:00
kou
3791bdf080 Import CSV 3.0.9
This fixes test failures on Windows.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67561 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-15 02:05:03 +00:00
kou
e3b6c7c7eb Import CSV 3.0.8
This includes performance improvements and backward incompatibility
fixes.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67560 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-14 21:01:51 +00:00
k0kubun
fb96811d15 Drop obsoleted debugging output [ci skip]
I confirmed that it's working now in
https://dev.azure.com/rubylang/ruby/_build/results?buildId=396&view=logs&jobId=8c5967c9-8e3a-5773-c80c-34c55d5c3051

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67559 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-14 15:25:11 +00:00
svn
ad9c5c5db6 * 2019-04-15
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67558 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-14 15:13:50 +00:00
k0kubun
17b606d8b3 Fix broken variable propagation on Azure
It looks like the old definition was not working as intended...
https://dev.azure.com/rubylang/ruby/_build/results?buildId=394

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67557 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-14 15:13:49 +00:00
marcandre
816c5323fe OpenStruct: improve error message when passing wrong number of arguments.
Patch by Lisa Ugray (issue #15515)

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67556 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-14 13:47:24 +00:00
k0kubun
1119bb4794 Debug bundled-gems allow_failures
it seems not working in
https://dev.azure.com/rubylang/ruby/_build/results?buildId=392

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67555 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-14 13:42:13 +00:00
k0kubun
ead870d7c3 Do not require Ruby 2.4 for baseruby
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67554 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-14 13:29:22 +00:00
k0kubun
b041cf55bb Fix missing debug counter name
r67550 introduced the typo

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67553 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-14 13:10:14 +00:00
k0kubun
009a0a3870 Avoid crash on logging GC-ed ISeq
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67552 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-14 12:49:20 +00:00
k0kubun
e45c9a40a2 Do not execute MJIT copy job when ISeq is GC-ed
I assumed that ISeq is never GC-ed by `in_jit` + `mjit_mark` on copy job
ISeq, but unfortunately I found SEGV on `mjit_copy_job_handler` in which
iseq->body was somehow Qnil. And it seems to be fixed by disabling the
job when `mjit_free_iseq` is called for the ISeq.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67551 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-14 12:40:44 +00:00
k0kubun
1222534719 Share optimization cancel handlers
$ benchmark-driver benchmark.yml --rbenv='before --jit;after --jit' -v --output=all --repeat-count=12
before --jit: ruby 2.7.0dev (2019-04-14 trunk 67549) +JIT [x86_64-linux]
after --jit: ruby 2.7.0dev (2019-04-14 trunk 67549) +JIT [x86_64-linux]
last_commit=Share optimization cancel handlers
Calculating -------------------------------------
                                 before --jit           after --jit
Optcarrot Lan_Master.nes    69.55360655447375     74.15329176797863 fps
                            73.74545038318978     79.60903046141544
                            75.85637357897092     82.00930075612054
                            77.10594124022951     82.56228187301674
                            78.67350527368366     83.37512204205953
                            79.97235230767613     83.41521927993719
                            81.03050342478066     84.20227901852776
                            81.61308297895094     84.73733526226468
                            82.06805141753206     85.27884867863791
                            82.46493179193394     85.36558922650367
                            83.85259832896313     85.39993587223481
                            84.02325292922997     85.63649355214602

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67550 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-14 12:25:23 +00:00
k0kubun
04ac63fe57 Prefer uintptr_t over ptrdiff_t for i686
as debugged in PR

[close https://github.com/ruby/ruby/pull/2130]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67549 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-14 09:31:24 +00:00
k0kubun
c5570cf9bd Detect send-compatible opt insns automatically
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67548 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-14 08:53:19 +00:00
k0kubun
b75bb06e00 Allow falling back to non-inlined opt_send_without_block
for opt_aref with inline cache to minimize the possibility of JIT cancel.

Also opt_aset and opt_mod are added for the targets.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67547 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-14 08:33:43 +00:00
k0kubun
18b5148215 Add debug counter for MJIT stale_units
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67546 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-14 07:12:44 +00:00
k0kubun
f7035dd3ff Do not reset non-increment-only counters
to prevernt underflow.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67545 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-14 07:10:34 +00:00
k0kubun
5ce28c0642 Add RubyVM.reset_debug_counters when RB_DEBUG_COUNTER
is defined. It's 0 by default and so it dissappears on actual build.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67544 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-14 06:57:21 +00:00
kazu
57f9a700d7 Add more debug print for random CI failure on osx Travis
see r67347

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67543 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-14 06:52:37 +00:00
hsbt
3ac518f9bd Enabled to some bundler examples again.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67542 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-14 06:05:27 +00:00
hsbt
2e8b9aba9b Skip to failing examples on ruby core repository.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67541 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-14 06:03:58 +00:00
hsbt
59fa123204 Added rspec dependency for bundler examples.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67540 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-14 06:02:47 +00:00
hsbt
68ddd4d300 Merge Bundler 2.1.0.pre.1 as developed version from upstream.
a53709556b

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67539 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-14 06:01:35 +00:00
k0kubun
d636809c05 Revert "Try to set false explicitly"
This reverts commit a1b5d20068a9b1859b383b249e510cd33d196e4a.

Revert "Revert "Skip recompiling tests on i686 Linux""

This reverts commit 7b88a9207b97b94bc3c3be35084c742296f4aff2.

Revert "Simplify matrix for debugging"

This reverts commit e85d6c5c5e62dde37c6f6ffdb7125b9008b9ebfa.

Sorry, these 3 commits were under debugging in
https://github.com/ruby/ruby/pull/2129 but accidentally merged by using
`git svn dcommit` instead of `git push` to the topic branch 🙇

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67538 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-14 05:52:14 +00:00
k0kubun
a1b5d20068 Try to set false explicitly
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67537 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-14 05:48:40 +00:00
k0kubun
7b88a9207b Revert "Skip recompiling tests on i686 Linux"
This reverts commit 19513c88d5f923abb7f226520192aef9f3fcc1c7.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67536 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-14 05:48:39 +00:00
k0kubun
e85d6c5c5e Simplify matrix for debugging
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67535 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-14 05:48:38 +00:00
k0kubun
661cefc581 Fix typo in platform matcher
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67534 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-14 05:40:18 +00:00
k0kubun
fa13bb1a6f Unify comment styles across MJIT sources
I'm writing `//` comments in newer MJIT code after C99 enablement
(because I write 1-line comments more often than multi-line comments
 and `//` requires fewer chars on 1-line) and then they are mixed
with `/* */` now.

For consistency and to avoid the conversion in future changes, let me
finish the rewrite in MJIT-related code.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67533 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-14 05:26:46 +00:00
k0kubun
19513c88d5 Skip recompiling tests on i686 Linux
somehow they are filing like
https://travis-ci.org/ruby/ruby/jobs/519830085
but they are not so fatal.

Let me just skip them for now and fix tests afterwards.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67532 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-14 05:26:23 +00:00
svn
d6d8fc2421 * 2019-04-14
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67531 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-14 04:52:04 +00:00
k0kubun
9b6b4674d7 Recompile JIT-ed code without optimization
based on inline cache when JIT cancel happens by that.

This feature was in the original MJIT implementation by Vladimir, but on
merging MJIT to Ruby it was removed for simplification. This commit adds
the functionality again for the following benchmark:

52f05781f6/concurrent-map/bench.rb
(shown float is duration seconds. shorter is better)

* Before
```
$ INHERIT=0 ruby -v bench.rb
ruby 2.7.0dev (2019-04-13 trunk 67523) [x86_64-linux]
--
1.6507579649914987

$ INHERIT=0 ruby -v --jit bench.rb
ruby 2.7.0dev (2019-04-13 trunk 67523) +JIT [x86_64-linux]
--
1.5091587850474752

$ INHERIT=1 ruby -v bench.rb
ruby 2.7.0dev (2019-04-13 trunk 67523) [x86_64-linux]
--
1.6124781150138006

$ INHERIT=1 ruby --jit -v bench.rb
ruby 2.7.0dev (2019-04-13 trunk 67523) +JIT [x86_64-linux]
--
1.7495657080435194 # <-- this
```

* After
```
$ INHERIT=0 ruby -v bench.rb
ruby 2.7.0dev (2019-04-13 trunk 67523) [x86_64-linux]
last_commit=Recompile JIT-ed code without optimization
--
1.653559010999743

$ INHERIT=0 ruby --jit -v bench.rb
ruby 2.7.0dev (2019-04-13 trunk 67523) +JIT [x86_64-linux]
last_commit=Recompile JIT-ed code without optimization
--
1.4738391840364784

$ INHERIT=1 ruby -v bench.rb
ruby 2.7.0dev (2019-04-13 trunk 67523) [x86_64-linux]
last_commit=Recompile JIT-ed code without optimization
--
1.645227018976584

$ INHERIT=1 ruby --jit -v bench.rb
ruby 2.7.0dev (2019-04-13 trunk 67523) +JIT [x86_64-linux]
last_commit=Recompile JIT-ed code without optimization
--
1.523708809982054 # <-- this
```

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67530 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-14 04:52:02 +00:00
k0kubun
088df9c8c2 Revert "GET_CFP and ec->cfp are different"
This reverts commit 30f71f4768e0babc60f5be6ca235d2c40268bc27.

I've also overlooked we're doing RESTORE_REGS()...

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67523 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-13 06:55:35 +00:00
k0kubun
30f71f4768 GET_CFP and ec->cfp are different
When reviewing r66565, I overlooked that `GET_ISEQ()` and `GET_EP()` are
NOT `ec->cfp->iseq` and `ec->cfp->ep` but `reg_cfp->iseq` and
`reg_cfp->ep`.

`vm_push_frame` updates `ec->cfp` and in this case we want to check the
callee's cfp and so `ec->cfp` should be checked instead.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67522 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-13 06:27:52 +00:00
svn
e7f7aa8742 * 2019-04-13
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67521 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-13 00:56:14 +00:00
svn
a73dae4c53 * expand tabs.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67520 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-13 00:56:14 +00:00
marcandre
d3da5fbd30 Proc.new: change deprecation warning for clarity (issue #15539)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67519 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-13 00:56:12 +00:00
svn
95a8276630 * 2019-04-12
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67518 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-12 14:32:35 +00:00
nagachika
39b04bc698 [DOC] Add ifnone example to find documentation [ci skip]
[Fix GH-2110]

From: OKURA Masafumi <masafumi.o1988@gmail.com>

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67517 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-12 14:32:31 +00:00
svn
6f866fd9ea * 2019-04-11
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67513 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-11 10:36:38 +00:00
nobu
025343654d Get rid of a magic number
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67512 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-11 10:36:37 +00:00
nobu
47c82df27f Share the exception local ID table
[Fix GH-2115]

From: Lourens Naudé <lourens@bearmetal.eu>

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67511 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-11 10:36:36 +00:00
k0kubun
cf781b0871 Set a meaningful name to all Azure jobs
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67510 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-10 14:56:17 +00:00
k0kubun
34af060374 Try uncommenting deb-src
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67509 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-10 14:47:18 +00:00
k0kubun
724bc97d4b Debug latest sources.list on Azure
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67508 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-10 14:42:18 +00:00