54498 Commits

Author SHA1 Message Date
nobu
ee5b54822c parse.y: show error line separately
* parse.y: show compile error and the error line separately,
  instead of building the error message by snprintf then yyerror.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67358 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-28 10:19:08 +00:00
nobu
fa04b87af4 [DOC] fix missing paren [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67357 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-28 08:39:24 +00:00
nobu
b3507bf147 erb.rb: prohibit marshaling [EXPERIMENTAL]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67356 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-28 03:46:48 +00:00
nobu
978290515e [DOC] Fix method references to Method instance methods
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67355 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-28 03:33:36 +00:00
nobu
de0ef1a9df [DOC] fix markups [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67354 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-28 03:33:35 +00:00
svn
832bc50768 * 2019-03-28
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67350 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-27 23:56:17 +00:00
kazu
ede77e64a7 Fix typos
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67349 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-27 23:56:14 +00:00
k0kubun
41d36d2ce2 Skip EBADF spec in MJIT test for now
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67348 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-27 13:31:36 +00:00
k0kubun
1c5fd2bff0 Add debug print for random CI failure on osx Travis
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67347 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-27 13:15:02 +00:00
svn
b51b9d50e6 * 2019-03-27
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67346 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-27 08:26:12 +00:00
hsbt
191b99c89d Merge fileutils-1.2.0 from ruby/fileutils.
It includes the following updates:

  * https://github.com/ruby/fileutils/pull/26
  * https://github.com/ruby/fileutils/pull/27
  * https://github.com/ruby/fileutils/pull/29
  * https://github.com/ruby/fileutils/pull/34

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67345 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-27 08:26:09 +00:00
k0kubun
c92c0a5935 Prefer using vm_base_ptr rather than cfp->bp
in MJIT implementation.

This allows us to drop cfp->bp by just modifying vm_base_ptr in the
future.

No performance impact:

$ benchmark-driver benchmark.yml --rbenv='before::before --disable-gems --jit;bp_::after --disable-gems --jit;vm_env_ptr::ruby-svn --disable-gems --jit' -v --output=all --repeat-count=12
before: ruby 2.7.0dev (2019-03-24 trunk 67341) +JIT [x86_64-linux]
bp_: ruby 2.7.0dev (2019-03-24 trunk 67342) +JIT [x86_64-linux]
vm_env_ptr: ruby 2.7.0dev (2019-03-25 trunk 67343) +JIT [x86_64-linux]
last_commit=Prefer using vm_base_ptr rather than cfp->bp
Calculating -------------------------------------
                                       before                   bp_            vm_env_ptr
Optcarrot Lan_Master.nes    77.15059205092646     70.18873044267853     69.62171387083328 fps
                            78.75767783870441     77.49867689173411     75.43496867709587
                            79.60102690369321     77.78037687683523     79.36688927929428
                            80.25144236638835     78.74729849101701     80.42363742291455
                            82.22375417165489     80.44265482494045     80.90287243299306
                            82.29166786292619     80.51740049420938     81.81153053252902
                            83.35386925305345     80.91054205210609     81.93562989125176
                            83.39770634366975     81.34550754145043     82.24544621470430
                            83.88523450309972     81.60698516017347     82.76801860263230
                            84.17553130135879     82.69615943446324     83.02530407910871
                            84.42132328119858     83.00969158037691     83.19968539409922
                            84.60731429793329     83.32703363300098     83.81352746019631

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67344 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-25 14:26:11 +00:00
svn
7976d0d153 * 2019-03-25
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67343 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-25 06:58:55 +00:00
ko1
8dd0fb9039 use cfp->bp more.
cfp->bp was (re-)introduced by Kokubun san, but VM doesn't use it
because I (ko1) want to remove it in a future. But using it make
leave instruction fast because of sp consisntency check.
So now VM uses cfp->bp.

To use cfp->bp, I checked the value and I found that it is not a
"initial value of sp" but a "initial value of ep". Fix this problem
and fix all bp references (this is why bp is renamed to bp_).


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67342 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-25 06:58:50 +00:00
svn
9f05891c3d * 2019-03-24
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67341 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-24 00:28:54 +00:00
ktsj
831e93d928 Update power_assert to 1.1.4
This update fixes a failure of test-bundled-gems, so we revert r67275.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67340 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-24 00:28:51 +00:00
svn
7e421044a3 * 2019-03-23
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67339 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-23 10:41:20 +00:00
glass
0bd50e95f9 file.c: raise NotImplementedError instread of Errno::ENOSYS
[Misc #15615]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67338 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-23 10:41:16 +00:00
nobu
56557ec28a [DOC] fix markups [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67337 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-22 11:04:59 +00:00
ko1
c671f836b4 add debug counters to count call cache fastpath.
Add counters to count ccf (call cache fastpath) usage.
These counters will help which kind of method dispatch
is important to optimize.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67336 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-22 07:57:26 +00:00
svn
4d2bac1fd9 * 2019-03-22
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67335 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-22 00:21:44 +00:00
svn
a433f2c51b * expand tabs.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67334 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-22 00:21:43 +00:00
ko1
79ddbe9dee optimize method dispatch for lead/kw params.
similar idea to r67315, provide the following optimization
for method dispatch with lead and kw parameters.

(1) add a special branch to check passing kw arguments to
    a method which has lead and kw parameters.
    ex) def foo(x, k:1); end; foo(0, k:1)
(2) add a special branch to check passing no-kw arguments to
    a method which has lead and kw parameters.
    ex) def foo(x, k:1); end; foo(0)

For (1) and (2) cases, provide special dispatchers. For (2) case,
this patch only use the special dispatcher if all default
kw parameters are literal values (nil, 1, and so on. In other case,
kw->default_values does not contains Qundef) (and no required kw
parameters becaseu they don't pass any keyword parameters).

Passing keyword arguments with a hash object is not a scope of
this patch.

Without this patch, (1) and (2) cases use `setup_parameters_complex()`.
Especially, (2) seems frequent case for methods which extend a normal
usecase with keyword parameters (like: `exception: true`).

We can measure the performance with benchmark-driver:
  With methods: def kw k1:1, k2:2; end
                def m; end
  With the following binaries:
    clean-miniruby: unmodified trunk.
    opt_miniruby1: use special branches for lead/kw parameters.
    opt_miniruby2: use special dispatchers for lead/kw parameters.
    opt_cc_miniruby: apply step (2).
  Result with benchmark-driver:

                              m
     opt_miniruby2:  75222278.0 i/s
    clean-miniruby:  73177896.5 i/s - 1.03x  slower
     opt_miniruby1:  62466783.3 i/s - 1.20x  slower

                             kw
     opt_miniruby2:  52044504.4 i/s
     opt_miniruby1:  29142025.7 i/s - 1.79x  slower
    clean-miniruby:  20515235.4 i/s - 2.54x  slower

                      kw k1: 10
     opt_miniruby2:  26492219.5 i/s
     opt_miniruby1:  25409484.9 i/s - 1.04x  slower
    clean-miniruby:  20235113.7 i/s - 1.31x  slower

              kw k1: 10, k2: 20
     opt_miniruby1:  24159534.0 i/s
     opt_miniruby2:  23470527.5 i/s - 1.03x  slower
    clean-miniruby:  17822621.5 i/s - 1.36x  slower


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67333 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-22 00:21:41 +00:00
shirosaki
0f63d96116 dir.c: fix Dir.glob starts with brace
* dir.c (ruby_glob0): expand braces if a glob pattern starts with
  brace.
  [ruby-core:91728] [Bug #15649]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67332 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-21 13:32:03 +00:00
nobu
638c968582 array.c: [DOC] remove unnecessary markups [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67331 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-21 12:01:36 +00:00
k0kubun
969156ce9a Check argument_arity_error condition in inlinable_iseq_p
to avoid inlining a method call when it becomes argument_arity_error,
fixing a potential bug.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67330 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-21 06:48:00 +00:00
k0kubun
52bd8f6f68 Share vm_call_iseq_optimizable_p to reduce copy-paste
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67329 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-21 06:25:09 +00:00
k0kubun
a8695d5022 Make rb_iseq_only_optparam_p static
because it's not used outside vm*.c, and also having non-static function
without MJIT_STATIC is harmful for mswin JIT system.

I hope this fix mswin test failure starting from r67315.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67328 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-21 05:59:57 +00:00
svn
3c4b7898d8 * expand tabs.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67327 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-21 05:59:16 +00:00
mame
e1038377a9 Fix a wrong lineno in backtrace for cfunc
lineno is an int, and INT2FIX(0) was assigned.

[Bug #15719] [ruby-core:91911]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67326 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-21 05:59:14 +00:00
k0kubun
b8540a3c2e Show retry's stdout as well
because stderr did not have sufficient information
https://ci.appveyor.com/project/ruby/ruby/builds/23242505/job/dirugxujk70nnhp6

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67325 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-21 05:44:26 +00:00
k0kubun
ae0f20c6bf Retry vcpkg install failures
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67324 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-21 05:30:27 +00:00
k0kubun
9810c08a5d Explain why cl.exe needs --jit-verbose=2 [ci skip]
I forgot to explain it in the previous commit

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67323 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-21 04:49:45 +00:00
k0kubun
81de7b9e62 Insert --jit-verbose=2 logs for mswin debugging
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67322 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-21 04:47:59 +00:00
kazu
7aacb65015 Remove duplicated and change order
`reg*` affects `doc/regexp.rdoc`, but it is not a file of the Oniguruma/Onigmo regular expression engine.
`reg*.[ch]` matches `reg*` except `doc/regexp.rdoc`.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67321 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-21 03:24:59 +00:00
hsbt
f2ea705d68 Add Enumerator::Lazy docs.
* explanation of the class concept, with examples;
  * docs for all class methods (most of them just say "Like Enumerable#<methodname>, but chains operation to be lazy-evaluated.", but I believe they are useful this way because now have proper call-sequences and link to corresponding Enumerable's explanations)
  * simplified example for ::new to emphasize the main concept
  * Enumerable#lazy docs are slightly lightened and linked to this class for more in-depth explanations.

  [Misc #15529][ruby-core:91046]

  Co-authored-by: zverok <zverok.offline@gmail.com>

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67320 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-20 23:32:11 +00:00
ko1
e8e1f72d8f remove redundant check.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67319 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-20 20:37:03 +00:00
ko1
df2af1147f fix a type error with a cast for clang.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67318 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-20 20:26:21 +00:00
svn
02df0f38df * 2019-03-21
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67317 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-20 19:57:44 +00:00
svn
5c439ebfb0 * expand tabs.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67316 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-20 19:57:43 +00:00
ko1
24e03d7e26 optimize method dispatch for lead/opt params.
There is a special optimization for "only lead parameters"
method dispatch using specialized dispatcher functions
`vm_call_iseq_setup_normal_0start...`.
Other cases (opt, rest, post, ...) we don't use specialized
dispatcher and call with `setup_parameters_complex` to
satisfy Ruby's complex parameter specification.

This commit introduce a specialize dispatcher for
methods which use only lead and optional parameters.

Two step improvements:
(1) prepare "lead/opt" only check pass.
    It is to skip the `setup_parameters_complex` function.
(2) introduce specialized dispatcher for only "lead/opt"
    parameters methods (vm_call_iseq_setup_normal_opt_start).

With these improvements, we achieved good micro-benchmark
results:
  With a method: `def opt2 a, b=nil; end`
  With the following binaries:
    clean-miniruby: unmodified trunk.
    opt_miniruby: apply step (1).
    opt_cc_miniruby: apply step (2).
  Result with benchmark-driver:

                        opt2(1)
   opt_cc_miniruby:  42269409.1 i/s
      opt_miniruby:  36304428.3 i/s - 1.16x  slower
    clean-miniruby:  25897409.5 i/s - 1.63x  slower

                     opt2(1, 2)
   opt_cc_miniruby:  45935145.7 i/s
      opt_miniruby:  40513196.9 i/s - 1.13x  slower
    clean-miniruby:  29976057.6 i/s - 1.53x  slower

This improvement may be trivial (difficult to improve practical
cases). However, this is enough small patch so I decide to
introduce it.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67315 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-20 19:57:39 +00:00
nobu
139634a16f vm_trace.c: [DOC] remove the trick [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67314 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-20 04:24:42 +00:00
hsbt
b55586902d Improve TracePoint docs.
* Mention new :script_compiled event;
  * Deduplicate __enable/enable methods;
  * Document target: and target_line: arguments.

  [Bug #15484][ruby-core:90801]

  Co-authored-by: zverok <zverok.offline@gmail.com>

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67313 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-20 02:08:34 +00:00
nobu
46968fab0a string.c: [DOC] fix reference to sprintf [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67312 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-20 01:35:27 +00:00
nobu
8b49e5b47d string.c: [DOC] remove unnecessary markups [ci skip]
* string.c: remove <code> markups, which are not only unnecessary
  but also prevented cross-references.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67311 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-20 01:31:44 +00:00
nobu
a265141c84 string.c: [DOC] fix indent [ci skip]
* string.c (rb_str_crypt): fix indent not to make the whole list
  verbatim entirely.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67310 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-20 01:17:16 +00:00
svn
eee58ca611 * 2019-03-20
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67309 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-20 00:31:13 +00:00
nobu
740248425c parse.y: make tNUMPARAM id
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67308 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-20 00:31:02 +00:00
nobu
afa1505ca8 parse.y: removed redundant number_arg parser event
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67307 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-19 06:23:36 +00:00
nobu
fa66569afa parse.y: fix var_ref of numbered param in ripper
* parse.y (string_dvar, user_variable): register numbered
  parameter in ripper for var_ref.
  [ruby-core:91867] [Bug #15673]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67306 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-19 06:01:21 +00:00